Line 8: |
Line 8: |
| |- | | |- |
| | style="background: green" | Yes | | | style="background: green" | Yes |
− | | [[#PDN_CNT|PDN_CNT]] | + | | [[#PDN_SLEEP_CNT|PDN_SLEEP_CNT]] |
| | 0x10141000 | | | 0x10141000 |
| | 2 | | | 2 |
− | | Kernel11, TwlBg | + | | Kernel11 |
| |- | | |- |
| | style="background: green" | Yes | | | style="background: green" | Yes |
Line 129: |
Line 129: |
| |-style="border-top: double" | | |-style="border-top: double" |
| | style="background: red" | No | | | style="background: red" | No |
− | | [[#PDN_MPCORE_SOCMODE|PDN_MPCORE_SOCMODE]] | + | | [[#PDN_LGR_SOCMODE|PDN_LGR_SOCMODE]] |
| | 0x10141300 | | | 0x10141300 |
| | 2 | | | 2 |
Line 135: |
Line 135: |
| |- | | |- |
| | style="background: red" | No | | | style="background: red" | No |
− | | [[#PDN_MPCORE_CNT|PDN_MPCORE_CNT]] | + | | [[#PDN_LGR_CNT|PDN_LGR_CNT]] |
| | 0x10141304 | | | 0x10141304 |
| | 2 | | | 2 |
Line 141: |
Line 141: |
| |- | | |- |
| | style="background: red" | No | | | style="background: red" | No |
− | | [[#PDN_MPCORE_BOOTCNT<0-3>|PDN_MPCORE_BOOTCNT]]<0-3> | + | | [[#PDN_LGR_CPU_CNT<0-3>|PDN_LGR_CPU_CNT]]<0-3> |
| | 0x10141310 | | | 0x10141310 |
| | 1*4 | | | 1*4 |
Line 147: |
Line 147: |
| |} | | |} |
| | | |
− | ==PDN_CNT== | + | ==PDN_SLEEP_CNT== |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Bits | | ! Bits |
Line 159: |
Line 159: |
| |- | | |- |
| | 15 | | | 15 |
− | | 1 = VRAM is in self-refresh mode | + | | 1 = VRAM is powered down |
| |} | | |} |
| | | |
− | Kernel11 puts VRAM in self-refresh mode (before going to sleep) by first disabling the 8 banks using [[GPU/External_Registers#Map|GX register 0x10400030]], then by disabling the GPU clock using [[#PDN_GPU_CNT|PDN_GPU_CNT]] bit 16 and finally polls this register. | + | Kernel11 powers down VRAM (it's unclear whether bit15 is power-down or self-refresh mode) by first disabling the 8 banks using [[GPU/External_Registers#Map|GX register 0x10400030]], then by disabling the GPU clock using [[#PDN_GPU_CNT|PDN_GPU_CNT]] bit 16 and finally writes to and polls this register. |
| | | |
| ==PDN_WAKE_ENABLE== | | ==PDN_WAKE_ENABLE== |
Line 204: |
Line 204: |
| | | |
| For each bit, write 1 to acknowledge, and 0 to clear (?). | | For each bit, write 1 to acknowledge, and 0 to clear (?). |
− |
| |
− | ==PDN_WIFICNT==
| |
− | {| class="wikitable" border="1"
| |
− | ! Old3DS
| |
− | ! Bits
| |
− | ! Description
| |
− | |-
| |
− | | style="background: green" | Yes
| |
− | | 0
| |
− | | Enable wifi subsystem
| |
− | |}
| |
| | | |
| ==LGY_MODE== | | ==LGY_MODE== |
Line 360: |
Line 349: |
| PDN services holds reset for 0x30 Arm11 cycles. | | PDN services holds reset for 0x30 Arm11 cycles. |
| | | |
− | == PDN_MPCORE_SOCMODE == | + | == PDN_LGR_SOCMODE == |
| This is used for configuring the New3DS ARM11 CPU clock-rate. This register is New3DS-only: reading from here on Old3DS always returns all-zeros even when one tried writing data here prior to the read. | | This is used for configuring the New3DS ARM11 CPU clock-rate. This register is New3DS-only: reading from here on Old3DS always returns all-zeros even when one tried writing data here prior to the read. |
| | | |
Line 443: |
Line 432: |
| * 0x1F, 0x2F, 0x4F, 0x8F, 0xFF: Same result as 0x05. | | * 0x1F, 0x2F, 0x4F, 0x8F, 0xFF: Same result as 0x05. |
| | | |
− | == PDN_MPCORE_CNT == | + | == PDN_LGR_CNT == |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Bits | | ! Bits |
Line 455: |
Line 444: |
| |} | | |} |
| | | |
− | Kernel11 sets this to 0x101 when bit 2 in [[CONFIG11 Registers#CFG11_SOCINFO|CFG11_SOCINFO]] is set otherwise 1. | + | Kernel11 sets this to 0x101 when bit 2 in [[CONFIG11 Registers#CFG11_SOCINFO|CFG11_SOCINFO]] (LGR2 supported) is set otherwise 1. |
| | | |
− | == PDN_MPCORE_BOOTCNT<0-3> == | + | == PDN_LGR_CPU_CNT<0-3> == |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Bits | | ! Bits |