board: ks2: move uinitrd fixup logic inside ft_board_setup_ex

The uinitrd fixup logic should be executed after the FDT /chosen
node has been properly populated by fdt_initrd()

Signed-off-by: Nicholas Faustini <nicholas.faustini@azcomtech.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
lime2-spi
Nicholas Faustini 6 years ago committed by Tom Rini
parent 2c76d311a4
commit 442faf61ab
  1. 44
      board/ti/ks2_evm/board.c

@ -146,14 +146,10 @@ int ft_board_setup(void *blob, bd_t *bd)
int nbanks; int nbanks;
u64 size[2]; u64 size[2];
u64 start[2]; u64 start[2];
int nodeoffset;
u32 ddr3a_size; u32 ddr3a_size;
int unitrd_fixup = 0;
env = env_get("mem_lpae"); env = env_get("mem_lpae");
lpae = env && simple_strtol(env, NULL, 0); lpae = env && simple_strtol(env, NULL, 0);
env = env_get("uinitrd_fixup");
unitrd_fixup = env && simple_strtol(env, NULL, 0);
ddr3a_size = 0; ddr3a_size = 0;
if (lpae) { if (lpae) {
@ -191,24 +187,41 @@ int ft_board_setup(void *blob, bd_t *bd)
fdt_fixup_memory_banks(blob, start, size, nbanks); fdt_fixup_memory_banks(blob, start, size, nbanks);
return 0;
}
void ft_board_setup_ex(void *blob, bd_t *bd)
{
int lpae;
u64 size;
char *env;
u64 *reserve_start;
int unitrd_fixup = 0;
env = env_get("mem_lpae");
lpae = env && simple_strtol(env, NULL, 0);
env = env_get("uinitrd_fixup");
unitrd_fixup = env && simple_strtol(env, NULL, 0);
/* Fix up the initrd */ /* Fix up the initrd */
if (lpae && unitrd_fixup) { if (lpae && unitrd_fixup) {
int nodeoffset;
int err; int err;
u32 *prop1, *prop2; u64 *prop1, *prop2;
u64 initrd_start, initrd_end; u64 initrd_start, initrd_end;
nodeoffset = fdt_path_offset(blob, "/chosen"); nodeoffset = fdt_path_offset(blob, "/chosen");
if (nodeoffset >= 0) { if (nodeoffset >= 0) {
prop1 = (u32 *)fdt_getprop(blob, nodeoffset, prop1 = (u64 *)fdt_getprop(blob, nodeoffset,
"linux,initrd-start", NULL); "linux,initrd-start", NULL);
prop2 = (u32 *)fdt_getprop(blob, nodeoffset, prop2 = (u64 *)fdt_getprop(blob, nodeoffset,
"linux,initrd-end", NULL); "linux,initrd-end", NULL);
if (prop1 && prop2) { if (prop1 && prop2) {
initrd_start = __be32_to_cpu(*prop1); initrd_start = __be64_to_cpu(*prop1);
initrd_start -= CONFIG_SYS_SDRAM_BASE; initrd_start -= CONFIG_SYS_SDRAM_BASE;
initrd_start += CONFIG_SYS_LPAE_SDRAM_BASE; initrd_start += CONFIG_SYS_LPAE_SDRAM_BASE;
initrd_start = __cpu_to_be64(initrd_start); initrd_start = __cpu_to_be64(initrd_start);
initrd_end = __be32_to_cpu(*prop2); initrd_end = __be64_to_cpu(*prop2);
initrd_end -= CONFIG_SYS_SDRAM_BASE; initrd_end -= CONFIG_SYS_SDRAM_BASE;
initrd_end += CONFIG_SYS_LPAE_SDRAM_BASE; initrd_end += CONFIG_SYS_LPAE_SDRAM_BASE;
initrd_end = __cpu_to_be64(initrd_end); initrd_end = __cpu_to_be64(initrd_end);
@ -240,19 +253,6 @@ int ft_board_setup(void *blob, bd_t *bd)
} }
} }
return 0;
}
void ft_board_setup_ex(void *blob, bd_t *bd)
{
int lpae;
u64 size;
char *env;
u64 *reserve_start;
env = env_get("mem_lpae");
lpae = env && simple_strtol(env, NULL, 0);
if (lpae) { if (lpae) {
/* /*
* the initrd and other reserved memory areas are * the initrd and other reserved memory areas are

Loading…
Cancel
Save