Frage

Ich arbeite mit dem Linux-Kernel-Gerätaum und auf den ersten Blick scheint es eine fehlende Funktionalität für Knoten mit mehreren Interrupt-Eltern zu geben. Ich habe einen Treiber, der ein individuelles arm eingebettetes Bord steuert, es braucht GPIOS und Pin-Interrupts von mehreren GPIO-Interrupt-Eltern und verwaltet den Bordbatterie, die Spannung niedriger IRQS, RESET_Pending-IRQ usw.

Ich habe eine Quelle gefunden, in der sich jemand in zusätzlicher Funktionalität gehackt hat, um damit umzugehen, aber das ist nicht ausreichend und beinhaltet das Ändern der von Interrupt-Quelldateien, die ich nicht will. Die Änderung hinzugefügte Unterstützung für einen Begriff namens "Interrupts-Extended" so. Hier ist das Interrupt-Elternteil in den Tupel angegeben.

generasacodicetagpre.

Ich habe keine Möglichkeiten oder ein Beispiel dafür gefunden, wie Sie die Eigenschaft Interrupt-Map-Eigenschaft verwenden, um ein einfaches GPIO-Interrupt-Mapping zu erreichen, also bin ich beim Verlust dort.

Wenn ich nur ein einzelnes GPIO-Interrupt-Elternteil hat, wäre der richtige Weg, um dies zu tun, wäre so.

generasacodicetagpre.

Dies ermöglicht jedoch nur das Deklaration von ein Interrupt-Elternteil mit mehreren in "Interrupts" angegebenen Interrupts, und sie müssen alle zu dem angegebenen übergeordneten Element gehören. Ich verwende 2 Interrupt-Eltern, GPIO7 und GPIO3.

Wie ist der richtige Weg, um mehrere Interrupts mit verschiedenen Interrupt-Eltern in einem einzelnen Geräteknoten in der Gerätebaum zu implementieren?

War es hilfreich?

Lösung

Ich weiß nicht, ob dies für GPIO-Interrupt-Eltern funktioniert, aber für andere Arten von Interrupt-Controllern verwenden Sie die Eigenschaft 'Interrupt-Map'-Eigenschaft, und geben Sie die Liste der Interrupts mithilfe von Pandess an jeden der separaten Steuerungen an.Hier ist ein Beispiel, in dem ich gesehen habe, wo der Treiber 3 Interrupts benötigt, 2 vom "Intc" -Controller und 1 vom "SPMI" -Controller:

generasacodicetagpre.

In diesem Beispiel hatte der Intc-Knoten einen # Interrupt-Zellen-Wert von <3> und der SPMI-Knoten hatte einen # Interrupt-Zellen-Wert von 4 (dh, dass viele Argumente, die mit ihren jeweiligen Pandeln verwendet werden müssten).

Das Feld Interrupt-Namen ist optional, können Sie jedoch den IRQ mit Namen anstelle von Nummer im Code anfordern (dh Platform_Get_Irq_byName (), anstelle von Platform_Get_Irq ())

Um ehrlich zu sein, ich bin ein bisschen unsicher, was Interrupt-Map-Mask-Maske verwendet wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top