GPIO Services: Difference between revisions
m →GPIO Bits: 0x100->Gyroscope |
|||
(23 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:Services]] | [[Category:Services]] | ||
= GPIO Service Names = | = GPIO Service Names = | ||
{| class="wikitable" border="1" | |||
|- | |||
! 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 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 = | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Command Header | ! Command Header | ||
! Description | ! Description | ||
! Uses [[GPIO_Registers|GPIO Regs]] | |||
|- | |||
| 0x00010040 | |||
| u32 GetRegPart1(u32 mask) | |||
| 0x10147010, 0x10147020 | |||
|- | |- | ||
| 0x00020080 | | 0x00020080 | ||
| u32 | | void SetRegPart1(u32 value, u32 mask) | ||
| 0x10147010, 0x10147020 | |||
|- | |||
| 0x00030040 | |||
| u32 GetRegPart2(u32 mask) | |||
| 0x10147010, 0x10147024 | |||
|- | |- | ||
| 0x00040080 | | 0x00040080 | ||
| u32 | | u32 SetRegPart2(u32 value, u32 mask) | ||
| 0x10147010, 0x10147024 | |||
|- | |||
| 0x00050040 | |||
| u32 GetInterruptMask(u32 mask) | |||
| 0x10147010, 0x10147024 | |||
|- | |- | ||
| 0x00060080 | | 0x00060080 | ||
| u32 | | void SetInterruptMask(u32 value, u32 mask) | ||
| 0x10147010, 0x10147024 | |||
|- | |- | ||
| 0x00070040 | | 0x00070040 | ||
| | | [[GPIO:GetGPIOData|GetGPIOData]] | ||
| 0x10147000, 0x10147010, 0x10147014, 0x10147020, 0x10147028 | |||
|- | |||
| 0x00080080 | |||
| [[GPIO:SetGPIOData|SetGPIOData]] | |||
| 0x10147010, 0x10147014, 0x10147020, 0x10147028 | |||
|- | |||
| 0x00090082 | |||
| [[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" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Bit | ||
! Bitmask | |||
! Accessible via GPIO service | |||
! Used by | |||
! Description | ! 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. | |||
|} | |} |