关于linux中camera驱动的加载

在camera驱动中有这么一个结构变量:
   static struct v4l2_i2c_driver_data v4l2_i2c_data = {
    .name = "ov2655",
   .probe = ov2655_probe,
    .remove = ov2655_remove,
   .id_table = ov2655_id,
  }
      除了这个之外,没有像其他模块一样的module_init等入口,也没有添加I2C驱动的接口,那此I2C驱动如何被probe到的呢?
这个驱动要被加载不可能没有入口,可奇怪的是根本找不到。呵呵,还好功夫不负有心人,最终还是有结果了!
原因是有这一句:#include
头文件里面的定义如下:
#ifndef __V4L2_I2C_DRV_H__
#define __V4L2_I2C_DRV_H__

#include

struct v4l2_i2c_driver_data {
 const char * const name;
 int (*command)(struct i2c_client *client, unsigned int cmd, void *arg);
 int (*probe)(struct i2c_client *client, const struct i2c_device_id *id);
 int (*remove)(struct i2c_client *client);
 int (*suspend)(struct i2c_client *client, pm_message_t state);
 int (*resume)(struct i2c_client *client);
 const struct i2c_device_id *id_table;
};

static struct v4l2_i2c_driver_data v4l2_i2c_data;
static struct i2c_driver v4l2_i2c_driver;


/* Bus-based I2C implementation for kernels >= 2.6.26 */

static int __init v4l2_i2c_drv_init(void)
{
 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);

#endif /* __V4L2_I2C_DRV_H__ */

呵呵,乖乖这里面全已经写好了,其他模块中只要包含此头文件就行了。
普及一点小知识:
无初始化的变量将被连接到未初始化数据段,在头文件中可以定义。当头文件被多个文件包含时,该未初始化段在运行时也将只有一份,
静态无初始化的变量也将被连接到未初始化数据段,在头文件中可以定义。当头文件被多个文件包含时,编译的时候将会在多个目标文
件中各自记录一个未初始化数据段,在运行时则会在内存中存在多份。

 

 

 

 

发表于 @ 2010年11月05日 16:25:00 | 评论( 5 ) | 编辑| 举报| 收藏

旧一篇:解决windows7驱动调试KdPrint不能输出的问题 | 新一篇:v4l2_i2c_new_subdev_board接口分析(侧重I2C设备的探测)
-
查看最新精华文章 请访问博客首页相关文章linweiqin5 发表于2011年3月16日 16:54:52  IP:183.15.246.*举报回复删除
楼主,你好,我想仔细看一下你说的这个驱动的写法,你可以把ov2655这个驱动的源码发到我邮箱吗,我的邮箱是[email protected]。谢谢了。e2588116 发表于2011年3月30日 14:10:20  IP:211.21.159.*举报回复删除
樓主 您好 .. ov2655 的驅動源碼也可以發一份給我嗎 ? [email protected]. 謝謝 !!Baiduluckyboy 发表于2011年4月2日 16:42:57  IP:59.41.252.*举报回复删除
楼主可以给我一份吗?我现在在调试linux的OV3640的驱动,希望多多支持,谢谢 [email protected] 谢谢zhang_306090 发表于2011年4月11日 10:27:32  IP:183.15.180.*举报回复删除
最近要做一个camera 的驱动调试..我不是很清楚应用层是怎么调用 camera 的接口的, 我应该提供那些接口给应用层, 对应的dev 设备是什么,我在内核中应该实现什么结构体对应的函数... 谢谢.邮件[email protected] 发表于2011年5月10日 16:54:48  IP:219.239.98.*举报回复删除
 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mailbox2005/archive/2010/11/05/5990154.aspx

你可能感兴趣的:(关于linux中camera驱动的加载)