Checkliste für GPIO-Controlleranforderungen

In diesem Thema werden die Hardware-, Firmware- und Softwareanforderungen für gpio-Controllergeräte (Universell IO) zusammengefasst, die für Windows verfügbar gemacht werden.

Hardwareanforderungen für GPIO-Controller

  • Der GPIO-Controller ist in den SoC integriert (nicht durch einen SPB-Bus verbunden).

    Erhöht die Zuverlässigkeit von emuliertem ActiveBoth.

  • Interrupts im Pegelmodus werden unterstützt.

    Erforderlich für emulierte ActiveBoth- und Debounce-Emulationsfeatures.

  • Sowohl hohe als auch niedrige Unterbrechungspolaritäten werden unterstützt.

    Erforderlich für emulierte ActiveBoth- und Debounce-Emulationsfeatures.

  • Die Unterbrechungspolarität kann zur Laufzeit neu programmiert werden.

    Erforderlich für emulierte ActiveBoth- und Debounce-Emulationsfeatures.

Firmwareanforderungen für GPIO-Controller

  • GPIO-Controller_CRS enthält alle Ressourcen für alle Pinbanken im Controller.

  • GPIO-Controller _CRS Ressourcenreihenfolge ermöglicht die Interruptzuordnung zwischen Bank und System.

  • _AEI Methode und Ereignismethoden (_Exx, _Lxx oder _EVT) sind für alle GPIO-signalierten ACPI-Ereignisse vorhanden.

  • GPIO-Controller _DSM enthalten, wenn activeBoth-Unterbrechungen, die mit dem Controller verbunden sind, logikhoch anstelle von Logik niedrig festgelegt sind.

  • Implementieren Sie _REG Methoden für jeden GPIO-Controller, und verhindern Sie die Verwendung von GeneralPurposeIO OpRegions, wenn _REG angibt, dass der Regionshandler nicht verfügbar ist.

  • Das Debounce-Timeout ist im GPIOInt-Ressourcendeskriptor für alle Interrupts enthalten, die debouncing erfordern.

GPIO-Controllertreiberanforderungen

  • Unterstützt Version 2 der Schnittstelle zwischen GpioClx und dem GPIO-Controllertreiber:

    • Implementieren Sie die rückruffunktion CLIENT_QueryEnabledInterrupts . Dies hilft erheblich bei der Diagnose von Unterbrechungsstürmen.

    • Wenn das Flag BankIdlePowerMgmtSupported in der CONTROLLER_BASIC_INFORMATION-Struktur festgelegt ist, muss der GPIO-Controllertreiber die CLIENT_SaveBankHardwareContext und CLIENT_RestoreBankHardwareContext Rückruffunktionen implementieren, und diese Funktionen müssen den Bankkontext entsprechend speichern/wiederherstellen, einschließlich des maskierten/nicht maskierten Zustands der Interrupts. Beachten Sie, dass interrupts zum Zeitpunkt des Aufrufs dieser Funktion nicht garantiert getrennt werden, aber wenn sie noch verbunden sind, werden sie garantiert maskiert.

    • Wenn das DeviceIdlePowerMgmtSupported-Flag in der CONTROLLER_BASIC_INFORMATION-Struktur festgelegt ist, müssen die CLIENT_StartController - und CLIENT_StopController-Rückruffunktionen den Kontext für alle Banken entsprechend speichern/wiederherstellen, einschließlich des maskierten/nicht maskierten Zustands der Interrupts. Beachten Sie, dass interrupts zum Zeitpunkt des Aufrufs dieser Funktion nicht garantiert getrennt werden, aber wenn sie noch verbunden sind, werden sie garantiert maskiert.

  • Legen Sie das EmulateDebouncing-Flag in der CONTROLLER_BASIC_INFORMATION-Struktur fest. Dies erhöht die Rauschimmunität für Geräte, deren Interrupts einer elektrostatischen Entladung unterliegen (z. B. Tasten, Stecker usw.).

  • Legen Sie das EmulateActiveBoth-Flag in der CONTROLLER_BASIC_INFORMATION-Struktur fest, und implementieren Sie die rückruffunktion CLIENT_ReconfigureInterrupt . Dadurch wird eine zuverlässige Edgeerkennung für ActiveBoth-Interrupts sichergestellt.