imx9: Calculate DDR size from DDRC setting
To avoid using static setting for ECC enabled DDR size, switch to calculate DDR size from DDRC setting Signed-off-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Jacky Bai <ping.bai@nxp.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
This commit is contained in:
parent
212a4e1961
commit
dace5e9fdc
1 changed files with 17 additions and 4 deletions
|
@ -36,6 +36,7 @@
|
|||
#include <asm/arch-imx/cpu.h>
|
||||
#include <asm/mach-imx/s400_api.h>
|
||||
#include <fuse.h>
|
||||
#include <asm/arch/ddr.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
|
@ -327,14 +328,26 @@ void enable_caches(void)
|
|||
|
||||
__weak int board_phys_sdram_size(phys_size_t *size)
|
||||
{
|
||||
phys_size_t start, end;
|
||||
phys_size_t val;
|
||||
|
||||
if (!size)
|
||||
return -EINVAL;
|
||||
|
||||
*size = PHYS_SDRAM_SIZE;
|
||||
val = readl(REG_DDR_CS0_BNDS);
|
||||
start = (val >> 16) << 24;
|
||||
end = (val & 0xFFFF);
|
||||
end = end ? end + 1 : 0;
|
||||
end = end << 24;
|
||||
*size = end - start;
|
||||
|
||||
val = readl(REG_DDR_CS1_BNDS);
|
||||
start = (val >> 16) << 24;
|
||||
end = (val & 0xFFFF);
|
||||
end = end ? end + 1 : 0;
|
||||
end = end << 24;
|
||||
*size += end - start;
|
||||
|
||||
#ifdef PHYS_SDRAM_2_SIZE
|
||||
*size += PHYS_SDRAM_2_SIZE;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue