fa riferimento ad i2c...vediamo
fa riferimento ad i2c...vediamo
Ho aggiornato i lpost con piu' info....
Si pistoneone! oltre tutto ho il terroe di briccare il tab
Per i sorgenti di Dropad ovviamente sima ancora nulla
Hahaha ma non scherzare!! Lo faccio perche mi diverte e se lo rompo me lo tengo rotto
Correggo il link alla Linux Cross Reference questo e' molto meglio perche' dice anche dove la funzione e' definita non solo dove viene nominata Linux/ - Linux Cross Reference - Free Electrons
scusate ragazzi ci sono novità?
Penso di aver capito il problema...
Quando si scrive un driver per linux ci sono un tot di cose standard da fa, per esempio ssi devono scrivere delle funzioni standard per registrare il device, per inizializzarlo ecc... poi c'e' una struttura dati in particolare che nel caso di i2c si chiama struct i2c_driver, ecco l'estratto da driver den nostro touch:
#define FT5X0X_NAME "ft5x0x_ts"
[.......]
static struct i2c_device_id ft5406_idtable[] = {
{ FT5X0X_NAME, 0 },
{ }
};
Questa struttu definisce quali dispositivi il nostro driver supporta, nel nostro caso FT5X0X_NAME che e' definito con la stringa "ft5x0x_ts", ovviamente il bus i2c non e' cosi avvanzato da dare un nome simbolico cosi' complesso ad un dispositivo, in kernel esiste un file setup.c dove sono definite le corrispondenze fra i nomi simbolici e le caratteristiche (IRQ, pin GPIO a quale sono collegati ecc...)
bene, nel nostro kernel non c'e' riferimeno a ft5x0x_ts !!!
Quindi la missione e' trovare un file setup.c che contenga la stringa "ft5x0x_ts" in una struct i2c_board_info...
Mi correggo, potrebbe stare anche in un include .h
Ultima modifica di eldiau; 16-11-11 alle 22:54
e questo file dove è posizionato nell'albero struttura?
Noi dobbiamo metterlo in arch/arm/mach-rk29/board-rk29-ddr3sdk.c alla riga 807 nella definizione dell'array di strutture
static struct i2c_board_info __initdata board_i2c0_devices[] = {
prima della chiusua, dopo le altre definizioni ci va qualcosa tipo:
#if defined (CONFIG_TOUCHSCREEN_FT5406)
static struct i2c_board_info __initdata rk29ddr3sdk_i2c_devices[] = {
{
.type = "ft5x06_ts",
.addr = 0x0d,
.flags = 0,
.irq = RK29_PIN0_PA4,
},
#endif
a parte type, gli altri valori vanno trovati...
Ulteriore approsimazione, il touch sta sul bus numero 2 quindi la definizione va in:
static struct i2c_board_info __initdata board_i2c2_devices[] = {
e dovrebbe suonare pressapoco cosi':
#if defined (CONFIG_TOUCHSCREEN_FT5406)
{
.type = "ft5x06_ts",
.addr = 0x04,
.flags = 0,
.irq = RK29_PIN0_PA2,
},
#endif