rockchip: param: add SDRAM_MAX_SIZE as ram top limit

This patch handles the boot fail for RK3288 4GB machine.

Change-Id: I2be6e532120595a6c10e9e99a779d9ec32f48fb5
Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
This commit is contained in:
Joseph Chen 2019-10-31 14:52:01 +08:00
parent f3ba630b34
commit ced10dbe1c
1 changed files with 9 additions and 2 deletions

View File

@ -234,6 +234,11 @@ int param_parse_bootdev(char **devtype, char **devnum)
}
#endif
static phys_size_t ddr_mem_get_usable_size(u64 base, u64 size)
{
return (base + size >= SDRAM_MAX_SIZE) ? (SDRAM_MAX_SIZE - base) : size;
}
struct memblock *param_parse_ddr_mem(int *out_count)
{
struct udevice *dev;
@ -261,7 +266,9 @@ struct memblock *param_parse_ddr_mem(int *out_count)
for (i = 0; i < count; i++) {
mem[i].base = t->u.ddr_mem.bank[i];
mem[i].size = t->u.ddr_mem.bank[i + count];
mem[i].size =
ddr_mem_get_usable_size(t->u.ddr_mem.bank[i],
t->u.ddr_mem.bank[i + count]);
}
*out_count = count;
@ -293,7 +300,7 @@ struct memblock *param_parse_ddr_mem(int *out_count)
for (i = 0; i < count; i++) {
mem[i].base = CONFIG_SYS_SDRAM_BASE;
mem[i].size = ram.size;
mem[i].size = ddr_mem_get_usable_size(mem[i].base, ram.size);
}
*out_count = count;