2019年6月18日 星期二

General Purpose I/O (GPIO)

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]

沒有留言:

張貼留言