2015-08-28 7 views
7

In precedenza ho lavorato su driver della piattaforma ARM specifici, recentemente trasferiti su Intel Atom. Su ARM, aveva arch/arm/boot/dts/xx.dts e arch/arm/mach-xx/ per aggiungere dispositivi di piattaforma. Non vedo questi file o cartelle su x86. Quando sono entrato in arch/x86/... non ci sono file dts o file di piattaforma.Differenza nella scrittura di un driver di periferica della piattaforma per x86 e ARM

Come posso aggiungere le informazioni sul mio dispositivo piattaforma, se voglio aggiungere il mio dispositivo piattaforma nella piattaforma Intel Atom? Dove posso ottenere i file dts specifici per x86 (assumendo anche se i dts non sono specifici per l'architettura)?

+0

C'è un esempio, 'arch/x86/platform/CE4100/falconfalls.dts', versione del kernel è 3.18. Potrebbe essere un buon inizio per te. –

+0

Grazie Chris, per il tuo commento, questo è l'unico posto dove ho trovato. Ma ci sono molte schede basate su Intel. Ma quello che ho trovato è che stanno usando informazioni acpi, simili a dts. Ma non sono sicuro di come queste informazioni acpi vengano inviate a Linux. Se voglio aggiungere qualsiasi dispositivo di piattaforma. Come posso aggiungere. – anikhan

risposta

5

Ci sono due nuove funzionalità che consentono di avere un driver per i mondi x86 e ARM contemporaneamente. Il primo è il metodo _DSD nell'ACPI che consente al fornitore di fornire tutte le proprietà del dispositivo di cui hanno bisogno per far funzionare correttamente l'IP. La seconda parte è l'interfaccia delle proprietà del dispositivo unificata nel kernel di Linux (vedi drivers/base/property.c). Così, se le vostre esigenze dispositivo diciamo clock-frequency proprietà basta scrivere nel driver qualcosa di simile:

u32 clock_freq; 
int err; 

err = device_property_read_u32(…, &clock_freq); 
if (err) 
    dev_err(…, "A mandatory property not found!\n"); 
+0

Grazie Andy, da dove e come questa informazione ACPI arriva al kernel Linux – anikhan

+0

Se si tratta di una domanda, la risposta è parzialmente nel testo sopra. Il metodo '_DSD' è specificamente progettato per fornire coppie chiave-valore delle proprietà del dispositivo al sistema operativo. – 0andriy

+0

Le informazioni _DSD (ACPI) vengono inviate da qualsiasi codice di avvio o compilate esplicitamente con il kernel. In ARM, generalmente genereremo dtb da dts e lo passiamo al kernel da uboot. – anikhan