我是一个编写
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));
...
}
任何建议和评论都将受到欢迎,谢谢^^