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>
This commit is contained in:
parent
2c76d311a4
commit
442faf61ab
@ -146,14 +146,10 @@ int ft_board_setup(void *blob, bd_t *bd)
|
||||
int nbanks;
|
||||
u64 size[2];
|
||||
u64 start[2];
|
||||
int nodeoffset;
|
||||
u32 ddr3a_size;
|
||||
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);
|
||||
|
||||
ddr3a_size = 0;
|
||||
if (lpae) {
|
||||
@ -191,24 +187,41 @@ int ft_board_setup(void *blob, bd_t *bd)
|
||||
|
||||
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 */
|
||||
if (lpae && unitrd_fixup) {
|
||||
int nodeoffset;
|
||||
int err;
|
||||
u32 *prop1, *prop2;
|
||||
u64 *prop1, *prop2;
|
||||
u64 initrd_start, initrd_end;
|
||||
|
||||
nodeoffset = fdt_path_offset(blob, "/chosen");
|
||||
if (nodeoffset >= 0) {
|
||||
prop1 = (u32 *)fdt_getprop(blob, nodeoffset,
|
||||
prop1 = (u64 *)fdt_getprop(blob, nodeoffset,
|
||||
"linux,initrd-start", NULL);
|
||||
prop2 = (u32 *)fdt_getprop(blob, nodeoffset,
|
||||
prop2 = (u64 *)fdt_getprop(blob, nodeoffset,
|
||||
"linux,initrd-end", NULL);
|
||||
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_LPAE_SDRAM_BASE;
|
||||
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_LPAE_SDRAM_BASE;
|
||||
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) {
|
||||
/*
|
||||
* the initrd and other reserved memory areas are
|
||||
|
Loading…
Reference in New Issue
Block a user