PDN Registers: Difference between revisions

m typo fix
Small cleanup
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