mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-19 21:51:31 +00:00
ARM: renesas: Configure DRAM size from ATF DT fragment
The ATF can pass additional information via the first four registers, x0...x3. The R-Car Gen3 with mainline ATF, register x1 contains pointer to a device tree with platform information. Parse this device tree and extract DRAM size information from it. This is useful on systems where the DRAM size can vary between configurations. Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
This commit is contained in:
parent
80b44fb376
commit
175f502734
3 changed files with 72 additions and 12 deletions
|
@ -43,17 +43,37 @@ int board_init(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If the firmware passed a device tree use it for U-Boot DRAM setup.
|
||||||
|
*/
|
||||||
|
extern u64 rcar_atf_boot_args[];
|
||||||
|
|
||||||
int dram_init(void)
|
int dram_init(void)
|
||||||
{
|
{
|
||||||
if (fdtdec_setup_mem_size_base() != 0)
|
const void *atf_fdt_blob = (const void *)(rcar_atf_boot_args[1]);
|
||||||
return -EINVAL;
|
const void *blob;
|
||||||
|
|
||||||
return 0;
|
/* Check if ATF passed us DTB. If not, fall back to builtin DTB. */
|
||||||
|
if (fdt_magic(atf_fdt_blob) == FDT_MAGIC)
|
||||||
|
blob = atf_fdt_blob;
|
||||||
|
else
|
||||||
|
blob = gd->fdt_blob;
|
||||||
|
|
||||||
|
return fdtdec_setup_mem_size_base_fdt(blob);
|
||||||
}
|
}
|
||||||
|
|
||||||
int dram_init_banksize(void)
|
int dram_init_banksize(void)
|
||||||
{
|
{
|
||||||
fdtdec_setup_memory_banksize();
|
const void *atf_fdt_blob = (const void *)(rcar_atf_boot_args[1]);
|
||||||
|
const void *blob;
|
||||||
|
|
||||||
|
/* Check if ATF passed us DTB. If not, fall back to builtin DTB. */
|
||||||
|
if (fdt_magic(atf_fdt_blob) == FDT_MAGIC)
|
||||||
|
blob = atf_fdt_blob;
|
||||||
|
else
|
||||||
|
blob = gd->fdt_blob;
|
||||||
|
|
||||||
|
fdtdec_setup_memory_banksize_fdt(blob);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,17 +69,37 @@ int board_init(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If the firmware passed a device tree use it for U-Boot DRAM setup.
|
||||||
|
*/
|
||||||
|
extern u64 rcar_atf_boot_args[];
|
||||||
|
|
||||||
int dram_init(void)
|
int dram_init(void)
|
||||||
{
|
{
|
||||||
if (fdtdec_setup_mem_size_base() != 0)
|
const void *atf_fdt_blob = (const void *)(rcar_atf_boot_args[1]);
|
||||||
return -EINVAL;
|
const void *blob;
|
||||||
|
|
||||||
return 0;
|
/* Check if ATF passed us DTB. If not, fall back to builtin DTB. */
|
||||||
|
if (fdt_magic(atf_fdt_blob) == FDT_MAGIC)
|
||||||
|
blob = atf_fdt_blob;
|
||||||
|
else
|
||||||
|
blob = gd->fdt_blob;
|
||||||
|
|
||||||
|
return fdtdec_setup_mem_size_base_fdt(blob);
|
||||||
}
|
}
|
||||||
|
|
||||||
int dram_init_banksize(void)
|
int dram_init_banksize(void)
|
||||||
{
|
{
|
||||||
fdtdec_setup_memory_banksize();
|
const void *atf_fdt_blob = (const void *)(rcar_atf_boot_args[1]);
|
||||||
|
const void *blob;
|
||||||
|
|
||||||
|
/* Check if ATF passed us DTB. If not, fall back to builtin DTB. */
|
||||||
|
if (fdt_magic(atf_fdt_blob) == FDT_MAGIC)
|
||||||
|
blob = atf_fdt_blob;
|
||||||
|
else
|
||||||
|
blob = gd->fdt_blob;
|
||||||
|
|
||||||
|
fdtdec_setup_memory_banksize_fdt(blob);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,17 +68,37 @@ int board_init(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If the firmware passed a device tree use it for U-Boot DRAM setup.
|
||||||
|
*/
|
||||||
|
extern u64 rcar_atf_boot_args[];
|
||||||
|
|
||||||
int dram_init(void)
|
int dram_init(void)
|
||||||
{
|
{
|
||||||
if (fdtdec_setup_mem_size_base() != 0)
|
const void *atf_fdt_blob = (const void *)(rcar_atf_boot_args[1]);
|
||||||
return -EINVAL;
|
const void *blob;
|
||||||
|
|
||||||
return 0;
|
/* Check if ATF passed us DTB. If not, fall back to builtin DTB. */
|
||||||
|
if (fdt_magic(atf_fdt_blob) == FDT_MAGIC)
|
||||||
|
blob = atf_fdt_blob;
|
||||||
|
else
|
||||||
|
blob = gd->fdt_blob;
|
||||||
|
|
||||||
|
return fdtdec_setup_mem_size_base_fdt(blob);
|
||||||
}
|
}
|
||||||
|
|
||||||
int dram_init_banksize(void)
|
int dram_init_banksize(void)
|
||||||
{
|
{
|
||||||
fdtdec_setup_memory_banksize();
|
const void *atf_fdt_blob = (const void *)(rcar_atf_boot_args[1]);
|
||||||
|
const void *blob;
|
||||||
|
|
||||||
|
/* Check if ATF passed us DTB. If not, fall back to builtin DTB. */
|
||||||
|
if (fdt_magic(atf_fdt_blob) == FDT_MAGIC)
|
||||||
|
blob = atf_fdt_blob;
|
||||||
|
else
|
||||||
|
blob = gd->fdt_blob;
|
||||||
|
|
||||||
|
fdtdec_setup_memory_banksize_fdt(blob);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue