Elenco di controllo dei requisiti del controller GPIO
In questo argomento vengono riepilogati i requisiti hardware, firmware e software per per utilizzo generico i dispositivi controller IO (GPIO) esposti a Windows.
Requisiti hardware del controller GPIO
Il controller GPIO è integrato nel soC (non connesso da un bus SPB).
Aumenta l'affidabilità di Emulate ActiveBoth.
Sono supportati gli interruzioni in modalità livello.
Obbligatorio per le funzionalità di emulazione di ActiveBoth e Debounce Emulation.
Le polarità di interruzione elevate e basse sono supportate.
Obbligatorio per le funzionalità di emulazione di ActiveBoth e Debounce Emulation.
La polarità di interruzione può essere programmata nuovamente in fase di esecuzione.
Obbligatorio per le funzionalità di emulazione di ActiveBoth e Debounce Emulation.
Requisiti del firmware del controller GPIO
Il controller GPIO _CRS include tutte le risorse per tutte le banche pin nel controller.
Il controller GPIO _CRS l'ordinamento delle risorse fornisce il mapping degli interruzioni da banca a sistema.
_AEI metodo e metodi di evento (_Exx, _Lxx o _EVT) esistono per eventuali eventi ACPI con segnale GPIO.
Il controller GPIO _DSM incluso se qualsiasi interruzione di ActiveBoth connessa al controller è elevata la logica anziché la logica bassa.
Implementare metodi _REG per ogni controller GPIO e impedire l'uso di GeneralPurposeIO OpRegions se _REG indica che il gestore dell'area non è disponibile.
Il timeout di debounce è incluso nel descrittore di risorse GPIOInt per qualsiasi interruzione che richiede il debouncing.
Requisiti del driver del controller GPIO
Supporto della versione 2 dell'interfaccia tra GpioClx e il driver del controller GPIO:
Implementare la funzione di callback CLIENT_QueryEnabledInterrupts . Questo aiuta notevolmente a diagnosticare le tempeste di interruzione.
Se il flag BankIdlePowerMgmtSupported è impostato nella struttura CONTROLLER_BASIC_INFORMATION , il driver del controller GPIO deve implementare le funzioni di CLIENT_SaveBankHardwareContext e CLIENT_RestoreBankHardwareContext callback e queste funzioni devono salvare/ripristinare il contesto bancario in modo appropriato, incluso lo stato mascherato/non mascherato degli interruzioni. Si noti che gli interruzioni non sono garantiti di essere disconnessi al momento della chiamata a questa funzione, ma, se sono ancora connessi, sono garantiti mascherati.
Se il flag DeviceIdlePowerMgmtSupported è impostato nella struttura CONTROLLER_BASIC_INFORMATION , le funzioni di callback CLIENT_StartController e CLIENT_StopController devono salvare/ripristinare il contesto per tutte le banche in modo appropriato, incluso lo stato mascherato/non mascherato degli interruzioni. Si noti che gli interruzioni non sono garantiti di essere disconnessi al momento della chiamata a questa funzione, ma, se sono ancora connessi, sono garantiti mascherati.
Impostare il flag EmulateDebouncing nella struttura CONTROLLER_BASIC_INFORMATION . Questo aumenta significativamente l'immunità del rumore per i dispositivi i cui interruzioni sono soggetti a scarica elettrostatica (ad esempio pulsanti, plug e così via).
Impostare il flag EmulateActiveBoth nella struttura CONTROLLER_BASIC_INFORMATION e implementare la funzione di callback CLIENT_ReconfigureInterrupt . Ciò garantisce il rilevamento affidabile dei bordi per gli interruzioni di ActiveBoth.