General Purpose I/O (GPIO)
1. Overview
GPIO簡單來說就是對於Intel PCH跟外部溝通的Transmit(Tx)和Receive(Rx)。
2. Accessing GPIO Reigsters
GPIO Registers放在(SBREG_BAR+PortID+Register Offset)的地方。
- SBREG_BAR就是P2SB(Primary to sideband bridge)的BAR0
- PortID是用Intel定義的好的值
- Register Offset是PCH spec裡面定義的位置
3. Config GPIO
3.1 Pad Ownership - Register Offset : 0x20
設定要把控制權交給誰使用。
00 := ACPI 或 GPIO Driver
01 := ME
10 := ISH
11 := Reserved
3.2 Host Software Pad Ownership - Register Offset : 0xC0
若Pad Ownership設定為00,就要更細分為是給ACPI還是GPIO Driver使用。
0 := ACPI,
1 := GPIO Driver,
3.3 Pad Configuration - Register Offset : 0x600 (GPP_A0)
3.4 Interrupt
GPI Interrupt Status - Register Offset : 0x100
前面Pad Ownership=00 && Host Software Pad Ownership=1才能使用。
GPE - Register Offset : 0x140
Pad Ownership=00 && HostSW Pad Ownership=0 && GPIRoutSCI=1才能開
SMI - Register Offset : 0x184
Pad Ownership=00 && HostSW Pad Ownership=0 && GPIOSMIRout=1
NMI - Register Offset : 0x1C4
Pad Ownership=00 && HostSW Pad Ownership=0 && GPINMIRount=1
3.6 Miscellaneous Configuration - Register Offset : 0x10
並不是所有的family都可以用Interrupt,Intel只有提供3個family可以讓你用interrupt。
ex.
GPE[95:88]=not used
GPE[87:64]=GPP_C[23:0]
GPE[63:56]=not used
GPE[55:32]=GPP_B[23:0]
GPE[31:24]=not used
GPE[23:0]=GPP_A[23:0]