|
|
|
@ -174,6 +174,7 @@ static int test_ecc(uint32_t ecc_addr) |
|
|
|
|
clear_and_enable_ecc(); |
|
|
|
|
out_be32(ecc_mem, ECC_PATTERN); |
|
|
|
|
out_be32(ecc_mem + 1, ECC_PATTERN); |
|
|
|
|
ppcDcbf((u32)ecc_mem); |
|
|
|
|
|
|
|
|
|
/* Verify no ECC error reading back */ |
|
|
|
|
value = in_be32(ecc_mem); |
|
|
|
@ -193,6 +194,7 @@ static int test_ecc(uint32_t ecc_addr) |
|
|
|
|
|
|
|
|
|
/* Test for correctable error by creating a one-bit error */ |
|
|
|
|
out_be32(ecc_mem, ECC_PATTERN_CORR); |
|
|
|
|
ppcDcbf((u32)ecc_mem); |
|
|
|
|
clear_and_enable_ecc(); |
|
|
|
|
value = in_be32(ecc_mem); |
|
|
|
|
disable_ecc(); |
|
|
|
@ -212,6 +214,7 @@ static int test_ecc(uint32_t ecc_addr) |
|
|
|
|
|
|
|
|
|
/* Test for uncorrectable error by creating a two-bit error */ |
|
|
|
|
out_be32(ecc_mem, ECC_PATTERN_UNCORR); |
|
|
|
|
ppcDcbf((u32)ecc_mem); |
|
|
|
|
clear_and_enable_ecc(); |
|
|
|
|
value = in_be32(ecc_mem); |
|
|
|
|
disable_ecc(); |
|
|
|
@ -232,6 +235,7 @@ static int test_ecc(uint32_t ecc_addr) |
|
|
|
|
|
|
|
|
|
/* Remove error from SDRAM and enable ECC. */ |
|
|
|
|
out_be32(ecc_mem, ECC_PATTERN); |
|
|
|
|
ppcDcbf((u32)ecc_mem); |
|
|
|
|
clear_and_enable_ecc(); |
|
|
|
|
|
|
|
|
|
return ret; |
|
|
|
|