2015-08-28 6 views
7

Ich arbeitete zuvor an ARM-spezifischen Plattformtreibern, die kürzlich auf Intel Atom-Basis umgestellt wurden. Auf ARM hatte es arch/arm/boot/dts/xx.dts und arch/arm/mach-xx/ zum Hinzufügen von Plattformgeräten. Ich sehe diese Dateien oder Ordner nicht auf x86. Als ich ging in arch/x86/... gibt es keine dts-Dateien oder Plattform-Dateien.Unterschied beim Schreiben eines Plattform-Gerätetreibers für x86 und ARM

Wie kann ich meine Plattformgeräteinformationen hinzufügen, wenn ich mein Plattformgerät zur Intel Atom-Plattform hinzufügen möchte? Wo kann ich die dts-Dateien erhalten, die spezifisch für x86 sind (vorausgesetzt, obwohl dts keine Architektur ist)?

+0

Es ist ein Beispiel 'arch/x86/platform/CE4100/falconfalls.dts', ist der Kernel-Version 3.18. Vielleicht ist es ein guter Anfang für Sie. –

+0

Danke Chris, Für Ihren Kommentar, dies ist der einzige Ort, wo ich gefunden habe. Aber es gibt viele Intel-basierte Boards. Aber was ich gefunden habe, ist, dass sie acpi info verwenden, ähnlich wie dts. Aber ich bin mir nicht sicher, wie diese ACPI Informationen an Linux gesendet werden. Wenn ich irgendein Plattformgerät hinzufügen möchte. Wie kann ich hinzufügen? – anikhan

Antwort

5

Es gibt zwei neue Funktionen, mit denen Sie einen Treiber für x86- und ARM-Welten gleichzeitig haben können. Die erste ist die _DSD-Methode im ACPI, die es dem Hersteller ermöglicht, alle Geräteeigenschaften anzugeben, die für die ordnungsgemäße Funktion der IP erforderlich sind. Der zweite Teil ist die einheitliche Schnittstelle für Geräteeigenschaften im Linux-Kernel (siehe drivers/base/property.c). Wenn also Ihr Gerät Bedürfnisse des clock-frequency Eigenschaft lassen sagen Sie nur in den Fahrer so etwas schreiben:

u32 clock_freq; 
int err; 

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

Danke Andy, woher und wie diese ACPI -Infromation zum Linux-Kernel kommt – anikhan

+0

Wenn es eine Frage ist, die Antwort teilweise im obigen Text. Die '_DSD'-Methode wurde speziell entwickelt, um dem Betriebssystem Schlüssel/Wert-Paare der Geräteeigenschaften zu liefern. – 0andriy

+0

Die _DSD (ACPI) -Info wird von einem beliebigen Boot-Code gesendet oder explizit mit dem Kernel kompiliert. In ARM erzeugen wir im Allgemeinen dtb von dts und übergeben dies von uboot an den Kernel. – anikhan