Changes

Jump to navigation Jump to search
2,958 bytes added ,  15:09, 4 May 2021
m
→‎GPIO Bits: 0x100->Gyroscope
Line 1: Line 1:  
[[Category:Services]]
 
[[Category:Services]]
 
= GPIO Service Names =
 
= GPIO Service Names =
* "gpio:CDC"
+
{| class="wikitable" border="1"
* "gpio:MCU"
+
|-
* "gpio:HID"
+
!  Service name
* "gpio:NWM"
+
!  Permitted GPIO bitmasks
* "gpio:IR"
+
|-
 +
| 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.
   −
= I2C Service =
+
= GPIO Services =
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
 
!  Command Header
 
!  Command Header
 
!  Description
 
!  Description
 +
!  Uses [[GPIO_Registers|GPIO Regs]]
 
|-
 
|-
| 0x0001....
+
| 0x00010040
| ?(u32 unk1,u32* ret) //reads from 0x1ec47020
+
| u32 GetRegPart1(u32 mask)
 +
| 0x10147010, 0x10147020
 
|-
 
|-
| 0x0002....
+
| 0x00020080
| ?(u32 unk1,u32 unk2)
+
| void SetRegPart1(u32 value, u32 mask)
 +
| 0x10147010, 0x10147020
 
|-
 
|-
| 0x0003....
+
| 0x00030040
| ?(u32 unk1,u32* ret)
+
| u32 GetRegPart2(u32 mask)
 +
| 0x10147010, 0x10147024
 
|-
 
|-
| 0x0004....
+
| 0x00040080
| ?(u32 unk1,u32 unk2)
+
| u32 SetRegPart2(u32 value, u32 mask)
 +
| 0x10147010, 0x10147024
 
|-
 
|-
| 0x0005....
+
| 0x00050040
| ?(u32 unk1,u32* ret)
+
| u32 GetInterruptMask(u32 mask)
 +
| 0x10147010, 0x10147024
 
|-
 
|-
| 0x0006....
+
| 0x00060080
| ?(u32 unk1,u32 unk2)
+
| void SetInterruptMask(u32 value, u32 mask)
 +
| 0x10147010, 0x10147024
 
|-
 
|-
| 0x0007....
+
| 0x00070040
| GetIRGPIO(u32 unk1,u32* ret)
+
| [[GPIO:GetGPIOData|GetGPIOData]]
 +
| 0x10147000, 0x10147010, 0x10147014, 0x10147020, 0x10147028
 
|-
 
|-
| 0x0008....
+
| 0x00080080
| SetIRGPIO(u32 unk1,u32 unk2)
+
| [[GPIO:SetGPIOData|SetGPIOData]]
 +
| 0x10147010, 0x10147014, 0x10147020, 0x10147028
 
|-
 
|-
 
| 0x00090082
 
| 0x00090082
| ?(u32 unk1,u32 unk2,HANDEL unk3)
+
| [[GPIO:BindInterrupt|BindInterrupt]]
 +
| None
 +
|-
 +
| 0x000A0042
 +
| [[GPIO:UnbindInterrupt|UnbindInterrupt]]
 +
| 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.
 
|}
 
|}
115

edits

Navigation menu