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. |
| |} | | |} |