Newer
Older
uwuboot / source / arm9 / ndma.c
/**
 * 2016
 * profi200
 */

#include "types.h"
#include "arm9/ndma.h"



void NDMA_copy(u32 *dest, const u32 *source, u32 num)
{
	REG_NDMA0_SRC_ADDR = (u32)source;
	REG_NDMA0_DST_ADDR = (u32)dest;
	REG_NDMA0_WRITE_CNT = num;
	REG_NDMA0_BLOCK_CNT = NDMA_BLOCK_SYS_FREQ;
	REG_NDMA0_CNT = NDMA_DST_UPDATE_INC | NDMA_SRC_UPDATE_INC | NDMA_IMMEDIATE_MODE | NDMA_ENABLE;

	while(REG_NDMA0_CNT & NDMA_ENABLE);
}

void NDMA_fill(u32 *dest, u32 value, u32 num)
{
	REG_NDMA0_DST_ADDR = (u32)dest;
	REG_NDMA0_WRITE_CNT = num;
	REG_NDMA0_BLOCK_CNT = NDMA_BLOCK_SYS_FREQ;
	REG_NDMA0_FILL_DATA = value;
	REG_NDMA0_CNT = NDMA_DST_UPDATE_INC | NDMA_SRC_UPDATE_FILL | NDMA_IMMEDIATE_MODE | NDMA_ENABLE;

	while(REG_NDMA0_CNT & NDMA_ENABLE);
}