灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2626回复:0

linux系统初始化摄像头I2C驱动

楼主#
更多 发布于:2012-10-11 14:51

阅读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 <media/v4l2-i2c-drv.h>

 

该文件代码很简单,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_driver.id_table = v4l2_i2c_data.id_table;

    return i2c_add_driver(;v4l2_i2c_driver);

}

static void __exit v4l2_i2c_drv_cleanup(void)

{

    i2c_del_driver(;v4l2_i2c_driver);

}

module_init(v4l2_i2c_drv_init);

module_exit(v4l2_i2c_drv_cleanup);


喜欢0 评分0
游客

返回顶部