GPIO Service Names
Service name
|
Permitted interrupts 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 interrupts bitmasks and IRQs see: GPIO:BindInterrupt#Supported_values.
The commands for these services are identical.
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
|
GetIRGPIO(u32 bitmask) Output u32 is written to cmdreply[2].
|
0x10147000, 0x10147010, 0x10147014, 0x10147020, 0x10147028
|
0x00080080
|
SetIRGPIO(u32 unk1,u32 unk2)
|
0x10147010, 0x10147014, 0x10147020, 0x10147028
|
0x00090082
|
BindInterrupt
|
None
|
0x000A0042
|
UnbindInterrupt
|
None
|
GPIO Bitmask
The bitmask used by GetIRGPIO(and likely others) determines which bits in the GPIO registers to access. The output value from GetIRGPIO 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
|