(struct v4l2_subdev *sd, u32 freq); int (*s_routing)(struct v4l2_subdev *sd, u32 input, u32 output, u32 config); int (*s_stream)(struct v4l2_subdev *sd, int enable); }; struct v4l2_subdev_video_ops { int (*s_routing)(struct v4l2_subdev *sd, u32 input, u32 output, u...
int__must_check v4l2_device_register_subdev(structv4l2_device *v4l2_dev,structv4l2_subdev *sd);--将v4l2_subdev和v4l2_dev关联,创建Media Entity。voidv4l2_device_unregister_subdev(structv4l2_subdev *sd);--将v4l2_subdev和其所属的v4l2_dev解除关联,并且注销相关Media Entity、释放相关资源等。int__must...
u32 freq);/* 设置音频设备频率 */int(*s_i2s_clock_freq)(structv4l2_subdev *sd, u32 freq);/* 设置i2s总线频率 */int(*s_routing)(structv4l2_subdev *sd, u32input, u32output, u32config);/* 设置音频路由 */};
v4l2_subdev_audio_ops 包含的操作合集则是音频部分独有的: struct v4l2_subdev_audio_ops { int (*s_clock_freq)(struct v4l2_subdev *sd, u32 freq); /* 设置音频设备频率 */ int (*s_i2s_clock_freq)(struct v4l2_subdev *sd, u32 freq); /* 设置i2s总线频率 */ int (*s_routing)(struct v...
265 + return __formatter_subdev_set_routing(sd, sd_state, &routing);; 266 + } 267 + 268 + static int formatter_subdev_enum_mbus_code(struct v4l2_subdev *sd, 269 + struct v4l2_subdev_state *sd_state, 270 + struct v4l2_subdev_mbus_code_enum *code) ...
include / media / v4l2-subdev.h v6 v5 v4 v4.20 v4.19 v4.18 v4.18.20 v4.18.19 v4.18.18 v4.18.17 v4.18.16 v4.18.15 v4.18.14 v4.18.13 v4.18.12 v4.18.11 v4.18.10 v4.18.9 v4.18.8 v4.18.7 v4.18.6 v4.18.5 v4.18.4 v4.18.3 v4.18.2 v4.18...
671 691 printf("Routing set\n"); 672 692 } @@ -724,6 +744,11 @@ void subdev_get(cv4l_fd &_fd) 724 744 if (options[OptGetSubDevFormat]) { 725 745 struct v4l2_subdev_format fmt; 726 746 747 + if (!_fd.has_streams() && get_fmt_stream) { 748 + printf("Streams...
185 ret = v4l2_subdev_call(sd, video, s_routing, i, 0, 0); 186 187 return ret; 188 } 185 soc_camera驱动并没有实现这句话,而是直接 return 0,这就导致当前的soc camera子系统不支持S_INPUT接口。384 static int soc_camera_open(struct file *file) 385...