mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 23:51:33 +00:00
cmd: ti: ddr3: Fix ecc address calculation
ecc_address_range registers contains the start address and end address of the DDR address space. But the ddr cmd driver is assuming the register contains the start address and size of the DDR address space. Because of this some valid ecc addresses are errored out as invalid address. Fix this calculation. Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
This commit is contained in:
parent
ed474ae00c
commit
5ebe6c0cb7
1 changed files with 4 additions and 4 deletions
|
@ -242,8 +242,8 @@ static int is_addr_valid(u32 addr)
|
|||
if (ecc_ctrl & EMIF_ECC_REG_ECC_ADDR_RGN_1_EN_MASK) {
|
||||
start_addr = ((range & EMIF_ECC_REG_ECC_START_ADDR_MASK) << 16)
|
||||
+ CONFIG_SYS_SDRAM_BASE;
|
||||
end_addr = start_addr + (range & EMIF_ECC_REG_ECC_END_ADDR_MASK)
|
||||
+ 0xFFFF;
|
||||
end_addr = (range & EMIF_ECC_REG_ECC_END_ADDR_MASK) + 0xFFFF +
|
||||
CONFIG_SYS_SDRAM_BASE;
|
||||
if ((addr >= start_addr) && (addr <= end_addr))
|
||||
/* addr within ecc address range 1 */
|
||||
return 1;
|
||||
|
@ -254,8 +254,8 @@ static int is_addr_valid(u32 addr)
|
|||
range = readl(&emif->emif_ecc_address_range_2);
|
||||
start_addr = ((range & EMIF_ECC_REG_ECC_START_ADDR_MASK) << 16)
|
||||
+ CONFIG_SYS_SDRAM_BASE;
|
||||
end_addr = start_addr + (range & EMIF_ECC_REG_ECC_END_ADDR_MASK)
|
||||
+ 0xFFFF;
|
||||
end_addr = (range & EMIF_ECC_REG_ECC_END_ADDR_MASK) + 0xFFFF +
|
||||
CONFIG_SYS_SDRAM_BASE;
|
||||
if ((addr >= start_addr) && (addr <= end_addr))
|
||||
/* addr within ecc address range 2 */
|
||||
return 1;
|
||||
|
|
Loading…
Reference in a new issue