Registers
There's 4 NDMA channels. Arm7/Arm9 have separate NDMA.
| NAME
|
ADDRESS
|
WIDTH
|
| REG_NDMA_MASTER_CNT
|
0x04004100
|
4
|
| REG_NDMA_SRC(n)
|
0x04004104 + (n*0x1c)
|
4
|
| REG_NDMA_DEST(n)
|
0x04004108 + (n*0x1c)
|
4
|
| REG_NDMA_NUM0(n)
|
0x0400410c + (n*0x1c)
|
4
|
| REG_NDMA_NUM1(n)
|
0x04004110 + (n*0x1c)
|
4
|
| REG_NDMA_14(n)
|
0x04004114 + (n*0x1c)
|
4
|
| REG_NDMA_CLEAR(n)
|
0x04004118 + (n*0x1c)
|
4
|
| REG_NDMA_CNT(n)
|
0x0400411c + (n*0x1c)
|
4
|
REG_NDMA_MASTER_CNT
| BIT
|
DESCRIPTION
|
| 15-0
|
?
|
| 16
|
Unknown, set when initialized by Arm7?
|
| 17
|
Unknown, set when initialized by Arm9?
|
| 18
|
Unknown, set when initialized by Arm7/Arm9?
|
| 30-19
|
?
|
| 31
|
Might be master NDMA enable, when initialized this is set?
|
REG_NDMA_SRC
| BIT
|
DESCRIPTION
|
| 31-0
|
Source data address.
|
Like old DMA, REG_NDMA_SRC is copied to internal registers when written to.
REG_NDMA_DEST
| BIT
|
DESCRIPTION
|
| 31-0
|
Destination data address.
|
Like old DMA, REG_NDMA_DEST is copied to internal registers when written to.
REG_NDMA_NUM0
| BIT
|
DESCRIPTION
|
| 31-0
|
Number of bytes to copy/write, see REG_NDMA_CNT bit28.
|
REG_NDMA_NUM1
| BIT
|
DESCRIPTION
|
| 31-0
|
Number of bytes to copy/write, see REG_NDMA_CNT bit28.
|
REG_NDMA_14
| BIT
|
DESCRIPTION
|
| 31-0
|
Time related?
|
Once the CNT bit31 enable bit is set, starting doing the DMA once the time units specified by this register elapses?
REG_NDMA_CLEAR
| BIT
|
DESCRIPTION
|
| 31-0
|
Value to write to destination instead of copying when REG_NDMA_CNT bit13 and bit14 are set.
|
REG_NDMA_CNT
| BIT
|
DESCRIPTION
|
| 10-0
|
?
|
| 11
|
Fixed destination address when set.
|
| 12
|
?
|
| 13
|
When set clear data with the value REG_NDMA_CLEAR instead of copying.
|
| 14
|
Fixed source address when set.
|
| 27-15
|
?
|
| 28
|
Set when REG_NDMA_NUM0 was set, clear when REG_NDMA_NUM1 was set.
|
| 30
|
IRQ enable
|
| 31
|
Enable/busy
|