1.V4L2 驱动中的核心结构体
v4l2_device;一个v4l2的总设备。
v4l2_sbudev:来描述camera等sensor设备,一般是指挂接在总线(i2c)上的摄像头
video_device:实际和处理器采集口相关的配置,一般该设备会完成注册以/dev/video0,video1的字符设备注册的形式暴露给应用层。
video_device的重要性在于它具备承上启下的作用,驱动实现的ioctl内容,刚好则是为用户的控制提供了内核的实现。当然内核ioctl向下又是能控制相关的vfe和sensor,如下
static struct video_device vfe_template = {
.name = "vfe",
.fops = &vfe_fops, //用户open的相关内容
.ioctl_ops = &vfe_ioctl_ops,//用户ioctl对应的相关内容 .release = video_device_release,
};
static const struct v4l2_file_operations vfe_fops = {
.owner = THIS_MODULE,
.open = vfe_open,
.release = vfe_close,
.read = vfe_read,
.poll = vfe_poll,
.ioctl = video_ioctl2, //最终会调用v4l2_ioctl_ops这个实际处理器的相关处理逻辑 // //.unlocked_ioctl =
.mmap =