Line 7:
Line 7:
! WIDTH
! WIDTH
|-
|-
−
| REG_NDMA_MASTER_CNT
+
| REG_NDMAGCNT
| 0x04004100
| 0x04004100
| 4
| 4
|-
|-
−
| REG_NDMA_SRC(n)
+
| REG_NDMASAD(n)
| 0x04004104 + (n*0x1c)
| 0x04004104 + (n*0x1c)
| 4
| 4
|-
|-
−
| REG_NDMA_DEST(n)
+
| REG_NDMADAD(n)
| 0x04004108 + (n*0x1c)
| 0x04004108 + (n*0x1c)
| 4
| 4
|-
|-
−
| REG_NDMA_NUM0(n)
+
| REG_NDMATCNT(n)
| 0x0400410c + (n*0x1c)
| 0x0400410c + (n*0x1c)
| 4
| 4
|-
|-
−
| REG_NDMA_NUM1(n)
+
| REG_NDMAWCNT(n)
| 0x04004110 + (n*0x1c)
| 0x04004110 + (n*0x1c)
| 4
| 4
|-
|-
−
| REG_NDMA_14(n)
+
| REG_NDMABCNT(n)
| 0x04004114 + (n*0x1c)
| 0x04004114 + (n*0x1c)
| 4
| 4
|-
|-
−
| REG_NDMA_CLEAR(n)
+
| REG_NDMAFDATA(n)
| 0x04004118 + (n*0x1c)
| 0x04004118 + (n*0x1c)
| 4
| 4
|-
|-
−
| REG_NDMA_CNT(n)
+
| REG_NDMACNT(n)
| 0x0400411c + (n*0x1c)
| 0x0400411c + (n*0x1c)
| 4
| 4
|}
|}
−
== REG_NDMA_MASTER_CNT ==
+
== REG_NDMAGCNT ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
! BIT
! BIT
! DESCRIPTION
! DESCRIPTION
|-
|-
−
| 15-0
+
| 19-16
−
| ?
+
| Cycle selection.
−
|-
−
| 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
| 31
−
| Might be master NDMA enable, when initialized this is set?
+
| DMA arbitration method. 0=Fixed method, 1=Round robin
|}
|}
−
== REG_NDMA_SRC ==
+
== REG_NDMASAD ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
! BIT
! BIT
Line 70:
Line 58:
|-
|-
| 31-0
| 31-0
−
| Source data address.
+
| Source data address. Must be multiple of 4.
|}
|}
Like old DMA, REG_NDMA_SRC is copied to internal registers when written to.
Like old DMA, REG_NDMA_SRC is copied to internal registers when written to.
−
== REG_NDMA_DEST ==
+
== REG_NDMADAD ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
! BIT
! BIT
Line 80:
Line 68:
|-
|-
| 31-0
| 31-0
−
| Destination data address.
+
| Destination data address. Must be multiple of 4.
|}
|}
Like old DMA, REG_NDMA_DEST is copied to internal registers when written to.
Like old DMA, REG_NDMA_DEST is copied to internal registers when written to.
−
== REG_NDMA_NUM0 ==
+
== REG_NDMATCNT ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
! BIT
! BIT
Line 93:
Line 81:
|}
|}
−
== REG_NDMA_NUM1 ==
+
== REG_NDMAWCNT ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
! BIT
! BIT
Line 102:
Line 90:
|}
|}
−
== REG_NDMA_14 ==
+
== REG_NDMABCNT ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
! BIT
! BIT
Line 111:
Line 99:
|}
|}
−
Once the CNT bit31 enable bit is set, starting doing the DMA once the time units specified by this register elapses?
+
== REG_NDMAFDATA ==
−
−
== REG_NDMA_CLEAR ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
! BIT
! BIT
Line 122:
Line 108:
|}
|}
−
== REG_NDMA_CNT ==
+
== REG_NDMACNT ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
! BIT
! BIT