Lines Matching refs:sd

35 static int subdev_fh_init(struct v4l2_subdev_fh *fh, struct v4l2_subdev *sd)  in subdev_fh_init()  argument
38 fh->pad = kzalloc(sizeof(*fh->pad) * sd->entity.num_pads, GFP_KERNEL); in subdev_fh_init()
56 struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev); in subdev_open() local
67 ret = subdev_fh_init(subdev_fh, sd); in subdev_open()
77 if (sd->v4l2_dev->mdev) { in subdev_open()
78 entity = media_entity_get(&sd->entity); in subdev_open()
86 if (sd->internal_ops && sd->internal_ops->open) { in subdev_open()
87 ret = sd->internal_ops->open(sd, subdev_fh); in subdev_open()
109 struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev); in subdev_close() local
113 if (sd->internal_ops && sd->internal_ops->close) in subdev_close()
114 sd->internal_ops->close(sd, subdev_fh); in subdev_close()
116 if (sd->v4l2_dev->mdev) in subdev_close()
117 media_entity_put(&sd->entity); in subdev_close()
129 static int check_format(struct v4l2_subdev *sd, in check_format() argument
136 if (format->pad >= sd->entity.num_pads) in check_format()
142 static int check_crop(struct v4l2_subdev *sd, struct v4l2_subdev_crop *crop) in check_crop() argument
148 if (crop->pad >= sd->entity.num_pads) in check_crop()
154 static int check_selection(struct v4l2_subdev *sd, in check_selection() argument
161 if (sel->pad >= sd->entity.num_pads) in check_selection()
167 static int check_edid(struct v4l2_subdev *sd, struct v4l2_subdev_edid *edid) in check_edid() argument
169 if (edid->pad >= sd->entity.num_pads) in check_edid()
182 struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev); in subdev_do_ioctl() local
215 if (!(sd->flags & V4L2_SUBDEV_FL_HAS_EVENTS)) in subdev_do_ioctl()
221 return v4l2_subdev_call(sd, core, subscribe_event, vfh, arg); in subdev_do_ioctl()
224 return v4l2_subdev_call(sd, core, unsubscribe_event, vfh, arg); in subdev_do_ioctl()
233 return v4l2_subdev_call(sd, core, g_register, p); in subdev_do_ioctl()
241 return v4l2_subdev_call(sd, core, s_register, p); in subdev_do_ioctl()
249 sd->name); in subdev_do_ioctl()
250 ret = v4l2_subdev_call(sd, core, log_status); in subdev_do_ioctl()
252 sd->name); in subdev_do_ioctl()
260 rval = check_format(sd, format); in subdev_do_ioctl()
264 return v4l2_subdev_call(sd, pad, get_fmt, subdev_fh->pad, format); in subdev_do_ioctl()
270 rval = check_format(sd, format); in subdev_do_ioctl()
274 return v4l2_subdev_call(sd, pad, set_fmt, subdev_fh->pad, format); in subdev_do_ioctl()
281 rval = check_crop(sd, crop); in subdev_do_ioctl()
291 sd, pad, get_selection, subdev_fh->pad, &sel); in subdev_do_ioctl()
302 rval = check_crop(sd, crop); in subdev_do_ioctl()
313 sd, pad, set_selection, subdev_fh->pad, &sel); in subdev_do_ioctl()
327 if (code->pad >= sd->entity.num_pads) in subdev_do_ioctl()
330 return v4l2_subdev_call(sd, pad, enum_mbus_code, subdev_fh->pad, in subdev_do_ioctl()
341 if (fse->pad >= sd->entity.num_pads) in subdev_do_ioctl()
344 return v4l2_subdev_call(sd, pad, enum_frame_size, subdev_fh->pad, in subdev_do_ioctl()
351 if (fi->pad >= sd->entity.num_pads) in subdev_do_ioctl()
354 return v4l2_subdev_call(sd, video, g_frame_interval, arg); in subdev_do_ioctl()
360 if (fi->pad >= sd->entity.num_pads) in subdev_do_ioctl()
363 return v4l2_subdev_call(sd, video, s_frame_interval, arg); in subdev_do_ioctl()
373 if (fie->pad >= sd->entity.num_pads) in subdev_do_ioctl()
376 return v4l2_subdev_call(sd, pad, enum_frame_interval, subdev_fh->pad, in subdev_do_ioctl()
383 rval = check_selection(sd, sel); in subdev_do_ioctl()
388 sd, pad, get_selection, subdev_fh->pad, sel); in subdev_do_ioctl()
394 rval = check_selection(sd, sel); in subdev_do_ioctl()
399 sd, pad, set_selection, subdev_fh->pad, sel); in subdev_do_ioctl()
405 rval = check_edid(sd, edid); in subdev_do_ioctl()
409 return v4l2_subdev_call(sd, pad, get_edid, edid); in subdev_do_ioctl()
415 rval = check_edid(sd, edid); in subdev_do_ioctl()
419 return v4l2_subdev_call(sd, pad, set_edid, edid); in subdev_do_ioctl()
425 if (cap->pad >= sd->entity.num_pads) in subdev_do_ioctl()
428 return v4l2_subdev_call(sd, pad, dv_timings_cap, cap); in subdev_do_ioctl()
434 if (dvt->pad >= sd->entity.num_pads) in subdev_do_ioctl()
437 return v4l2_subdev_call(sd, pad, enum_dv_timings, dvt); in subdev_do_ioctl()
441 return v4l2_subdev_call(sd, video, query_dv_timings, arg); in subdev_do_ioctl()
444 return v4l2_subdev_call(sd, video, g_dv_timings, arg); in subdev_do_ioctl()
447 return v4l2_subdev_call(sd, video, s_dv_timings, arg); in subdev_do_ioctl()
450 return v4l2_subdev_call(sd, core, ioctl, cmd, arg); in subdev_do_ioctl()
467 struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev); in subdev_compat_ioctl32() local
469 return v4l2_subdev_call(sd, core, compat_ioctl32, cmd, arg); in subdev_compat_ioctl32()
476 struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev); in subdev_poll() local
479 if (!(sd->flags & V4L2_SUBDEV_FL_HAS_EVENTS)) in subdev_poll()
502 int v4l2_subdev_link_validate_default(struct v4l2_subdev *sd, in v4l2_subdev_link_validate_default() argument
530 struct v4l2_subdev *sd = in v4l2_subdev_link_validate_get_format() local
535 return v4l2_subdev_call(sd, pad, get_fmt, NULL, fmt); in v4l2_subdev_link_validate_get_format()
574 void v4l2_subdev_init(struct v4l2_subdev *sd, const struct v4l2_subdev_ops *ops) in v4l2_subdev_init() argument
576 INIT_LIST_HEAD(&sd->list); in v4l2_subdev_init()
578 sd->ops = ops; in v4l2_subdev_init()
579 sd->v4l2_dev = NULL; in v4l2_subdev_init()
580 sd->flags = 0; in v4l2_subdev_init()
581 sd->name[0] = '\0'; in v4l2_subdev_init()
582 sd->grp_id = 0; in v4l2_subdev_init()
583 sd->dev_priv = NULL; in v4l2_subdev_init()
584 sd->host_priv = NULL; in v4l2_subdev_init()
586 sd->entity.name = sd->name; in v4l2_subdev_init()
587 sd->entity.type = MEDIA_ENT_T_V4L2_SUBDEV; in v4l2_subdev_init()
602 void v4l2_subdev_notify_event(struct v4l2_subdev *sd, in v4l2_subdev_notify_event() argument
605 v4l2_event_queue(sd->devnode, ev); in v4l2_subdev_notify_event()
606 v4l2_subdev_notify(sd, V4L2_DEVICE_NOTIFY_EVENT, (void *)ev); in v4l2_subdev_notify_event()