GPIO Services: Difference between revisions

Xerpi (talk | contribs)
No edit summary
Unknown (talk | contribs)
m GPIO Bits: 0x100->Gyroscope
 
(17 intermediate revisions by 5 users not shown)
Line 4: Line 4:
|-
|-
!  Service name
!  Service name
!  Permitted interrupts bitmasks
!  Permitted GPIO bitmasks
|-
|-
| gpio:CDC
| gpio:CDC
Line 28: Line 28:
|}
|}


For the mapping between interrupts bitmasks and IRQs see: [[GPIO:BindInterrupt#Supported_values]].
For the mapping between GPIO bitmasks and IRQs see: [[GPIO:BindInterrupt#Supported_values]].


The commands for these services are identical.
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 =
= GPIO Services =
Line 39: Line 41:
!  Uses [[GPIO_Registers|GPIO Regs]]
!  Uses [[GPIO_Registers|GPIO Regs]]
|-
|-
| 0x0001....
| 0x00010040
| ?(u32 unk1,u32* ret)
| u32 GetRegPart1(u32 mask)
| 0x10147010, 0x10147020
| 0x10147010, 0x10147020
|-
|-
| 0x0002....
| 0x00020080
| ?(u32 unk1,u32 unk2)
| void SetRegPart1(u32 value, u32 mask)
| 0x10147010, 0x10147020
| 0x10147010, 0x10147020
|-
|-
| 0x0003....
| 0x00030040
| ?(u32 unk1,u32* ret)
| u32 GetRegPart2(u32 mask)
| 0x10147010, 0x10147024
| 0x10147010, 0x10147024
|-
|-
| 0x0004....
| 0x00040080
| ?(u32 unk1,u32 unk2)
| u32 SetRegPart2(u32 value, u32 mask)
| 0x10147010, 0x10147024
| 0x10147010, 0x10147024
|-
|-
| 0x0005....
| 0x00050040
| ?(u32 unk1,u32* ret)
| u32 GetInterruptMask(u32 mask)
| 0x10147010, 0x10147024
| 0x10147010, 0x10147024
|-
|-
| 0x0006....
| 0x00060080
| ?(u32 unk1,u32 unk2)
| void SetInterruptMask(u32 value, u32 mask)
| 0x10147010, 0x10147024
| 0x10147010, 0x10147024
|-
|-
| 0x0007....
| 0x00070040
| GetIRGPIO(u32 unk1,u32* ret)
| [[GPIO:GetGPIOData|GetGPIOData]]
| 0x10147000, 0x10147010, 0x10147014, 0x10147020, 0x10147018
| 0x10147000, 0x10147010, 0x10147014, 0x10147020, 0x10147028
|-
|-
| 0x0008....
| 0x00080080
| SetIRGPIO(u32 unk1,u32 unk2)
| [[GPIO:SetGPIOData|SetGPIOData]]
| 0x10147010, 0x10147014, 0x10147020, 0x10147028
| 0x10147010, 0x10147014, 0x10147020, 0x10147028
|-
|-
Line 78: Line 80:
| [[GPIO:UnbindInterrupt|UnbindInterrupt]]
| [[GPIO:UnbindInterrupt|UnbindInterrupt]]
| None
| None
|}
=GPIO Bitmask=
The bitmask used by the service commands determines which bits in the GPIO registers to access. The output value from [[GPIO:GetGPIOData|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.
{| class="wikitable" border="1"
|-
!  Bits in the bitmask
!  Register
!  Bits from register
!  Handled with [[GPIO:SetGPIOData]]
|-
| 0-2 (0x7)
| 0x10147000
| 0-2
| No
|-
| 3-4 (0x18)
| 0x10147010
| 0-1
| Yes
|-
| 5 (0x20)
| 0x10147014
| 0
| Yes
|-
| 6-17 (0x3FFC0)
| 0x10147020
| 0-11
| Yes
|-
| 18 (0x40000)
| 0x10147028
| 0
| Yes
|}
==GPIO Bits==
{| class="wikitable" border="1"
|-
!  Bit
!  Bitmask
!  Accessible via GPIO service
!  Used by
!  Description
|-
| 0
| 0x1
| gpio:HID
| HID-sysmodule
| Used with [[HID_Shared_Memory|HID]] PAD state.
|-
| 1
| 0x2
| None
|
| Not known to be used by ''anything'', with the latest system-version at least.
|-
| 2
| 0x4
| None
|
| Not known to be used by ''anything'', with the latest system-version at least.
|-
| 3
| 0x8
| gpio:CDC
| ?
| ?
|-
| 4
| 0x10
| None
|
| Not known to be used by ''anything'', with the latest system-version at least.
|-
| 5
| 0x20
| gpio:MCU, gpio:NWM
| ?
| ?
|-
| 6
| 0x40
| gpio:CDC, gpio:IR
| ?
| ?
|-
| 7
| 0x80
| gpio:IR
| Boot11
| ?
|-
| 8
| 0x100
| gpio:HID
| HID sysmodule
| Used with gyroscope
|-
| 9
| 0x200
| gpio:HID, gpio:IR
| HID-sysmodule and IR-sysmodule
| Unknown, used with ir:rst.
|-
| 10
| 0x400
| gpio:IR
| IR-sysmodule, Boot11
| IR [[IRU:SetIRLEDState|send]]. 1 = IR LED enable, 0 = IR LED disable.
|-
| 11
| 0x800
| gpio:IR
| IR-sysmodule
| IR [[IRU:GetIRLEDRecvState|receive]]
|-
| 12
| 0x1000
| gpio:NFC
| ?
| ?
|-
| 13
| 0x2000
| gpio:NFC
| ?
| ?
|-
| 14
| 0x4000
| gpio:HID
| HID-sysmodule
| Used with [[HID_Shared_Memory|HID]]  PAD state.
|-
| 15
| 0x8000
| gpio:MCU
| ?
| ?
|-
| 16
| 0x10000
| gpio:NFC
| ?
| ?
|-
| 17
| 0x20000
| gpio:QTM
| ?
| ?
|-
| 18
| 0x40000
| gpio:MCU, gpio:NWM
| NWM-sysmodule
| Wifi enable. 1=Enabled, 0=Disabled.
|}
|}