linux i2c 添加新设备驱动程序,linux-device-driver – 编写I2C设备驱动程序时的探测问题...

博主是一名新手Linux设备驱动程序员,正在尝试为通过I2C与CPU通信的触摸面板编写驱动。尽管驱动程序已成功注册到Linux平台,但在设备探测阶段遇到问题,探测功能未启动。代码示例展示了驱动的probe和remove函数,以及i2c_board_info的配置。博主寻求关于如何解决驱动探测功能不启动的建议和评论。
摘要由CSDN通过智能技术生成

我是一个编写

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));

...

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值