关于linux中camera驱动的加载

博客探讨了Linux内核中camera驱动加载的过程,特别是如何通过包含<media/v4l2-i2c-drv.h>头文件实现I2C驱动的自动probe。尽管驱动结构变量v4l2_i2c_data没有明显的module_init函数,但头文件定义的v4l2_i2c_drv_init和v4l2_i2c_drv_cleanup函数在模块初始化和退出时负责添加和删除I2C驱动。此外,还介绍了未初始化变量和静态未初始化变量在多文件包含时的行为差异。
摘要由CSDN通过智能技术生成

    在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 <media/v4l2-i2c-drv.h>。
头文件里面的定义如下:
#ifndef __V4L2_I2C_DRV_H__
#define __V4L2_I2C_DRV_H__

#include <media/v4l2-common.h>

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

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值