mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-19 05:31:32 +00:00
ARM: mvebu: handle unused DRAM banks with ECC enabled
dram_ecc_scrubbing() had code to skip unused DRAM banks but it would not work because mvebu_sdram_bs() returns 0 and the code was subtracting 1 before checking the size. Remove the -1 from the bank size and the +1 from the total which will skip unused banks and still calculate the correct size. Put the -1 where it is needed for scrubbing via the xor engine. Reported-by: Joshua Scott <joshua.scott@alliedtelesis.co.nz> Signed-off-by: Chris Packham <judge.packham@gmail.com> Signed-off-by: Stefan Roese <sr@denx.de>
This commit is contained in:
parent
0a91e1cce4
commit
c3ab274444
1 changed files with 3 additions and 3 deletions
|
@ -179,11 +179,11 @@ static void dram_ecc_scrubbing(void)
|
|||
reg_write(REG_SDRAM_CONFIG_ADDR, temp);
|
||||
|
||||
for (cs = 0; cs < CONFIG_NR_DRAM_BANKS; cs++) {
|
||||
size = mvebu_sdram_bs(cs) - 1;
|
||||
size = mvebu_sdram_bs(cs);
|
||||
if (size == 0)
|
||||
continue;
|
||||
|
||||
total = (u64)size + 1;
|
||||
total = (u64)size;
|
||||
total_mem += (u32)(total / (1 << 30));
|
||||
start_addr = 0;
|
||||
mv_xor_init2(cs);
|
||||
|
@ -194,7 +194,7 @@ static void dram_ecc_scrubbing(void)
|
|||
size -= start_addr;
|
||||
}
|
||||
|
||||
mv_xor_mem_init(SCRB_XOR_CHAN, start_addr, size,
|
||||
mv_xor_mem_init(SCRB_XOR_CHAN, start_addr, size - 1,
|
||||
SCRUB_MAGIC, SCRUB_MAGIC);
|
||||
|
||||
/* Wait for previous transfer completion */
|
||||
|
|
Loading…
Add table
Reference in a new issue