arm: mvebu: Add complete SDRAM ECC scrubbing

This patch introduces the SDRAM scrubbing for ECC enabled board
to fill/initialize the ECC bytes. This is done via the XOR engine
to speed up the process. The scrubbing is a 2-stage process:

1) SPL scrubs the area 0 - 0x100.0000 (16MiB) for the main U-Boot
2) U-Boot scrubs the remaining SDRAM area(s)

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Luka Perkov <luka.perkov@sartura.hr>
This commit is contained in:
Stefan Roese
2015-08-06 14:43:13 +02:00
committed by Luka Perkov
parent a8b57a90ec
commit 0ceb2dae78
4 changed files with 141 additions and 8 deletions

View File

@@ -18,7 +18,6 @@ static u32 xor_regs_ctrl_backup;
static u32 xor_regs_base_backup[MAX_CS];
static u32 xor_regs_mask_backup[MAX_CS];
static void mv_xor_hal_init(u32 chan_num);
static int mv_xor_cmd_set(u32 chan, int command);
static int mv_xor_ctrl_set(u32 chan, u32 xor_ctrl);
@@ -110,7 +109,7 @@ void mv_sys_xor_finish(void)
* RETURN:
* MV_BAD_PARAM if parameters to function invalid, MV_OK otherwise.
*/
static void mv_xor_hal_init(u32 chan_num)
void mv_xor_hal_init(u32 chan_num)
{
u32 i;

View File

@@ -60,6 +60,7 @@ struct crc_dma_desc {
u32 src_addr1; /* Mode: Source Block address pointer */
} __packed;
void mv_xor_hal_init(u32 chan_num);
int mv_xor_state_get(u32 chan);
void mv_sys_xor_init(MV_DRAM_INFO *dram_info);
void mv_sys_xor_finish(void);