Sonde problem beim schreiben von einem I2C-device-Treiber

Ich bin ein Neuling im schreiben von linux device driver, verzeihen Sie mir, wenn etwas doof einen gefragt, und mein schlechtes Englisch^^
Ich bin versucht, zu schreiben, einen Treiber für ein touch-panel, das kommunizieren mit der CPU über I2C.
Ich versucht, um einen Gerätetreiber in linux-Plattform, und die Registrierung war erfolgreich, ich meine, der Treiber wurde geladen, aber der probe-Funktion nicht ausgelöst!!!!!

Oben ist teilweise code der Treiber, den ich schrieb.

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);

Oben ist teilweise code in der Plattform (/kernel/arch/arm/mach-pxa/saarb.c) verwendet für die Registrierung des i2c-Geräts.

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));  
    ...  
}

jede Anregung und Kommentar ist willkommen, danke^^

ist i2c_ts_id richtig?

InformationsquelleAutor ChengYing | 2010-06-10

Schreibe einen Kommentar