加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux-device-driver – 编写I2C设备驱动程序时的探测问题

发布时间:2020-12-26 04:07:33 所属栏目:Linux 来源:网络整理
导读:我是一个编写 linux设备驱动程序的新手,原谅我,如果有什么愚蠢的问题和我可怜的英语^^ 我正在尝试为触摸面板编写驱动程序,它通过I2C与CPU通信. 我试图将设备驱动程序添加到linux平台,并且寄存器成功,我的意思是驱动程序已加载,但探测功能没有启动!! 以上是

我是一个编写 linux设备驱动程序的新手,原谅我,如果有什么愚蠢的问题和我可怜的英语^^
我正在尝试为触摸面板编写驱动程序,它通过I2C与CPU通信.
我试图将设备驱动程序添加到linux平台,并且寄存器成功,我的意思是驱动程序已加载,但探测功能没有启动!!

以上是我写的驱动程序的部分代码.

static int i2c_ts_probe(struct i2c_client *client,const struct i2c_device_id * id) {  
    /* ... */  
}

static int i2c_ts_remove(struct i2c_client *client) {  
    /* ... */  
}

static const struct i2c_device_id i2c_ts_id[] = {  
    {"Capacitive TS",0},{ }  
};  
MODULE_DEVICE_TABLE(i2c,i2c_ts_id);  

static struct i2c_driver i2c_ts = {  
    .id_table = i2c_ts_id,.probe = i2c_ts_probe,.remove = i1c_ts_remobe,.driver = {  
        .name = "i2c_ts",},};

static int __init i2c_ts_init(void) {  
    return i2c_add_driver(&i2c_ts);  
}

static int __init i2c_ts_exit(void) {  
    return i2c_del_driver(&i2c_ts);  
}  

module_init(i2c_ts_init);
module_exit(i2c_ts_exit);

以上是用于注册i2c设备的平台(/kernel/arch/arm/mach-pxa/saarb.c)中的部分代码.

static struct i2c_board_info i2c_board_info_ts[] = {
    {  
        .type = i2c_ts,.irq = IRQ_GPIO(mfp_to_gpio(MFP_PIN_GPIO0)),};

static void __init saarb_init(void) {  
    ...  
    i2c_register_board_info(0,ARRAY_AND_SIZE(i2c_board_info_ts));  
    ...  
}

任何建议和评论都将受到欢迎,谢谢^^

解决方法

因此,linux设备/驱动程序模型可以探测您的驱动程序,必须有一个设备请求它:这是通过比较驱动程序的名称(“i2c_ts”)和i2c_board_info结构中的设备类型来实现的.在你的情况下,我猜这种类型不等于“i2c_ts”.

因此,我建议您使用I2C_BOARD_INFO宏来实例化您的设备,如Documentation / i2c / instantiating_devices中所述.

static struct i2c_board_info i2c_board_info_ts[] = {
    {  
         I2C_BOARD_INFO("i2c_ts",0x12),ARRAY_AND_SIZE(i2c_board_info_ts));  
    ... 
}

您还没有为您的设备提供地址,而I2C_BOARD_INFO需要它.阅读触摸屏的数据表,了解该地址是什么.

最后,如上所述,确保i2c_ts_id是正确的.我不确定它在内核中的设备/模块关联机制中扮演什么角色,但是我会说它们混淆不清它们都有相同的名称.

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读