Changes

Jump to navigation Jump to search
1,634 bytes added ,  14:49, 1 October 2017
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
 
|-
 
|-
 
| 0x00020080
 
| 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
 
|-
 
|-
 
| 0x00040080
 
| 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
 
|-
 
|-
 
| 0x00060080
 
| 0x00060080
| ?(u32 unk1,u32 unk2)
+
| void SetInterruptMask(u32 value, u32 mask)
 
| 0x10147010, 0x10147024
 
| 0x10147010, 0x10147024
 
|-
 
|-
 
| 0x00070040
 
| 0x00070040
| GetIRGPIO(u32 bitmask) Output u32 is written to cmdreply[2].
+
| [[GPIO:GetGPIOData|GetGPIOData]]
 
| 0x10147000, 0x10147010, 0x10147014, 0x10147020, 0x10147028
 
| 0x10147000, 0x10147010, 0x10147014, 0x10147020, 0x10147028
 
|-
 
|-
 
| 0x00080080
 
| 0x00080080
| SetIRGPIO(u32 unk1,u32 unk2)
+
| [[GPIO:SetGPIOData|SetGPIOData]]
 
| 0x10147010, 0x10147014, 0x10147020, 0x10147028
 
| 0x10147010, 0x10147014, 0x10147020, 0x10147028
 
|-
 
|-
Line 81: Line 83:     
=GPIO Bitmask=
 
=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.
+
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"
 
{| class="wikitable" border="1"
Line 88: Line 90:  
!  Register
 
!  Register
 
!  Bits from register
 
!  Bits from register
 +
!  Handled with [[GPIO:SetGPIOData]]
 
|-
 
|-
 
| 0-2 (0x7)
 
| 0-2 (0x7)
 
| 0x10147000
 
| 0x10147000
 
| 0-2
 
| 0-2
 +
| No
 
|-
 
|-
 
| 3-4 (0x18)
 
| 3-4 (0x18)
 
| 0x10147010
 
| 0x10147010
 
| 0-1
 
| 0-1
 +
| Yes
 
|-
 
|-
 
| 5 (0x20)
 
| 5 (0x20)
 
| 0x10147014
 
| 0x10147014
 
| 0
 
| 0
 +
| Yes
 
|-
 
|-
 
| 6-17 (0x3FFC0)
 
| 6-17 (0x3FFC0)
 
| 0x10147020
 
| 0x10147020
 
| 0-11
 
| 0-11
 +
| Yes
 
|-
 
|-
 
| 18 (0x40000)
 
| 18 (0x40000)
 
| 0x10147028
 
| 0x10147028
 
| 0
 
| 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
 +
| ?
 +
| ?
 +
|-
 +
| 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.
 
|}
 
|}
215

edits

Navigation menu