GPIO Service Names
Service name
|
Permitted GPIO bitmasks
|
gpio:CDC
|
0x48
|
gpio:MCU
|
0x48020
|
gpio:HID
|
0x4301
|
gpio:NWM
|
0x40020
|
gpio:IR
|
0xEC0
|
gpio:NFC
|
0x13000
|
gpio:QTM
|
0x20000
|
For the mapping between GPIO bitmasks and IRQs see: GPIO:BindInterrupt#Supported_values.
The commands for these services are identical.
The input bitmask for each command is masked with the above permission bitmask, if the result is non-zero an error is occurred.
GPIO Services
Command Header
|
Description
|
Uses GPIO Regs
|
0x0001....
|
?(u32 unk1,u32* ret)
|
0x10147010, 0x10147020
|
0x00020080
|
?(u32 unk1,u32 unk2)
|
0x10147010, 0x10147020
|
0x0003....
|
?(u32 unk1,u32* ret)
|
0x10147010, 0x10147024
|
0x00040080
|
?(u32 unk1,u32 unk2)
|
0x10147010, 0x10147024
|
0x0005....
|
?(u32 unk1,u32* ret)
|
0x10147010, 0x10147024
|
0x00060080
|
?(u32 unk1,u32 unk2)
|
0x10147010, 0x10147024
|
0x00070040
|
GetGPIOData
|
0x10147000, 0x10147010, 0x10147014, 0x10147020, 0x10147028
|
0x00080080
|
SetGPIOData
|
0x10147010, 0x10147014, 0x10147020, 0x10147028
|
0x00090082
|
BindInterrupt
|
None
|
0x000A0042
|
UnbindInterrupt
|
None
|
GPIO Bitmask
The bitmask used by the service commands determines which bits in the GPIO registers to access. The output value from GetGPIOData uses the same format as the bitmask: the values of bits in the output field are set to the value of GPIO data when those bits are set in the input bitmask.
Bits in the bitmask
|
Register
|
Bits from register
|
0-2 (0x7)
|
0x10147000
|
0-2
|
3-4 (0x18)
|
0x10147010
|
0-1
|
5 (0x20)
|
0x10147014
|
0
|
6-17 (0x3FFC0)
|
0x10147020
|
0-11
|
18 (0x40000)
|
0x10147028
|
0
|
GPIO Bits
Bit
|
Bitmask
|
Accessible via GPIO service
|
Used by
|
Description
|
0
|
0x1
|
gpio:HID
|
?
|
?
|
1
|
0x2
|
None
|
|
|
2
|
0x4
|
None
|
|
|
3
|
0x8
|
gpio:CDC
|
?
|
?
|
4
|
0x10
|
None
|
|
|
5
|
0x20
|
gpio:MCU, gpio:NWM
|
?
|
?
|
6
|
0x40
|
gpio:CDC, gpio:IR
|
?
|
?
|
7
|
0x80
|
gpio:IR
|
?
|
?
|
8
|
0x100
|
gpio:HID
|
?
|
?
|
9
|
0x200
|
gpio:HID, gpio:IR
|
?
|
?
|
10
|
0x400
|
gpio:IR
|
?
|
?
|
11
|
0x800
|
gpio:IR
|
?
|
?
|
12
|
0x1000
|
gpio:NFC
|
?
|
?
|
13
|
0x2000
|
gpio:NFC
|
?
|
?
|
14
|
0x4000
|
gpio:HID
|
?
|
?
|
15
|
0x8000
|
gpio:MCU
|
?
|
?
|
16
|
0x10000
|
gpio:NFC
|
?
|
?
|
17
|
0x20000
|
gpio:QTM
|
?
|
?
|
18
|
0x40000
|
gpio:MCU, gpio:NWM
|
?
|
?
|