Lines Matching full:sd

27 static int subdev_fh_init(struct v4l2_subdev_fh *fh, struct v4l2_subdev *sd)  in subdev_fh_init()  argument
29 if (sd->entity.num_pads) { in subdev_fh_init()
30 fh->pad = v4l2_subdev_alloc_pad_config(sd); in subdev_fh_init()
47 struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev); in subdev_open() local
55 ret = subdev_fh_init(subdev_fh, sd); in subdev_open()
65 if (sd->v4l2_dev->mdev && sd->entity.graph_obj.mdev->dev) { in subdev_open()
68 owner = sd->entity.graph_obj.mdev->dev->driver->owner; in subdev_open()
77 if (sd->internal_ops && sd->internal_ops->open) { in subdev_open()
78 ret = sd->internal_ops->open(sd, subdev_fh); in subdev_open()
98 struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev); in subdev_close() local
102 if (sd->internal_ops && sd->internal_ops->close) in subdev_close()
103 sd->internal_ops->close(sd, subdev_fh); in subdev_close()
134 static inline int check_pad(struct v4l2_subdev *sd, u32 pad) in check_pad() argument
137 if (sd->entity.num_pads) { in check_pad()
138 if (pad >= sd->entity.num_pads) in check_pad()
157 static inline int check_format(struct v4l2_subdev *sd, in check_format() argument
164 return check_which(format->which) ? : check_pad(sd, format->pad) ? : in check_format()
168 static int call_get_fmt(struct v4l2_subdev *sd, in call_get_fmt() argument
172 return check_format(sd, cfg, format) ? : in call_get_fmt()
173 sd->ops->pad->get_fmt(sd, cfg, format); in call_get_fmt()
176 static int call_set_fmt(struct v4l2_subdev *sd, in call_set_fmt() argument
180 return check_format(sd, cfg, format) ? : in call_set_fmt()
181 sd->ops->pad->set_fmt(sd, cfg, format); in call_set_fmt()
184 static int call_enum_mbus_code(struct v4l2_subdev *sd, in call_enum_mbus_code() argument
191 return check_which(code->which) ? : check_pad(sd, code->pad) ? : in call_enum_mbus_code()
193 sd->ops->pad->enum_mbus_code(sd, cfg, code); in call_enum_mbus_code()
196 static int call_enum_frame_size(struct v4l2_subdev *sd, in call_enum_frame_size() argument
203 return check_which(fse->which) ? : check_pad(sd, fse->pad) ? : in call_enum_frame_size()
205 sd->ops->pad->enum_frame_size(sd, cfg, fse); in call_enum_frame_size()
208 static inline int check_frame_interval(struct v4l2_subdev *sd, in check_frame_interval() argument
214 return check_pad(sd, fi->pad); in check_frame_interval()
217 static int call_g_frame_interval(struct v4l2_subdev *sd, in call_g_frame_interval() argument
220 return check_frame_interval(sd, fi) ? : in call_g_frame_interval()
221 sd->ops->video->g_frame_interval(sd, fi); in call_g_frame_interval()
224 static int call_s_frame_interval(struct v4l2_subdev *sd, in call_s_frame_interval() argument
227 return check_frame_interval(sd, fi) ? : in call_s_frame_interval()
228 sd->ops->video->s_frame_interval(sd, fi); in call_s_frame_interval()
231 static int call_enum_frame_interval(struct v4l2_subdev *sd, in call_enum_frame_interval() argument
238 return check_which(fie->which) ? : check_pad(sd, fie->pad) ? : in call_enum_frame_interval()
240 sd->ops->pad->enum_frame_interval(sd, cfg, fie); in call_enum_frame_interval()
243 static inline int check_selection(struct v4l2_subdev *sd, in check_selection() argument
250 return check_which(sel->which) ? : check_pad(sd, sel->pad) ? : in check_selection()
254 static int call_get_selection(struct v4l2_subdev *sd, in call_get_selection() argument
258 return check_selection(sd, cfg, sel) ? : in call_get_selection()
259 sd->ops->pad->get_selection(sd, cfg, sel); in call_get_selection()
262 static int call_set_selection(struct v4l2_subdev *sd, in call_set_selection() argument
266 return check_selection(sd, cfg, sel) ? : in call_set_selection()
267 sd->ops->pad->set_selection(sd, cfg, sel); in call_set_selection()
270 static inline int check_edid(struct v4l2_subdev *sd, in check_edid() argument
279 return check_pad(sd, edid->pad); in check_edid()
282 static int call_get_edid(struct v4l2_subdev *sd, struct v4l2_subdev_edid *edid) in call_get_edid() argument
284 return check_edid(sd, edid) ? : sd->ops->pad->get_edid(sd, edid); in call_get_edid()
287 static int call_set_edid(struct v4l2_subdev *sd, struct v4l2_subdev_edid *edid) in call_set_edid() argument
289 return check_edid(sd, edid) ? : sd->ops->pad->set_edid(sd, edid); in call_set_edid()
292 static int call_dv_timings_cap(struct v4l2_subdev *sd, in call_dv_timings_cap() argument
298 return check_pad(sd, cap->pad) ? : in call_dv_timings_cap()
299 sd->ops->pad->dv_timings_cap(sd, cap); in call_dv_timings_cap()
302 static int call_enum_dv_timings(struct v4l2_subdev *sd, in call_enum_dv_timings() argument
308 return check_pad(sd, dvt->pad) ? : in call_enum_dv_timings()
309 sd->ops->pad->enum_dv_timings(sd, dvt); in call_enum_dv_timings()
312 static int call_get_mbus_config(struct v4l2_subdev *sd, unsigned int pad, in call_get_mbus_config() argument
315 return check_pad(sd, pad) ? : in call_get_mbus_config()
316 sd->ops->pad->get_mbus_config(sd, pad, config); in call_get_mbus_config()
319 static int call_set_mbus_config(struct v4l2_subdev *sd, unsigned int pad, in call_set_mbus_config() argument
322 return check_pad(sd, pad) ? : in call_set_mbus_config()
323 sd->ops->pad->get_mbus_config(sd, pad, config); in call_set_mbus_config()
357 struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev); in subdev_do_ioctl() local
411 vdev, sd->v4l2_dev->mdev, arg); in subdev_do_ioctl()
417 vdev, sd->v4l2_dev->mdev, arg); in subdev_do_ioctl()
423 vdev, sd->v4l2_dev->mdev, arg); in subdev_do_ioctl()
426 if (!(sd->flags & V4L2_SUBDEV_FL_HAS_EVENTS)) in subdev_do_ioctl()
435 if (!(sd->flags & V4L2_SUBDEV_FL_HAS_EVENTS)) in subdev_do_ioctl()
456 return v4l2_subdev_call(sd, core, subscribe_event, vfh, arg); in subdev_do_ioctl()
459 return v4l2_subdev_call(sd, core, unsubscribe_event, vfh, arg); in subdev_do_ioctl()
468 return v4l2_subdev_call(sd, core, g_register, p); in subdev_do_ioctl()
476 return v4l2_subdev_call(sd, core, s_register, p); in subdev_do_ioctl()
484 if (sd->ops->core && sd->ops->core->s_register) in subdev_do_ioctl()
486 if (sd->ops->core && sd->ops->core->g_register) in subdev_do_ioctl()
488 strscpy(p->name, sd->name, sizeof(p->name)); in subdev_do_ioctl()
497 sd->name); in subdev_do_ioctl()
498 ret = v4l2_subdev_call(sd, core, log_status); in subdev_do_ioctl()
500 sd->name); in subdev_do_ioctl()
509 return v4l2_subdev_call(sd, pad, get_fmt, subdev_fh->pad, format); in subdev_do_ioctl()
520 return v4l2_subdev_call(sd, pad, set_fmt, subdev_fh->pad, format); in subdev_do_ioctl()
534 sd, pad, get_selection, subdev_fh->pad, &sel); in subdev_do_ioctl()
556 sd, pad, set_selection, subdev_fh->pad, &sel); in subdev_do_ioctl()
567 return v4l2_subdev_call(sd, pad, enum_mbus_code, subdev_fh->pad, in subdev_do_ioctl()
575 return v4l2_subdev_call(sd, pad, enum_frame_size, subdev_fh->pad, in subdev_do_ioctl()
583 return v4l2_subdev_call(sd, video, g_frame_interval, arg); in subdev_do_ioctl()
593 return v4l2_subdev_call(sd, video, s_frame_interval, arg); in subdev_do_ioctl()
600 return v4l2_subdev_call(sd, pad, enum_frame_interval, subdev_fh->pad, in subdev_do_ioctl()
609 sd, pad, get_selection, subdev_fh->pad, sel); in subdev_do_ioctl()
620 sd, pad, set_selection, subdev_fh->pad, sel); in subdev_do_ioctl()
626 return v4l2_subdev_call(sd, pad, get_edid, edid); in subdev_do_ioctl()
632 return v4l2_subdev_call(sd, pad, set_edid, edid); in subdev_do_ioctl()
638 return v4l2_subdev_call(sd, pad, dv_timings_cap, cap); in subdev_do_ioctl()
644 return v4l2_subdev_call(sd, pad, enum_dv_timings, dvt); in subdev_do_ioctl()
648 return v4l2_subdev_call(sd, video, query_dv_timings, arg); in subdev_do_ioctl()
651 return v4l2_subdev_call(sd, video, g_dv_timings, arg); in subdev_do_ioctl()
657 return v4l2_subdev_call(sd, video, s_dv_timings, arg); in subdev_do_ioctl()
660 return v4l2_subdev_call(sd, video, g_std, arg); in subdev_do_ioctl()
668 return v4l2_subdev_call(sd, video, s_std, *std); in subdev_do_ioctl()
675 if (v4l2_subdev_call(sd, video, g_tvnorms, &id)) in subdev_do_ioctl()
682 return v4l2_subdev_call(sd, video, querystd, arg); in subdev_do_ioctl()
685 return v4l2_subdev_call(sd, core, ioctl, cmd, arg); in subdev_do_ioctl()
717 struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev); in subdev_compat_ioctl32() local
719 return v4l2_subdev_call(sd, core, compat_ioctl32, cmd, arg); in subdev_compat_ioctl32()
742 struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev); in subdev_poll() local
745 if (!(sd->flags & V4L2_SUBDEV_FL_HAS_EVENTS)) in subdev_poll()
773 struct v4l2_subdev *sd; in v4l2_subdev_get_fwnode_pad_1_to_1() local
778 sd = media_entity_to_v4l2_subdev(entity); in v4l2_subdev_get_fwnode_pad_1_to_1()
783 if (dev_fwnode(sd->dev) == fwnode) in v4l2_subdev_get_fwnode_pad_1_to_1()
790 int v4l2_subdev_link_validate_default(struct v4l2_subdev *sd, in v4l2_subdev_link_validate_default() argument
818 struct v4l2_subdev *sd = in v4l2_subdev_link_validate_get_format() local
823 return v4l2_subdev_call(sd, pad, get_fmt, NULL, fmt); in v4l2_subdev_link_validate_get_format()
862 v4l2_subdev_alloc_pad_config(struct v4l2_subdev *sd) in v4l2_subdev_alloc_pad_config() argument
867 if (!sd->entity.num_pads) in v4l2_subdev_alloc_pad_config()
870 cfg = kvmalloc_array(sd->entity.num_pads, sizeof(*cfg), in v4l2_subdev_alloc_pad_config()
875 ret = v4l2_subdev_call(sd, pad, init_cfg, cfg); in v4l2_subdev_alloc_pad_config()
892 void v4l2_subdev_init(struct v4l2_subdev *sd, const struct v4l2_subdev_ops *ops) in v4l2_subdev_init() argument
894 INIT_LIST_HEAD(&sd->list); in v4l2_subdev_init()
896 sd->ops = ops; in v4l2_subdev_init()
897 sd->v4l2_dev = NULL; in v4l2_subdev_init()
898 sd->flags = 0; in v4l2_subdev_init()
899 sd->name[0] = '\0'; in v4l2_subdev_init()
900 sd->grp_id = 0; in v4l2_subdev_init()
901 sd->dev_priv = NULL; in v4l2_subdev_init()
902 sd->host_priv = NULL; in v4l2_subdev_init()
904 sd->entity.name = sd->name; in v4l2_subdev_init()
905 sd->entity.obj_type = MEDIA_ENTITY_TYPE_V4L2_SUBDEV; in v4l2_subdev_init()
906 sd->entity.function = MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN; in v4l2_subdev_init()
911 void v4l2_subdev_notify_event(struct v4l2_subdev *sd, in v4l2_subdev_notify_event() argument
914 v4l2_event_queue(sd->devnode, ev); in v4l2_subdev_notify_event()
915 v4l2_subdev_notify(sd, V4L2_DEVICE_NOTIFY_EVENT, (void *)ev); in v4l2_subdev_notify_event()