Android Camera V4L2框架的驱动层分析_video_device

v4l2_device里有一个v4l2_subdev链表,可以选择v4l2_device去控制哪一个v4l2_subdev。

video_device是一个字符设备,从图中可以看出,video_device内含一个cdev

v4l2_device是一个v4l2实例,嵌入到video_device中

v4l2_device维护者一个链表管理v4l2_subdev,v4l2_subdev表示摄像头的I2C控制模块。

核心层负责注册字符设备,然后提供video_device对象和相应的注册接口给硬件相关层使用

硬件相关层需要分配一个video_device并设置它,然后向核心层注册,核心层会为其注册字符设备

并且创建设备节点(/dev/videox)。同时硬件相关层还需要分配和设置相应的v4l2_device和

v4l2_subdev,其中v4l2_device的一个比较重要的意义就是管理v4l2_subdev,当然有一些驱动并

不需要实现v4l2_subdev,此时v4l2_device的意义就不是很大了。

当应用层通过/dev/video来操作设备的时候,首先会来到V4L2的核心层,核心层通过注册进的

video_device的回调函数调用相应的操作函数,video_device可以直接操作硬件或者是通过

v4l2_subdev来操作硬件。

2.V4L2提供的注册接口

video_device

注册:

int video_register_device(struct video_device *vdev, int type, int nr);

注销:

void video_unregister_device(struct video_device *vdev);

v4l2_device

注册:

int v4l2_device_register(struct device *dev, struct v4l2_device *v4l2_dev);

注销:

void v4l2_device_unregister(struct v4l2_device *v4l2_dev);

v4l2_subd

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值