NDMA Registers: Difference between revisions
No edit summary |
Add device to device modes |
||
| (6 intermediate revisions by 4 users not shown) | |||
| Line 1: | Line 1: | ||
3DS NDMA has 8 channels. The first 0x100-bytes of this IO mem is mirrored at 0x10002100, repeated every 0x100-bytes until the end of the 0x1000-byte IO mem. NDMA can access the | 3DS NDMA has 8 channels. The first 0x100-bytes of this IO mem is mirrored at 0x10002100, repeated every 0x100-bytes until the end of the 0x1000-byte IO mem. NDMA can access the Arm9 bootrom, including the protected part before it is locked out. | ||
= Registers = | = Registers = | ||
| Line 13: | Line 13: | ||
| 0x10002000 | | 0x10002000 | ||
| 4 | | 4 | ||
| | | Boot9, Kernel9 | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| Line 19: | Line 19: | ||
| 0x10002004 + (n*0x1c) | | 0x10002004 + (n*0x1c) | ||
| 4 | | 4 | ||
| | | Boot9, Kernel9 | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| Line 25: | Line 25: | ||
| 0x10002008 + (n*0x1c) | | 0x10002008 + (n*0x1c) | ||
| 4 | | 4 | ||
| | | Boot9, Kernel9 | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| Line 31: | Line 31: | ||
| 0x1000200c + (n*0x1c) | | 0x1000200c + (n*0x1c) | ||
| 4 | | 4 | ||
| | | Boot9, Kernel9 | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| Line 37: | Line 37: | ||
| 0x10002010 + (n*0x1c) | | 0x10002010 + (n*0x1c) | ||
| 4 | | 4 | ||
| | | Boot9, Kernel9 | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| Line 43: | Line 43: | ||
| 0x10002014 + (n*0x1c) | | 0x10002014 + (n*0x1c) | ||
| 4 | | 4 | ||
| | | Boot9, Kernel9 | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| Line 49: | Line 49: | ||
| 0x10002018 + (n*0x1c) | | 0x10002018 + (n*0x1c) | ||
| 4 | | 4 | ||
| | | Boot9, Kernel9 | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| Line 55: | Line 55: | ||
| 0x1000201C + (n*0x1c) | | 0x1000201C + (n*0x1c) | ||
| 4 | | 4 | ||
| | | Boot9, Kernel9 | ||
|} | |} | ||
== NDMA_GLOBAL_CNT == | == NDMA_GLOBAL_CNT == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | ! Bit | ||
! | ! Description | ||
|- | |- | ||
| 0 | | 0 | ||
| Global enable? | | Global enable? | ||
|- | |- | ||
| 19-16 | | 19-16 | ||
| Line 75: | Line 75: | ||
== NDMA_SRC_ADDR == | == NDMA_SRC_ADDR == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | ! Bit | ||
! | ! Description | ||
|- | |- | ||
| 31-0 | | 31-0 | ||
| Line 95: | Line 95: | ||
== NDMA_TRANSFER_CNT == | == NDMA_TRANSFER_CNT == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | ! Bit | ||
! | ! Description | ||
|- | |- | ||
| 27-0 | | 27-0 | ||
| Line 104: | Line 104: | ||
== NDMA_WRITE_CNT == | == NDMA_WRITE_CNT == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | ! Bit | ||
! | ! Description | ||
|- | |- | ||
| 23-0 | | 23-0 | ||
| Line 113: | Line 113: | ||
== NDMA_BLOCK_CNT == | == NDMA_BLOCK_CNT == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | ! Bit | ||
! | ! Description | ||
|- | |- | ||
| 15-0 | | 15-0 | ||
| Line 125: | Line 125: | ||
== NDMA_FILL_DATA == | == NDMA_FILL_DATA == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | ! Bit | ||
! | ! Description | ||
|- | |- | ||
| 31-0 | | 31-0 | ||
| Line 134: | Line 134: | ||
== NDMA_CNT == | == NDMA_CNT == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | ! Bit | ||
! | ! Description | ||
|- | |||
| 4-0 | |||
| Device to device startup mode | |||
|- | |- | ||
| 11-10 | | 11-10 | ||
| Line 168: | Line 171: | ||
|} | |} | ||
== Startup modes (4-0) == | |||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 | |||
| TIMER0 | |||
|- | |||
| 1 | |||
| TIMER1 | |||
|- | |||
| 2 | |||
| TIMER2 | |||
|- | |||
| 3 | |||
| TIMER3 | |||
|- | |||
| 4 | |||
| CTRCARD0 | |||
|- | |||
| 5 | |||
| CTRCARD1 | |||
|- | |||
| 6 | |||
| SDIO1 | |||
|- | |||
| 7 | |||
| SDIO3 | |||
|- | |||
| 8 | |||
| AES in ([[AES_Registers#AES_WRFIFO.2FAES_RDFIFO|WRFIFO]]) | |||
|- | |||
| 9 | |||
| AES out ([[AES_Registers#AES_WRFIFO.2FAES_RDFIFO|RDFIFO]]) | |||
|- | |||
| 10 | |||
| SHA in ([[SHA_Registers#SHA_FIFO|INFIFO]]) | |||
|- | |||
| 11 | |||
| SHA out ([[SHA_Registers#SHA_FIFO|INFIFO]], source data readback mode) | |||
|- | |||
| 12 | |||
| NTRCARD | |||
|- | |||
| 13 | |||
| ? | |||
|- | |||
| 14 | |||
| ? | |||
|- | |||
| 15 | |||
| Device to device (subclassed by bits 4-0) | |||
|} | |||
== | == Device to device startup modes (4-0) == | ||
{| class="wikitable" border="1" | |||
! Value | |||
! Description | |||
|- | |||
| 0 | |||
| CTRCARD0 -> AES | |||
|- | |||
| 1 | |||
| CTRCARD1 -> AES | |||
|- | |||
| 2 | |||
| AES -> CTRCARD0 | |||
|- | |||
| 3 | |||
| AES -> CTRCARD1 | |||
|- | |||
| 4 | |||
| CTRCARD0 -> SHA | |||
|- | |||
| 5 | |||
| CTRCARD1 -> SHA | |||
|- | |||
| 6 | |||
| SHA -> CTRCARD0 | |||
|- | |||
| 7 | |||
| SHA -> CTRCARD1 | |||
|- | |||
| 8 | |||
| SDIO1 -> AES | |||
|- | |||
| 9 | |||
| SDIO3 -> AES | |||
|- | |||
| 10 | |||
| AES -> SDIO1 | |||
|- | |||
| 11 | |||
| AES -> SDIO3 | |||
|- | |||
| 12 | |||
| SDIO1 -> SHA | |||
|- | |||
| 13 | |||
| SDIO3 -> SHA | |||
|- | |||
| 14 | |||
| SHA -> SDIO1 | |||
|- | |||
| 15 | |||
| SHA -> SDIO3 | |||
|- | |||
| 16 | |||
| AES -> SHA | |||
|- | |||
| 17 | |||
| SHA -> AES | |||
|} | |||
== Block transfers == | == Block transfers == | ||