GPIO Services: Difference between revisions
| No edit summary | TimmSkiller (talk | contribs) | ||
| (15 intermediate revisions by 6 users not shown) | |||
| Line 4: | Line 4: | ||
| |- | |- | ||
| !  Service name | !  Service name | ||
| !  Permitted  | !  Permitted GPIO bitmasks | ||
| |- | |- | ||
| | gpio:CDC | | gpio:CDC | ||
| Line 28: | Line 28: | ||
| |} | |} | ||
| For the mapping between  | 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]] | ||
| |- | |- | ||
| |  | | 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 81: | 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 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 | |||
| | 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 [[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 | |||
| | 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. | |||
| |} | |} | ||