Line 4: |
Line 4: |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| + | ! Old3DS |
| ! Name | | ! Name |
| ! Address | | ! Address |
| ! Width | | ! Width |
− | ! GPIO [[GPIO_Services|bitmasks]] associated with this register
| |
| |- | | |- |
− | | GPIO_DATA0 | + | | style="background: green" | Yes |
| + | | [[#GPIOn_DATA|GPIO1_DATA]] |
| | 0x10147000 | | | 0x10147000 |
− | | 2 | + | | 1 |
− | | 0x1, 0x2, 0x4 | + | |- |
| + | | 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 |
| |- | | |- |
− | | GPIO_DATA1 | + | | style="background: green" | Yes |
− | | [[#0x10147010|0x10147010]] | + | | [[#GPIOn_INTEN|GPIO2_INTEN]] |
− | | 4 | + | | 0x10147013 |
− | | 0x8, 0x10 | + | | 1 |
| |- | | |- |
− | | GPIO_DATA2 | + | | style="background: green" | Yes |
| + | | [[#GPIOn_DATA2|GPIO2_DATA2]] |
| | 0x10147014 | | | 0x10147014 |
| | 2 | | | 2 |
− | | 0x20
| |
| |- | | |- |
− | | GPIO_DATA3 | + | | style="background: green" | Yes |
| + | | [[#GPIOn_DATA|GPIO3_DATA]] |
| | 0x10147020 | | | 0x10147020 |
| | 2 | | | 2 |
− | | 0x40, 0x80, 0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000, 0x4000, 0x8000, 0x10000, 0x20000
| |
| |- | | |- |
− | | GPIO_DATA3_INTERRUPT_CLEAR | + | | style="background: green" | Yes |
| + | | [[#GPIOn_DIR|GPIO3_DIR]] |
| | 0x10147022 | | | 0x10147022 |
| | 2 | | | 2 |
− | | 0x40, 0x80, 0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000, 0x4000, 0x8000, 0x10000, 0x20000
| |
| |- | | |- |
− | | ?? | + | | style="background: green" | Yes |
| + | | [[#GPIOn_INTCFG|GPIO3_INTCFG]] |
| | 0x10147024 | | | 0x10147024 |
| | 2 | | | 2 |
− | | 0x40, 0x80, 0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000, 0x4000, 0x8000, 0x10000, 0x20000
| |
| |- | | |- |
− | | ? | + | | style="background: green" | Yes |
− | | [[#0x10147026|0x10147026]] | + | | [[#GPIOn_INTEN|GPIO3_INTEN]] |
| + | | 0x10147026 |
| | 2 | | | 2 |
− | | ?
| |
| |- | | |- |
− | | GPIO_DATA4 | + | | style="background: green" | Yes |
| + | | [[#GPIOn_DATA2|GPIO2_DATA2]] |
| | 0x10147028 | | | 0x10147028 |
| | 2 | | | 2 |
− | | 0x40000 | + | |- |
| |} | | |} |
| | | |
Line 131: |
Line 147: |
| = Descriptions = | | = Descriptions = |
| | | |
− | == 0x10147010 == | + | == GPIO == |
| + | === GPIO pins === |
| | | |
− | {| class="wikitable" border="1"
| + | [[GPIO services]] bitmasks use this table, in that order: |
− | ! Bit
| |
− | ! Description
| |
− | |-
| |
− | | 24
| |
− | | Enable/disable? GPIO interrupt 0x64 (bitmask 0x8)
| |
− | |-
| |
− | | 25
| |
− | | Enable/disable? GPIO interrupt 0x66 (bitmask 0x10)
| |
− | |}
| |
− | | |
− | == 0x10147026 ==
| |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Bit | | ! Bit |
| + | ! IRQ ID |
| ! Description | | ! Description |
| |- | | |- |
− | | 0-8 | + | | 0 |
| | ? | | | ? |
| + | | GPIO1_0 (?) |
| |- | | |- |
− | | 9 | + | | 1 |
− | | Enable/disable interrupt 0x71. | + | | 0x63 |
| + | | Touch Pen down |
| |- | | |- |
− | | 10-15 | + | | 2 |
− | | ? | + | | 0x60 |
− | |} | + | | Shell closed |
− | | + | |-style="border-top: double" |
− | == GPIO_DATA ==
| + | | 0 |
− | | + | | 0x64 |
− | === GPIO_DATA0 ===
| + | | Headphones inserted |
− | {| class="wikitable" border="1"
| |
− | ! Bit
| |
− | ! Description
| |
| |- | | |- |
− | | 0-2 | + | | 1 |
− | | Used for GPIO [[GPIO_Services|bitmask]] 0x7. | + | | 0x66 |
| + | | GPIO2_1 (?) |
| + | |-style="border-top: double" |
| + | | DATA2.0 |
| + | | - |
| + | | GPIO2_DATA2_0 (wifi related?) |
| + | |-style="border-top: double" |
| + | | 0 |
| + | | 0x68 |
| + | | C-stick |
| |- | | |- |
| | 1 | | | 1 |
− | | DS EXTKEYIN Pen down (0 = touching, 1 = not touching) | + | | 0x69 |
| + | | IrDA |
| + | |- |
| + | | 2 |
| + | | 0x6A |
| + | | Gyro |
| |- | | |- |
| | 3 | | | 3 |
− | | Unused by GPIO-sysmodule and TwlBg. | + | | 0x6B |
| + | | GPIO3_3 (?) |
| |- | | |- |
| | 4 | | | 4 |
− | | Only used by [[Bootloader|Boot11]]. | + | | 0x6C |
| + | | GPIO3_4 (?) |
| |- | | |- |
− | | 5-15 | + | | 5 |
− | | Unused by GPIO-sysmodule and TwlBg. | + | | 0x6D |
| + | | GPIO3_5 (?) |
| + | |- |
| + | | 6 |
| + | | 0x6E |
| + | | GPIO3_6 (?) |
| + | |- |
| + | | 7 |
| + | | 0x6F |
| + | | GPIO3_7 (?) |
| + | |- |
| + | | 8 |
| + | | 0x70 |
| + | | GPIO3_8 (?) |
| + | |- |
| + | | 9 |
| + | | 0x71 |
| + | | MCU |
| + | |- |
| + | | 10 |
| + | | 0x72 |
| + | | NFC |
| + | |- |
| + | | 11 |
| + | | 0x73 |
| + | | GPIO3_11 (?) |
| + | |- |
| + | |-style="border-top: double" |
| + | | DATA2.0 |
| + | | - |
| + | | GPIO3_DATA2_0 (wifi related?) |
| |} | | |} |
| | | |
− | === GPIO_DATA1 === | + | === 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" |
− | ! Bit | + | ! Value |
| ! Description | | ! Description |
| |- | | |- |
− | | 0-1 | + | | 0 |
− | | Used for GPIO [[GPIO_Services|bitmask]] 0x18. | + | | Input |
| |- | | |- |
− | | 2-31 | + | | 1 |
− | | Unused by GPIO-sysmodule and TwlBg. | + | | Output |
| |} | | |} |
| | | |
− | === GPIO_DATA2 === | + | === 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" |
− | ! Bit | + | ! Value |
| ! Description | | ! Description |
| |- | | |- |
| | 0 | | | 0 |
− | | Used for GPIO [[GPIO_Services|bitmask]] 0x20. | + | | Falling edge |
| |- | | |- |
− | | 1-15 | + | | 1 |
− | | Unused by GPIO-sysmodule and TwlBg. | + | | Rising edge |
| |} | | |} |
| | | |
− | === GPIO_DATA3 === | + | === 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" |
− | ! Bit | + | ! Value |
| ! Description | | ! Description |
| |- | | |- |
− | | 0-11 | + | | 0 |
− | | Used for GPIO [[GPIO_Services|bitmask]] 0x3FFC0. | + | | Interrupt disabled |
| |- | | |- |
− | | 12-31 | + | | 1 |
− | | Unused by GPIO-sysmodule and TwlBg. | + | | Interrupt enabled |
| |} | | |} |
| | | |
− | === GPIO_DATA4 === | + | === 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: |
| + | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
− | ! Bit | + | ! Address |
− | ! Description | + | ! Value |
| + | |- |
| + | | 0x10147000 |
| + | | 0x0003 |
| + | |- |
| + | | 0x10147010 |
| + | | 0x00000002 |
| + | |- |
| + | | 0x10147014 |
| + | | 0x0000 |
| + | |- |
| + | | 0x10147020 |
| + | | 0x00000DFB |
| |- | | |- |
− | | 0 | + | | 0x10147024 |
− | | Used for GPIO [[GPIO_Services|bitmask]] 0x40000. | + | | 0x00000000 |
| |- | | |- |
− | | 1-15 | + | | 0x10147028 |
− | | Unused by GPIO-sysmodule and TwlBg. | + | | 0x0000 |
| |} | | |} |
| | | |
Line 284: |
Line 362: |
| | 15 | | | 15 |
| | DS SIO SI pin (rtc irq pin) | | | DS SIO SI pin (rtc irq pin) |
− | |}
| |
− |
| |
− | = Default values =
| |
− |
| |
− | After bootrom initialization, these are the values of the registers:
| |
− |
| |
− | {| class="wikitable" border="1"
| |
− | ! Address
| |
− | ! Value
| |
− | |-
| |
− | | 0x10147000
| |
− | | 0x0003
| |
− | |-
| |
− | | 0x10147010
| |
− | | 0x00000002
| |
− | |-
| |
− | | 0x10147014
| |
− | | 0x0000
| |
− | |-
| |
− | | 0x10147020
| |
− | | 0x00000DFB
| |
− | |-
| |
− | | 0x10147024
| |
− | | 0x00000000
| |
− | |-
| |
− | | 0x10147028
| |
− | | 0x0000
| |
| |} | | |} |