Je suis un débutant dans l'écriture du pilote de périphérique Linux, pardonnez-moi si quelque chose de stupide a demandé et mon pauvre anglais ^^
Je suis en train d'écrire un pilote pour un écran tactile, qui communiquent avec CPU via I2C.
J'ai essayé d'ajouter un pilote de périphérique dans la plate-forme Linux, et le registre a été un succès, je veux dire le pilote a été chargé, mais la fonction de sonde n'a pas tiré haut !!problème de sonde lors de l'écriture d'un pilote de périphérique I2C
Ci-dessus est un code partiel du pilote que j'ai écrit.
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);
est Ci-dessus, le code partiel dans la plate-forme (/kernel/arch/arm/mach-pxa/saarb.c) utilisée pour l'enregistrement du dispositif 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));
...
}
toute suggestion et commentaires seront les bienvenus, merci ^^
est-ce que i2c_ts_id est correct? –