linux摄像头V4L2 subdev,linux摄像头I2C驱动初始化

这篇博客介绍了Linux下摄像头驱动的初始化过程,特别是V4L2子设备(subdev)与I2C驱动的交互。文章指出,虽然在OV2655的驱动中没有直接的i2c_add_driver初始化函数,但相关初始化实际上在v4l2-i2c-drv.h中进行。通过v4l2_i2c_drv_init函数注册驱动,并调用probe函数进行设备探测。接着,注册V4L2子设备并定义操作接口,最终通过ov2655_init完成摄像头的初始化工作。
摘要由CSDN通过智能技术生成

阅读linux的ov2655的驱动程序时,并没有发现I2C设备驱动的初始化函数i2c_add_driver,

只是定义了

static struct v4l2_i2c_driver_data v4l2_i2c_data =

{

.name = S5K4BA_DRIVER_NAME,

.probe = ov2655_probe,

.remove = __devexit_p(ov2655_remove),

.id_table = ov2655_id,

};

其实相关I2C初始化函数在v4l2-i2c-drv.h里

I2C摄像头驱动程序都会包含该文件

#include 该文件代码很简单,I2C驱动初始化如下:

static int __init v4l2_i2c_drv_init(void)

{

//其中的v4l2_i2c_data就是前面提到的在ov2655驱动里定义结构体。

v4l2_i2c_driver.driver.name = v4l2_i2c_data.name;

v4l2_i2c_driver.command = v4l2_i2c_data.command;

v4l2_i2c_driver.probe = v4l2_i2c_data.probe;

v4l2_i2c_driver.remove = v4l2_i2c_data.remove;

v4l2_i2c_driver.suspend = v4l2_i2c_data.suspend;

v4l2_i2c_driver.resume = v4l2_i2c_data.resume;

v4l2_i2c_

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值