GPIO Services: Difference between revisions

From 3dbrew
Jump to navigation Jump to search
Xerpi (talk | contribs)
No edit summary
Xerpi (talk | contribs)
No edit summary
Line 32: Line 32:
The commands for these services are identical.
The commands for these services are identical.


= CDC Service =
= GPIO Services =
{| class="wikitable" border="1"
|-
!  Command Header
!  Description
|-
| 0x00020080
| void unknown_0x2(u32 unk, u32 unk)
|-
| 0x00040080
| void unknown_0x4(u32 unk, u32 unk)
|-
| 0x00060080
| void unknown_0x6(u32 unk, u32 unk)
|-
| 0x00090082
| [[GPIO:BindInterrupt|BindInterrupt]]
|}
 
= HID Service =
{| class="wikitable" border="1"
|-
!  Command Header
!  Description
|-
| 0x00020080
| void unknown_0x2(u32 unk, u32 unk)
|-
| 0x00040080
| void unknown_0x4(u32 unk, u32 unk)
|-
| 0x00060080
| void unknown_0x6(u32 unk, u32 unk)
|-
| 0x00070040
| u32 unknown_0x7(u32 unk). Parameter and return value might be some mask of the same kind?
|}
 
= I2C Service =
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
!  Command Header
!  Command Header
!  Description
!  Description
!  Uses [[GPIO_Registers|GPIO Regs]]
|-
|-
| 0x0001....
| 0x0001....
| ?(u32 unk1,u32* ret) //reads from 0x1ec47020
| ?(u32 unk1,u32* ret)
| 0x10147010, 0x10147020
|-
|-
| 0x0002....
| 0x0002....
| ?(u32 unk1,u32 unk2)
| ?(u32 unk1,u32 unk2)
| 0x10147010, 0x10147020
|-
|-
| 0x0003....
| 0x0003....
| ?(u32 unk1,u32* ret)
| ?(u32 unk1,u32* ret)
| 0x10147010, 0x10147024
|-
|-
| 0x0004....
| 0x0004....
| ?(u32 unk1,u32 unk2)
| ?(u32 unk1,u32 unk2)
| 0x10147010, 0x10147024
|-
|-
| 0x0005....
| 0x0005....
| ?(u32 unk1,u32* ret)
| ?(u32 unk1,u32* ret)
| 0x10147010, 0x10147024
|-
|-
| 0x0006....
| 0x0006....
| ?(u32 unk1,u32 unk2)
| ?(u32 unk1,u32 unk2)
| 0x10147010, 0x10147024
|-
|-
| 0x0007....
| 0x0007....
| GetIRGPIO(u32 unk1,u32* ret)
| GetIRGPIO(u32 unk1,u32* ret)
| 0x10147000, 0x10147010, 0x10147014, 0x10147020, 0x10147018
|-
|-
| 0x0008....
| 0x0008....
| SetIRGPIO(u32 unk1,u32 unk2)
| SetIRGPIO(u32 unk1,u32 unk2)
| 0x10147010, 0x10147014, 0x10147020, 0x10147028
|-
|-
| 0x00090082
| 0x00090082
| [[GPIO:BindInterrupt|BindInterrupt]]
| [[GPIO:BindInterrupt|BindInterrupt]]
| None
|-
|-
| 0x000A0042
| 0x000A0042
| [[GPIO:UnbindInterrupt|UnbindInterrupt]]
| [[GPIO:UnbindInterrupt|UnbindInterrupt]]
| None
|}
|}

Revision as of 12:53, 19 July 2016

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
0x0002.... ?(u32 unk1,u32 unk2) 0x10147010, 0x10147020
0x0003.... ?(u32 unk1,u32* ret) 0x10147010, 0x10147024
0x0004.... ?(u32 unk1,u32 unk2) 0x10147010, 0x10147024
0x0005.... ?(u32 unk1,u32* ret) 0x10147010, 0x10147024
0x0006.... ?(u32 unk1,u32 unk2) 0x10147010, 0x10147024
0x0007.... GetIRGPIO(u32 unk1,u32* ret) 0x10147000, 0x10147010, 0x10147014, 0x10147020, 0x10147018
0x0008.... SetIRGPIO(u32 unk1,u32 unk2) 0x10147010, 0x10147014, 0x10147020, 0x10147028
0x00090082 BindInterrupt None
0x000A0042 UnbindInterrupt None