Tôi là người mới viết trình điều khiển thiết bị linux, tha thứ cho tôi nếu có bất cứ điều gì ngu ngốc và tiếng Anh kém của tôi ^^
Tôi đang cố viết trình điều khiển cho một bảng điều khiển cảm ứng với CPU qua I2C.
Tôi đã cố gắng thêm trình điều khiển thiết bị vào nền tảng Linux và đăng ký thành công, ý tôi là trình điều khiển đã được tải, nhưng chức năng dò tìm đã không kích hoạt !!Thắc mắc thăm dò khi viết trình điều khiển thiết bị I2C
Phía trên là mã một phần của trình điều khiển tôi đã viết.
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);
Trên đây là mã một phần trong nền tảng (/kernel/arch/arm/mach-pxa/saarb.c) được sử dụng để đăng ký thiết bị i2c.
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));
...
}
bất cứ đề nghị và bình luận sẽ được chào đón, thanks ^^
là i2c_ts_id có đúng không? –