2017-12-07 7 views
0

Ich entwickle einen einfachen GPIO-Treiber für ein SoC läuft Linux (Anfänger Ebene), Ich habe Probleme, weil IRQ-Nummern unterscheiden sich von denen in den Datenblättern.Kernel IRQ Domain-Liste

Ich habe gelernt, dass effektive IRQ-Manager IRQ-Domänen erstellen kann. Die

unsigned int irq_find_mapping (struct irq_domain * Domäne, irq_hw_number_t hwirq) benötigt eine Domänenstruktur. Wie kann ich die für meine Plattform verfügbare Domain auflisten? Danke.

Hier sind einige Inhalte Dateien

Datei: irq_domain_mapping
name mapped linear-max direct-max devtree_node gpio-dwapb 29 29 0 /soc/[email protected]/gpio-controller ... 99 0x00019 none
file:/proc/
unterbricht 99 ... 25 edge gpiolib
jedoch DTS-Datei die Unterbrechung bei 197 mit dwapb Manager Karten
interrupts = <0x00000000 0x000000a5 0x00000004>

+0

'cat/sys/kernel/debug/irq_domain_mapping'. Stellen Sie sicher, dass Sie * CONFIG_IRQ_DOMAIN_DEBUG = y * in der Kernel-Konfiguration haben. – 0andriy

+0

Ich habe meine Frage bearbeitet, die Unterbrechung ist 197 in DTS-Datei zugeordnet, ist aber auf 99 in Linux – SOFuser

+0

Es wäre besser, wenn Sie alle 3 Dateien (/ proc/interrupts, irq_domain_mapping und DTS mit Code in Frage) auf etwas Internetanteil (pastebin like) w/** full ** Inhalt. – 0andriy

Antwort

0

Es gibt viele Dinge zu beachten:

  1. /proc/interrupts geben die IRQ-Nummer an, die Sie direkt verwenden können.
  2. BSP-Dokumentation erwähnt IRQ zugewiesen/von Treibern verwendet.
  3. Siehe Kernel-Code/Arch/Arm/Ihre Plattform-Dateien, Sie sehen IRQ-Nummern zugeordnet.
  4. Die Gerätebaumdatei ist die beste Option zum Identifizieren der IRQ-Nummer.
+0

Vielen Dank für Ihre Unterstützung, ich werde den dritten Vorschlag überprüfen, weil die anderen meine Bedürfnisse nicht erfüllen – SOFuser

+0

Siehe meinen Kommentar zu OP. – 0andriy

Verwandte Themen