diff --git a/include/arm9/hardware/ndma.h b/include/arm9/hardware/ndma.h index 574919e..75ac33c 100644 --- a/include/arm9/hardware/ndma.h +++ b/include/arm9/hardware/ndma.h @@ -117,7 +117,7 @@ #define NDMA_SRC_UPDATE_FILL (3u<<13) #define NDMA_SRC_ADDR_RELOAD (1u<<15) // The block length is 2^n words (Example: 2^15 = 32768 words = 0x20000 bytes) -#define NDMA_BURST_SIZE(n) ((u32)log2(n)<<16) +#define NDMA_BURST_WORDS(n) ((u32)log2(n)<<16) #define NDMA_IMMEDIATE_MODE (16u<<24) #define NDMA_TOTAL_CNT_MODE (0u) #define NDMA_REPEATING_MODE (1u<<29) @@ -133,8 +133,8 @@ NDMA_STARTUP_TIMER3 = 3<<24, NDMA_STARTUP_CTRCARD0 = 4<<24, NDMA_STARTUP_CTRCARD1 = 5<<24, - NDMA_STARTUP_UNK_6 = 6<<24, - NDMA_STARTUP_EMMC = 7<<24, + NDMA_STARTUP_MMC1 = 6<<24, + NDMA_STARTUP_MMC2 = 7<<24, // Guess based on DSi documentation NDMA_STARTUP_AES_IN = 8<<24, // AES write fifo NDMA_STARTUP_AES_OUT = 9<<24, // AES read fifo NDMA_STARTUP_SHA = 10<<24, diff --git a/source/arm9/firm.c b/source/arm9/firm.c index f21a40c..c6c647e 100644 --- a/source/arm9/firm.c +++ b/source/arm9/firm.c @@ -148,7 +148,7 @@ REG_NDMA_DST_ADDR(i) = section->address; REG_NDMA_LOG_BLK_CNT(i) = section->size / 4; REG_NDMA_INT_CNT(i) = NDMA_INT_SYS_FREQ; - REG_NDMA_CNT(i) = NDMA_ENABLE | NDMA_BURST_SIZE(128) | NDMA_IMMEDIATE_MODE | + REG_NDMA_CNT(i) = NDMA_ENABLE | NDMA_BURST_WORDS(128) | NDMA_IMMEDIATE_MODE | NDMA_SRC_UPDATE_INC | NDMA_DST_UPDATE_INC; } else diff --git a/source/arm9/hardware/crypto.c b/source/arm9/hardware/crypto.c index e59d2f3..1b5823d 100644 --- a/source/arm9/hardware/crypto.c +++ b/source/arm9/hardware/crypto.c @@ -173,12 +173,12 @@ REG_NDMA0_DST_ADDR = REG_AESWRFIFO; REG_NDMA0_INT_CNT = NDMA_INT_SYS_FREQ; - REG_NDMA0_CNT = NDMA_TOTAL_CNT_MODE | NDMA_STARTUP_AES_IN | NDMA_BURST_SIZE(4) | + REG_NDMA0_CNT = NDMA_TOTAL_CNT_MODE | NDMA_STARTUP_AES_IN | NDMA_BURST_WORDS(4) | NDMA_SRC_UPDATE_INC | NDMA_DST_UPDATE_FIXED; REG_NDMA1_SRC_ADDR = REG_AESRDFIFO; REG_NDMA1_INT_CNT = NDMA_INT_SYS_FREQ; - REG_NDMA1_CNT = NDMA_TOTAL_CNT_MODE | NDMA_STARTUP_AES_OUT | NDMA_BURST_SIZE(4) | + REG_NDMA1_CNT = NDMA_TOTAL_CNT_MODE | NDMA_STARTUP_AES_OUT | NDMA_BURST_WORDS(4) | NDMA_SRC_UPDATE_FIXED | NDMA_DST_UPDATE_INC; IRQ_registerHandler(IRQ_AES, NULL); diff --git a/source/arm9/hardware/ndma.c b/source/arm9/hardware/ndma.c index 3dd81da..4014c39 100644 --- a/source/arm9/hardware/ndma.c +++ b/source/arm9/hardware/ndma.c @@ -45,7 +45,8 @@ REG_NDMA7_DST_ADDR = (u32)dest; REG_NDMA7_LOG_BLK_CNT = size / 4; REG_NDMA7_INT_CNT = NDMA_INT_SYS_FREQ; - REG_NDMA7_CNT = NDMA_ENABLE | NDMA_IRQ_ENABLE | NDMA_IMMEDIATE_MODE | NDMA_SRC_UPDATE_INC | NDMA_DST_UPDATE_INC; + REG_NDMA7_CNT = NDMA_ENABLE | NDMA_IRQ_ENABLE | NDMA_IMMEDIATE_MODE | NDMA_BURST_WORDS(1) | + NDMA_SRC_UPDATE_INC | NDMA_DST_UPDATE_INC; } void NDMA_copy(u32 *dest, const u32 *source, u32 size) @@ -63,7 +64,8 @@ REG_NDMA7_LOG_BLK_CNT = size / 4; REG_NDMA7_INT_CNT = NDMA_INT_SYS_FREQ; REG_NDMA7_FILL_DATA = value; - REG_NDMA7_CNT = NDMA_ENABLE | NDMA_IRQ_ENABLE | NDMA_IMMEDIATE_MODE | NDMA_SRC_UPDATE_FILL | NDMA_DST_UPDATE_INC; + REG_NDMA7_CNT = NDMA_ENABLE | NDMA_IRQ_ENABLE | NDMA_IMMEDIATE_MODE | NDMA_BURST_WORDS(1) | + NDMA_SRC_UPDATE_FILL | NDMA_DST_UPDATE_INC; } void NDMA_fill(u32 *dest, u32 value, u32 size)