GPIO Services: Difference between revisions
		
		
		
		Jump to navigation
		Jump to search
		
| TimmSkiller (talk | contribs) | |||
| (13 intermediate revisions by 6 users not shown) | |||
| Line 41: | Line 41: | ||
| !  Uses [[GPIO_Registers|GPIO Regs]] | !  Uses [[GPIO_Registers|GPIO Regs]] | ||
| |- | |- | ||
| |  | | 0x00010040 | ||
| |  | | u32 GetRegPart1(u32 mask) | ||
| | 0x10147010, 0x10147020 | | 0x10147010, 0x10147020 | ||
| |- | |- | ||
| | 0x00020080 | | 0x00020080 | ||
| |  | | void SetRegPart1(u32 value, u32 mask) | ||
| | 0x10147010, 0x10147020 | | 0x10147010, 0x10147020 | ||
| |- | |- | ||
| |  | | 0x00030040 | ||
| |  | | u32 GetRegPart2(u32 mask) | ||
| | 0x10147010, 0x10147024 | | 0x10147010, 0x10147024 | ||
| |- | |- | ||
| | 0x00040080 | | 0x00040080 | ||
| |  | | u32 SetRegPart2(u32 value, u32 mask) | ||
| | 0x10147010, 0x10147024 | | 0x10147010, 0x10147024 | ||
| |- | |- | ||
| |  | | 0x00050040 | ||
| |  | | u32 GetInterruptMask(u32 mask) | ||
| | 0x10147010, 0x10147024 | | 0x10147010, 0x10147024 | ||
| |- | |- | ||
| | 0x00060080 | | 0x00060080 | ||
| |  | | void SetInterruptMask(u32 value, u32 mask) | ||
| | 0x10147010, 0x10147024 | | 0x10147010, 0x10147024 | ||
| |- | |- | ||
| | 0x00070040 | | 0x00070040 | ||
| |  | | [[GPIO:GetGPIOData|GetGPIOData]] | ||
| | 0x10147000, 0x10147010, 0x10147014, 0x10147020, 0x10147028 | | 0x10147000, 0x10147010, 0x10147014, 0x10147020, 0x10147028 | ||
| |- | |- | ||
| | 0x00080080 | | 0x00080080 | ||
| |  | | [[GPIO:SetGPIOData|SetGPIOData]] | ||
| | 0x10147010, 0x10147014, 0x10147020, 0x10147028 | | 0x10147010, 0x10147014, 0x10147020, 0x10147028 | ||
| |- | |- | ||
| Line 83: | Line 83: | ||
| =GPIO Bitmask= | =GPIO Bitmask= | ||
| The bitmask used by  | 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 90: | 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 | |||
| |} | |} | ||
| Line 124: | Line 130: | ||
| | 0x1 | | 0x1 | ||
| | gpio:HID | | gpio:HID | ||
| |  | | HID-sysmodule | ||
| |  | | Used with [[HID_Shared_Memory|HID]] PAD state. | ||
| |- | |- | ||
| | 1 | | 1 | ||
| Line 131: | Line 137: | ||
| | None | | None | ||
| |   | |   | ||
| |   | | Not known to be used by ''anything'', with the latest system-version at least. | ||
| |- | |- | ||
| | 2 | | 2 | ||
| Line 137: | Line 143: | ||
| | None | | None | ||
| |   | |   | ||
| |   | | Not known to be used by ''anything'', with the latest system-version at least. | ||
| |- | |- | ||
| | 3 | | 3 | ||
| Line 149: | Line 155: | ||
| | None | | None | ||
| |   | |   | ||
| |   | | Not known to be used by ''anything'', with the latest system-version at least. | ||
| |- | |- | ||
| | 5 | | 5 | ||
| | 0x20 | | 0x20 | ||
| | gpio:MCU, gpio:NWM | | gpio:MCU, gpio:NWM | ||
| |  | | NWM-sysmodule, MCU-sysmodule | ||
| | ? | | WiFi mode. 0 = CTR, 1 = "MP" (DS WiFi?) | ||
| |- | |- | ||
| | 6 | | 6 | ||
| Line 166: | Line 172: | ||
| | 0x80 | | 0x80 | ||
| | gpio:IR | | gpio:IR | ||
| |  | | Boot11 | ||
| | ? | | ? | ||
| |- | |- | ||
| Line 172: | Line 178: | ||
| | 0x100 | | 0x100 | ||
| | gpio:HID | | gpio:HID | ||
| |  | | HID sysmodule | ||
| |  | | Used with gyroscope | ||
| |- | |- | ||
| | 9 | | 9 | ||
| | 0x200 | | 0x200 | ||
| | gpio:HID, gpio:IR | | gpio:HID, gpio:IR | ||
| |  | | HID-sysmodule and IR-sysmodule | ||
| |  | | Unknown, used with ir:rst. | ||
| |- | |- | ||
| | 10 | | 10 | ||
| | 0x400 | | 0x400 | ||
| | gpio:IR | | gpio:IR | ||
| |  | | IR-sysmodule, Boot11 | ||
| |  | | IR [[IRU:SetIRLEDState|send]]. 1 = IR LED enable, 0 = IR LED disable. | ||
| |- | |- | ||
| | 11 | | 11 | ||
| | 0x800 | | 0x800 | ||
| | gpio:IR | | gpio:IR | ||
| |  | | IR-sysmodule | ||
| |  | | IR [[IRU:GetIRLEDRecvState|receive]] | ||
| |- | |- | ||
| | 12 | | 12 | ||
| Line 208: | Line 214: | ||
| | 0x4000 | | 0x4000 | ||
| | gpio:HID | | gpio:HID | ||
| |  | | HID-sysmodule | ||
| |  | | Used with [[HID_Shared_Memory|HID]]  PAD state. | ||
| |- | |- | ||
| | 15 | | 15 | ||
| | 0x8000 | | 0x8000 | ||
| | gpio:MCU | | gpio:MCU | ||
| |  | | MCU-sysmodule | ||
| |  | | MCU Interrupt. | ||
| |- | |- | ||
| | 16 | | 16 | ||
| Line 232: | Line 238: | ||
| | 0x40000 | | 0x40000 | ||
| | gpio:MCU, gpio:NWM | | gpio:MCU, gpio:NWM | ||
| |  | | NWM-sysmodule, MCU-sysmodule | ||
| |  | | Wifi enable. 1=Enabled, 0=Disabled. | ||
| |} | |} | ||
Latest revision as of 12:50, 15 September 2025
GPIO Service Names
| Service name | Permitted GPIO 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 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.
GPIO Services
| Command Header | Description | Uses GPIO Regs | 
|---|---|---|
| 0x00010040 | u32 GetRegPart1(u32 mask) | 0x10147010, 0x10147020 | 
| 0x00020080 | void SetRegPart1(u32 value, u32 mask) | 0x10147010, 0x10147020 | 
| 0x00030040 | u32 GetRegPart2(u32 mask) | 0x10147010, 0x10147024 | 
| 0x00040080 | u32 SetRegPart2(u32 value, u32 mask) | 0x10147010, 0x10147024 | 
| 0x00050040 | u32 GetInterruptMask(u32 mask) | 0x10147010, 0x10147024 | 
| 0x00060080 | void SetInterruptMask(u32 value, u32 mask) | 0x10147010, 0x10147024 | 
| 0x00070040 | GetGPIOData | 0x10147000, 0x10147010, 0x10147014, 0x10147020, 0x10147028 | 
| 0x00080080 | SetGPIOData | 0x10147010, 0x10147014, 0x10147020, 0x10147028 | 
| 0x00090082 | BindInterrupt | None | 
| 0x000A0042 | UnbindInterrupt | None | 
GPIO Bitmask
The bitmask used by the service commands determines which bits in the GPIO registers to access. The output value from 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.
| 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
| Bit | Bitmask | Accessible via GPIO service | Used by | Description | 
|---|---|---|---|---|
| 0 | 0x1 | gpio:HID | HID-sysmodule | Used with 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 | NWM-sysmodule, MCU-sysmodule | WiFi mode. 0 = CTR, 1 = "MP" (DS WiFi?) | 
| 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 send. 1 = IR LED enable, 0 = IR LED disable. | 
| 11 | 0x800 | gpio:IR | IR-sysmodule | IR receive | 
| 12 | 0x1000 | gpio:NFC | ? | ? | 
| 13 | 0x2000 | gpio:NFC | ? | ? | 
| 14 | 0x4000 | gpio:HID | HID-sysmodule | Used with HID PAD state. | 
| 15 | 0x8000 | gpio:MCU | MCU-sysmodule | MCU Interrupt. | 
| 16 | 0x10000 | gpio:NFC | ? | ? | 
| 17 | 0x20000 | gpio:QTM | ? | ? | 
| 18 | 0x40000 | gpio:MCU, gpio:NWM | NWM-sysmodule, MCU-sysmodule | Wifi enable. 1=Enabled, 0=Disabled. |