Lines Matching refs:rcdev
107 static int lirc_bpf_attach(struct rc_dev *rcdev, struct bpf_prog *prog) in lirc_bpf_attach() argument
114 if (rcdev->driver_type != RC_DRIVER_IR_RAW) in lirc_bpf_attach()
121 raw = rcdev->raw; in lirc_bpf_attach()
145 static int lirc_bpf_detach(struct rc_dev *rcdev, struct bpf_prog *prog) in lirc_bpf_detach() argument
152 if (rcdev->driver_type != RC_DRIVER_IR_RAW) in lirc_bpf_detach()
159 raw = rcdev->raw; in lirc_bpf_detach()
183 void lirc_bpf_run(struct rc_dev *rcdev, u32 sample) in lirc_bpf_run() argument
185 struct ir_raw_event_ctrl *raw = rcdev->raw; in lirc_bpf_run()
197 void lirc_bpf_free(struct rc_dev *rcdev) in lirc_bpf_free() argument
201 if (!rcdev->raw->progs) in lirc_bpf_free()
204 item = rcu_dereference(rcdev->raw->progs)->items; in lirc_bpf_free()
210 bpf_prog_array_free(rcdev->raw->progs); in lirc_bpf_free()
215 struct rc_dev *rcdev; in lirc_prog_attach() local
221 rcdev = rc_dev_get_from_fd(attr->target_fd); in lirc_prog_attach()
222 if (IS_ERR(rcdev)) in lirc_prog_attach()
223 return PTR_ERR(rcdev); in lirc_prog_attach()
225 ret = lirc_bpf_attach(rcdev, prog); in lirc_prog_attach()
227 put_device(&rcdev->dev); in lirc_prog_attach()
235 struct rc_dev *rcdev; in lirc_prog_detach() local
246 rcdev = rc_dev_get_from_fd(attr->target_fd); in lirc_prog_detach()
247 if (IS_ERR(rcdev)) { in lirc_prog_detach()
249 return PTR_ERR(rcdev); in lirc_prog_detach()
252 ret = lirc_bpf_detach(rcdev, prog); in lirc_prog_detach()
255 put_device(&rcdev->dev); in lirc_prog_detach()
264 struct rc_dev *rcdev; in lirc_prog_query() local
271 rcdev = rc_dev_get_from_fd(attr->query.target_fd); in lirc_prog_query()
272 if (IS_ERR(rcdev)) in lirc_prog_query()
273 return PTR_ERR(rcdev); in lirc_prog_query()
275 if (rcdev->driver_type != RC_DRIVER_IR_RAW) { in lirc_prog_query()
284 progs = rcdev->raw->progs; in lirc_prog_query()
303 put_device(&rcdev->dev); in lirc_prog_query()