Soy un novato en la escritura del controlador del dispositivo Linux, perdóneme si algo es estúpido y mi inglés pobre ^^
Estoy intentando escribir un controlador para un panel táctil, que se comunica con CPU a través de I2C.
Intenté agregar un controlador de dispositivo a la plataforma de Linux, y el registro fue exitoso, es decir, el controlador se cargó, pero la función de la sonda no se activó.Problema de la sonda al escribir un controlador de dispositivo I2C
Arriba está el código parcial del controlador que escribí.
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);
código anterior es parcial en la plataforma (/kernel/arch/arm/mach-pxa/saarb.c) que se utiliza para registrar el dispositivo 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));
...
}
cualquier sugerencia y comentario serán bienvenidos, gracias ^^
es i2c_ts_id ¿correcto? –