GPIO Registers: Difference between revisions
Updated some rtc regs |
|||
(14 intermediate revisions by 2 users not shown) | |||
Line 4: | Line 4: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Old3DS | |||
! Name | ! Name | ||
! Address | ! Address | ||
! Width | ! Width | ||
|- | |- | ||
| | | style="background: green" | Yes | ||
| [[#GPIOn_DATA|GPIO1_DATA]] | |||
| 0x10147000 | | 0x10147000 | ||
| | | 1 | ||
| | |- | ||
| style="background: green" | Yes | |||
| [[#GPIOn_DATA|GPIO2_DATA]] | |||
| 0x10147010 | |||
| 1 | |||
|- | |||
| style="background: green" | Yes | |||
| [[#GPIOn_DIR|GPIO2_DIR]] | |||
| 0x10147011 | |||
| 1 | |||
|- | |||
| style="background: green" | Yes | |||
| [[#GPIOn_INTCFG|GPIO2_INTCFG]] | |||
| 0x10147012 | |||
| 1 | |||
|- | |- | ||
| | | style="background: green" | Yes | ||
| [[# | | [[#GPIOn_INTEN|GPIO2_INTEN]] | ||
| | | 0x10147013 | ||
| | | 1 | ||
|- | |- | ||
| | | style="background: green" | Yes | ||
| [[#GPIOn_DATA2|GPIO2_DATA2]] | |||
| 0x10147014 | | 0x10147014 | ||
| 2 | | 2 | ||
|- | |- | ||
| | | style="background: green" | Yes | ||
| [[#GPIOn_DATA|GPIO3_DATA]] | |||
| 0x10147020 | | 0x10147020 | ||
| 2 | | 2 | ||
|- | |- | ||
| | | style="background: green" | Yes | ||
| [[#GPIOn_DIR|GPIO3_DIR]] | |||
| 0x10147022 | | 0x10147022 | ||
| 2 | | 2 | ||
|- | |- | ||
| | | style="background: green" | Yes | ||
| [[#GPIOn_INTCFG|GPIO3_INTCFG]] | |||
| 0x10147024 | | 0x10147024 | ||
| 2 | | 2 | ||
|- | |- | ||
| | | style="background: green" | Yes | ||
| [[# | | [[#GPIOn_INTEN|GPIO3_INTEN]] | ||
| 0x10147026 | |||
| 2 | | 2 | ||
|- | |- | ||
| | | style="background: green" | Yes | ||
| [[#GPIOn_DATA2|GPIO3_DATA2]] | |||
| 0x10147028 | | 0x10147028 | ||
| 2 | | 2 | ||
| | |- | ||
|} | |} | ||
Line 57: | Line 73: | ||
! Description | ! Description | ||
|- | |- | ||
| | | [[#RTC_CNT_(0x10147100)|RTC_CNT]] | ||
| 0x10147100 | | 0x10147100 | ||
| 2 | | 2 | ||
| | | Control register | ||
|- | |- | ||
| RTC_REG_STAT1 | | RTC_REG_STAT1 | ||
Line 71: | Line 87: | ||
| 1 | | 1 | ||
| Rtc status register 2 (command 1). Bitswapped | | Rtc status register 2 (command 1). Bitswapped | ||
|- | |||
| RTC_REG_CLKADJ | |||
| 0x10147112 | |||
| 1 | |||
| Rtc clock adjustment register (command 6). Bitswapped | |||
|- | |- | ||
| RTC_REG_FREE | | RTC_REG_FREE | ||
Line 77: | Line 98: | ||
| The free general purpose rtc register (command 7). Bitswapped | | The free general purpose rtc register (command 7). Bitswapped | ||
|- | |- | ||
| | | RTC_REG_TIME1 | ||
| 0x10147120 | | 0x10147120 | ||
| 4 | | 4 | ||
| Byte-wise bit-swapped (bit7 is bit0, etc.) BCD RTC (byte0 = seconds, byte1 = minutes, byte2 = hours, byte3 = day | | Byte-wise bit-swapped (bit7 is bit0, etc.) BCD RTC (byte0 = seconds, byte1 = minutes, byte2 = hours, byte3 = day of week) | ||
|- | |- | ||
| | | RTC_REG_TIME2 | ||
| 0x10147124 | | 0x10147124 | ||
| 4 | | 4 (3?) | ||
| | | Day, month and year all byte-wise bit-swapped | ||
|- | |- | ||
| | | RTC_REG_ALRMTIM1 | ||
| 0x10147130 | | 0x10147130 | ||
| 4 | | 4 (3?) | ||
| | | Rtc alarm time register 1 (command 4). Byte-wise bit-swapped | ||
|- | |- | ||
| | | RTC_REG_ALRMTIM2 | ||
| 0x10147134 | | 0x10147134 | ||
| 4 | | 4 (3?) | ||
| | | Rtc alarm time register 2 (command 5). Byte-wise bit-swapped | ||
|- | |- | ||
| | | RTC_REG_COUNT | ||
| 0x10147140 | | 0x10147140 | ||
| 4 | | 4 (3?) | ||
| | | Rtc dsi counter register (ex command 0). Byte-wise bit-swapped | ||
|- | |- | ||
| | | RTC_REG_FOUT1 | ||
| 0x10147150 | | 0x10147150 | ||
| 1 | | 1 | ||
| | | Rtc dsi fout register 1 (ex command 1). Bitswapped | ||
|- | |- | ||
| | | RTC_REG_FOUT2 | ||
| 0x10147151 | | 0x10147151 | ||
| 1 | | 1 | ||
| | | Rtc dsi fout register 2 (ex command 2). Bitswapped | ||
|- | |- | ||
| | | RTC_REG_ALRMDAT1 | ||
| 0x10147160 | | 0x10147160 | ||
| 4 | | 4 (3?) | ||
| | | Rtc dsi alarm date register 1 (ex command 4). Byte-wise bit-swapped | ||
|- | |- | ||
| | | RTC_REG_ALRMDAT2 | ||
| 0x10147164 | | 0x10147164 | ||
| 4 | | 4 (3?) | ||
| | | Rtc dsi alarm date register 2 (ex command 5). Byte-wise bit-swapped | ||
|- | |- | ||
|} | |} | ||
Line 126: | Line 147: | ||
= Descriptions = | = Descriptions = | ||
== | == GPIO == | ||
=== GPIO pins === | |||
Only GPIO2 and GPIO3 pins have their interrupts configurable. Active low pins should be configured as "falling edge", and output ports shouldn't have interrupts enabled at all. | |||
[[GPIO Services]] bitmasks use this table, in that order: | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Bit | ! Bit | ||
! IRQ ID | |||
! Description | ! Description | ||
|- | |- | ||
| 0 | | 0 | ||
| ? | | ? | ||
| Debug button (?) (active-low) | |||
|- | |- | ||
| | | 1 | ||
| | | 0x63 (falling edge) | ||
| Touch Screen (active low, 0 = screen pressed) | |||
|- | |- | ||
| | | 2 | ||
| | | 0x60 (falling edge) | ||
| | 0x62 (rising edge) | ||
| Shell closed | |||
|-style="border-top: double" | |||
| 0 | |||
| 0x64 | |||
| Headphones inserted | |||
|- | |- | ||
| 0- | | 1 | ||
| | | 0x66 | ||
| TWL depop circuit (?) (active-low) | |||
|-style="border-top: double" | |||
| DATA2.0 | |||
| - | |||
| WiFi mode/freq. select (0 = CTR, 1 = MP (DS WiFi)) | |||
|-style="border-top: double" | |||
| 0 | |||
| 0x68 | |||
| C-stick interrupt | |||
|- | |- | ||
| 1 | | 1 | ||
| | | 0x69 | ||
| IrDA interrupt (active-low) | |||
|- | |||
| 2 | |||
| 0x6A | |||
| Gyro interrupt | |||
|- | |- | ||
| 3 | | 3 | ||
| | | 0x6B | ||
| C-stick "stop" (output) | |||
|- | |- | ||
| 4 | | 4 | ||
| | | 0x6C | ||
| IrDA TX-RC (output) | |||
|- | |||
| 5 | |||
| 0x6D | |||
| IrDA RXD (active-low) | |||
|- | |||
| 6 | |||
| 0x6E | |||
| NFC output1 (?) | |||
|- | |||
| 7 | |||
| 0x6F | |||
| NFC output2 (?) | |||
|- | |- | ||
| | | 8 | ||
| | | 0x70 | ||
| | | Headphones button/half-inserted (active-low) | ||
|- | |||
| 9 | |||
| 0x71 | |||
| MCU interrupt | |||
|- | |||
| 10 | |||
| 0x72 | |||
| NFC interrupt (?) | |||
|- | |- | ||
| | | 11 | ||
| | | 0x73 | ||
| QTM output (?) | |||
|- | |- | ||
| | |-style="border-top: double" | ||
| | | DATA2.0 | ||
| - | |||
| WiFi enable | |||
|} | |} | ||
=== | === GPIOn_DATA === | ||
Pin values, one bit per pin. | |||
=== GPIOn_DIR === | |||
Pin directions for GPIO2 and GPIO3, one bit per pin. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | ! Value | ||
! Description | ! Description | ||
|- | |- | ||
| 0 | | 0 | ||
| | | Input | ||
|- | |- | ||
| 1 | | 1 | ||
| | | Output | ||
|} | |} | ||
=== | === GPIOn_INTCFG === | ||
Interrupt configuration for GPIO2 and GPIO3 pins (not the extra ones), one bit per pin. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | ! Value | ||
! Description | ! Description | ||
|- | |- | ||
| 0 | | 0 | ||
| | | Falling edge | ||
|- | |- | ||
| | | 1 | ||
| | | Rising edge | ||
|} | |} | ||
=== | === GPIOn_INTEN === | ||
Interrupt enable bits for GPIO2 and GPIO3 pins (not the extra ones), one bit per pin. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | ! Value | ||
! Description | ! Description | ||
|- | |- | ||
| 0 | | 0 | ||
| | | Interrupt disabled | ||
|- | |- | ||
| 1 | | 1 | ||
| | | Interrupt enabled | ||
|} | |} | ||
= | === GPIOn_DATA2 === | ||
Extra pins for GPIO2 and GPIO3 (one bit each). These two pins, in total, are not bound to any IRQ and are not configurable. | |||
=== Default values === | |||
After bootrom initialization, these are the values of the registers: | After bootrom initialization, these are the values of the registers: | ||
Line 251: | Line 310: | ||
| 0x10147028 | | 0x10147028 | ||
| 0x0000 | | 0x0000 | ||
|} | |||
== Legacy RTC == | |||
=== RTC_CNT (0x10147100) === | |||
{| class="wikitable" border="1" | |||
! Bit | |||
! Description | |||
|- | |||
| 0 | |||
| Latch STAT1 | |||
|- | |||
| 1 | |||
| Latch STAT2 | |||
|- | |||
| 2 | |||
| Latch CLKADJ | |||
|- | |||
| 3 | |||
| Latch FREE | |||
|- | |||
| 4 | |||
| Latch TIME | |||
|- | |||
| 5 | |||
| Latch ALRMTIM1 | |||
|- | |||
| 6 | |||
| Latch ALRMTIM2 | |||
|- | |||
| 7 | |||
| Latch COUNT | |||
|- | |||
| 8 | |||
| Latch FOUT1 | |||
|- | |||
| 9 | |||
| Latch FOUT2 | |||
|- | |||
| 10 | |||
| Latch ALRMDAT1 | |||
|- | |||
| 11 | |||
| Latch ALRMDAT2 | |||
|- | |||
| 12 | |||
| ARM7 Busy? This may be chipselect | |||
|- | |||
| 13 | |||
| ARM7 write command received? (writing 1 clears it seems) | |||
|- | |||
| 14 | |||
| ARM7 read command recieved? (writing 1 clears it seems) | |||
|- | |||
| 15 | |||
| DS SIO SI pin (rtc irq pin) | |||
|} | |} |