想要修改的是与图像传输相关的配置,这些参数通常会设置在v4l2_subdev_mbus_code_enum或者v4l2_mbus_config等结构体中。这些参数分别控制: V4L2_MBUS_PCLK_SAMPLE_RISING:在PIXCLK的上升沿采样数据。 V4L2_MBUS_MASTER:设备工作在Master模式。 V4L2_MBUS_VSYNC_ACTIVE_HIGH:V
比如配置v4l2_mbus_config,配置v4l2_mbus_typeint(*complete)(structv4l2_async_notifier *notifier);//异步设备列表完成时的处理函数void(*unbind)(structv4l2_async_notifier *notifier,structv4l2_subdev *subdev,structv4l2_async
.enum_mbus_code=ov13850_enum_mbus_code,--被subdev_do_ioctl的VIDIOC_SUBDEV_ENUM_MBUS_CODE调用。.enum_frame_size=ov13850_enum_frame_sizes,--被subdev_do_ioctl的VIDIOC_SUBDEV_ENUM_FRAME_SIZE调用。.enum_frame_interval=ov13850_enum_frame_interval,--被subdev_do_ioctl的VIDIOC_SUBDEV_ENUM_FRAME_...
(struct v4l2_subdev *sd); }; struct v4l2_subdev_pad_ops { int (*init_cfg)(struct v4l2_subdev *sd, struct v4l2_subdev_state *state); int (*enum_mbus_code)(struct v4l2_subdev *sd,struct v4l2_subdev_state *state, struct v4l2_subdev_mbus_code_enum *code); int (*enum_frame_size)...
enum v4l2_buf_type type; /* buffer type */ __u32 flags; __u8 description[32]; /* Description string */ __u32 pixelformat; /* Format fourcc */ __u32 reserved[4]; }; //每一个subdev驱动程序实例应该创建这个结构,无论是独立或在一个更大的结构之中。
device node name /dev/v4l-subdev0 pad0: Sink [fmt:SBGGR10/2112x1568 crop.bounds:(0,0)/2112x1568 crop:(0,0)/2112x1568] <- "rkisp-csi-subdev":1 [ENABLED] <- "rkisp_rawrd0_m":0 [] <- "rkisp_rawrd2_s":0 [] pad1: Sink ...
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) ...
options--help-overlay overlay format options--help-sdr SDR format options--help-selection crop/selection options--help-stds standards and other video timings options--help-streaming streaming options--help-subdev sub-device options--help-tuner tuner/modulator options--help-vbi VBI format options--...
struct v4l2_subdev_mbus_code_enum *code = arg;if (code->which != V4L2_SUBDEV_FORMAT_TRY && code->which != V4L2_SUBDEV_FORMAT_ACTIVE) return -EINVAL;if (code->pad >= sd->entity.num_pads) return -EINVAL;return v4l2_subdev_call(sd, pad, enum_mbus_code, subdev_fh->pad, ...
But the i2c_transfer fails. The older driver configured before the use of i2c some pins and set clock and so on, but I thought when I use the "v4l2-subdev-api" these things should be done automatically. Am I right? Can some help me out?