(struct v4l2_subdev *sd, int on); int (*interrupt_service_routine)(struct v4l2_subdev *sd, u32 status, bool *handled); int (*subscribe_event)(struct v4l2_subd、 ev *sd, struct v4l2_fh *fh, struct v4l2_event_subscription *sub); int (*unsubscribe_event)(struct v4l2_subdev *sd, ...
### 步骤1:初始化v4l2_subdev_ops结构体 ```c // 定义并初始化v4l2_subdev_ops结构体 static const struct v4l2_subdev_ops subdev_ops = { .open = subdev_open, .close = subdev_close, .ioctl = subdev_ioctl, .video_probe = subdev_video_probe, .video_remove = subdev_video_remove, }; ``...
在上面的代码中,你需要根据具体的操作类型和参数设置call结构体的成员。 **步骤三:调用v4l2_subdev_call函数** 最后,你可以调用v4l2_subdev_call函数来与视频设备的子设备进行通信,具体代码如下: ```c int ret = v4l2_subdev_call(subdev, core, op, call); // subdev为子设备指针,core为核心处理程序指针 i...
除了通过v4l2_subdev_ops结构体暴露kernel API,V4L2 sub-devices也可以被用户空间应用直接控制。 v4l-subdevX的设备节点可以在/dev下被创建来直接访问sub-devices。如果一个sub-device支持用户空间直接配置,必须在注册前设置V4L2_SUBDEV_FL_HAS_DEVNODE标志。 注册sub-devices之后,v4l2_device驱动会通过调v4l2_device_reg...
v4l2_device结构体定义如下 struct v4l2_subdev_ops定义如下 对于video设备,一般只使用v4l2_sub_dev_core_ops和v4l2_subdev_video_op
sd =media_entity_to_v4l2_subdev(pad->entity); src_fmt.pad = pad->index; src_fmt.which = V4L2_SUBDEV_FORMAT_ACTIVE; ret = v4l2_subdev_call(sd, pad, get_fmt,NULL, &src_fmt);if(ret <0&& ret != -ENOIOCTLCMD)return-EPIPE;if(src_fmt.format.width != sink_fmt.format.width || ...
在传统的同步情况下,桥-子设备之间的交互是相同的,桥接设备驱动程序需要向v4l2_device注册v4l2_subdev。在异步情况下,子设备的probe过程不受桥接设备驱动程序可用性的限制,但需要验证所有探查条件是否满足。在注册或注销异步子设备时,可以使用v4l2_async_register_subdev()和v4l2_async_unregister_subdev(...
v4l2_subdev_call内部会调用i2c_client的驱动处理即上文中的sensor_ops中的core和video过程。 到此为止,video device,subdev, sensor之间的关系基本理通,调用的顺序合理而且紧密,如下图所示。 图1: A31 linux内核视频采集驱动架构
mirror of: http://git.ideasonboard.org/media-ctl.git - media-ctl/v4l2-subdev.h at master · RobertCNelson/media-ctl
v4l2_subdev_free_pad_config(fh->pad); fh->pad = NULL; #endif }static int subdev_open(struct file *file) { struct video_device *vdev = video_devdata(file); struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev); struct v4l2_subdev_fh *subdev_fh; ...