Sonde de problème lors de l'écriture d'un pilote de périphérique I2C

Je suis un débutant dans l'écriture de linux pilote de périphérique, pardonnez-moi si quelque chose de stupide un a demandé et mon pauvre anglais^^

Je suis en train d'écrire un pilote pour un écran tactile, qui communiquent avec PROCESSEUR via I2C.

J'ai essayé d'ajouter un pilote de périphérique dans la plate-forme linux, et le registre a été succès, je veux dire que le pilote a été chargé, mais la sonde de la fonction n'a pas tiré!!

Ci-dessus est partielle du code 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);

Ci-dessus est partielle de code dans la plate-forme (/kernel/arch/arm/mach-pxa/saarb.c) utilisé pour l'enregistrement de l'i2c appareil.

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 commentaire sera le bienvenu, merci^^

InformationsquelleAutor ChengYing | 2010-06-10