mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-11 07:34:31 +00:00
armv8/ls2085a: Expose all DDR region(s) to Linux
This patch allows u-boot to expose the complete DDR region(s) to Linux (after subtracting the memory hidden via MEM_TOP_HIDE mechanism). This allows the u-boot to support the 48-bit VA support provided by ARM64 Linux in flavors 3.18 and above, by passing the appropriate 'memory' DTS nodes. Signed-off-by: Bhupesh Sharma <bhupesh.sharma at freescale.com> Signed-off-by: Prabhakar Kushwaha <prabhakar at freescale.com> Reviewed-by: York Sun <yorksun@freescale.com>
This commit is contained in:
parent
fc7b3855e1
commit
a2dc818f21
6 changed files with 68 additions and 18 deletions
|
@ -14,3 +14,14 @@ Memory map from core's view
|
||||||
|
|
||||||
Other addresses are either reserved, or not used directly by u-boot.
|
Other addresses are either reserved, or not used directly by u-boot.
|
||||||
This list should be updated when more addresses are used.
|
This list should be updated when more addresses are used.
|
||||||
|
|
||||||
|
Booting Linux flavors which do not support 48-bit VA (< Linux 3.18)
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
One needs to use appropriate bootargs to boot Linux flavors which do
|
||||||
|
not support 48-bit VA (for e.g. < Linux 3.18) by appending mem=2048M, as shown
|
||||||
|
below:
|
||||||
|
|
||||||
|
=> setenv bootargs 'console=ttyS1,115200 root=/dev/ram
|
||||||
|
earlycon=uart8250,mmio,0x21c0600,115200 default_hugepagesz=2m hugepagesz=2m
|
||||||
|
hugepages=16 mem=2048M'
|
||||||
|
|
||||||
|
|
|
@ -127,15 +127,18 @@ void fdt_fixup_board_enet(void *fdt)
|
||||||
#ifdef CONFIG_OF_BOARD_SETUP
|
#ifdef CONFIG_OF_BOARD_SETUP
|
||||||
int ft_board_setup(void *blob, bd_t *bd)
|
int ft_board_setup(void *blob, bd_t *bd)
|
||||||
{
|
{
|
||||||
phys_addr_t base;
|
u64 base[CONFIG_NR_DRAM_BANKS];
|
||||||
phys_size_t size;
|
u64 size[CONFIG_NR_DRAM_BANKS];
|
||||||
|
|
||||||
ft_cpu_setup(blob, bd);
|
ft_cpu_setup(blob, bd);
|
||||||
|
|
||||||
/* limit the memory size to bank 1 until Linux can handle 40-bit PA */
|
/* fixup DT for the two GPP DDR banks */
|
||||||
base = getenv_bootm_low();
|
base[0] = gd->bd->bi_dram[0].start;
|
||||||
size = getenv_bootm_size();
|
size[0] = gd->bd->bi_dram[0].size;
|
||||||
fdt_fixup_memory(blob, (u64)base, (u64)size);
|
base[1] = gd->bd->bi_dram[1].start;
|
||||||
|
size[1] = gd->bd->bi_dram[1].size;
|
||||||
|
|
||||||
|
fdt_fixup_memory_banks(blob, base, size, 2);
|
||||||
|
|
||||||
#ifdef CONFIG_FSL_MC_ENET
|
#ifdef CONFIG_FSL_MC_ENET
|
||||||
fdt_fixup_board_enet(blob);
|
fdt_fixup_board_enet(blob);
|
||||||
|
|
|
@ -127,3 +127,22 @@ b) NOR boot
|
||||||
c) NAND boot
|
c) NAND boot
|
||||||
d) SD boot
|
d) SD boot
|
||||||
e) QSPI boot
|
e) QSPI boot
|
||||||
|
|
||||||
|
Environment Variables
|
||||||
|
---------------------
|
||||||
|
- mcboottimeout: MC boot timeout in milliseconds. If this variable is not defined
|
||||||
|
the value CONFIG_SYS_LS_MC_BOOT_TIMEOUT_MS will be assumed.
|
||||||
|
|
||||||
|
- mcmemsize: MC DRAM block size. If this variable is not defined
|
||||||
|
the value CONFIG_SYS_LS_MC_DRAM_BLOCK_MIN_SIZE will be assumed.
|
||||||
|
|
||||||
|
Booting Linux flavors which do not support 48-bit VA (< Linux 3.18)
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
One needs to use appropriate bootargs to boot Linux flavors which do
|
||||||
|
not support 48-bit VA (for e.g. < Linux 3.18) by appending mem=2048M, as shown
|
||||||
|
below:
|
||||||
|
|
||||||
|
=> setenv bootargs 'console=ttyS1,115200 root=/dev/ram
|
||||||
|
earlycon=uart8250,mmio,0x21c0600,115200 default_hugepagesz=2m hugepagesz=2m
|
||||||
|
hugepages=16 mem=2048M'
|
||||||
|
|
||||||
|
|
|
@ -244,15 +244,18 @@ void fdt_fixup_board_enet(void *fdt)
|
||||||
#ifdef CONFIG_OF_BOARD_SETUP
|
#ifdef CONFIG_OF_BOARD_SETUP
|
||||||
int ft_board_setup(void *blob, bd_t *bd)
|
int ft_board_setup(void *blob, bd_t *bd)
|
||||||
{
|
{
|
||||||
phys_addr_t base;
|
u64 base[CONFIG_NR_DRAM_BANKS];
|
||||||
phys_size_t size;
|
u64 size[CONFIG_NR_DRAM_BANKS];
|
||||||
|
|
||||||
ft_cpu_setup(blob, bd);
|
ft_cpu_setup(blob, bd);
|
||||||
|
|
||||||
/* limit the memory size to bank 1 until Linux can handle 40-bit PA */
|
/* fixup DT for the two GPP DDR banks */
|
||||||
base = getenv_bootm_low();
|
base[0] = gd->bd->bi_dram[0].start;
|
||||||
size = getenv_bootm_size();
|
size[0] = gd->bd->bi_dram[0].size;
|
||||||
fdt_fixup_memory(blob, (u64)base, (u64)size);
|
base[1] = gd->bd->bi_dram[1].start;
|
||||||
|
size[1] = gd->bd->bi_dram[1].size;
|
||||||
|
|
||||||
|
fdt_fixup_memory_banks(blob, base, size, 2);
|
||||||
|
|
||||||
#ifdef CONFIG_FSL_MC_ENET
|
#ifdef CONFIG_FSL_MC_ENET
|
||||||
fdt_fixup_board_enet(blob);
|
fdt_fixup_board_enet(blob);
|
||||||
|
|
|
@ -107,3 +107,14 @@ Booting Options
|
||||||
---------------
|
---------------
|
||||||
a) NOR boot
|
a) NOR boot
|
||||||
b) NAND boot
|
b) NAND boot
|
||||||
|
|
||||||
|
Booting Linux flavors which do not support 48-bit VA (< Linux 3.18)
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
One needs to use appropriate bootargs to boot Linux flavors which do
|
||||||
|
not support 48-bit VA (for e.g. < Linux 3.18) by appending mem=2048M, as shown
|
||||||
|
below:
|
||||||
|
|
||||||
|
=> setenv bootargs 'console=ttyS1,115200 root=/dev/ram
|
||||||
|
earlycon=uart8250,mmio,0x21c0600,115200 default_hugepagesz=2m hugepagesz=2m
|
||||||
|
hugepages=16 mem=2048M'
|
||||||
|
|
||||||
|
|
|
@ -241,15 +241,18 @@ void fdt_fixup_board_enet(void *fdt)
|
||||||
#ifdef CONFIG_OF_BOARD_SETUP
|
#ifdef CONFIG_OF_BOARD_SETUP
|
||||||
int ft_board_setup(void *blob, bd_t *bd)
|
int ft_board_setup(void *blob, bd_t *bd)
|
||||||
{
|
{
|
||||||
phys_addr_t base;
|
u64 base[CONFIG_NR_DRAM_BANKS];
|
||||||
phys_size_t size;
|
u64 size[CONFIG_NR_DRAM_BANKS];
|
||||||
|
|
||||||
ft_cpu_setup(blob, bd);
|
ft_cpu_setup(blob, bd);
|
||||||
|
|
||||||
/* limit the memory size to bank 1 until Linux can handle 40-bit PA */
|
/* fixup DT for the two GPP DDR banks */
|
||||||
base = getenv_bootm_low();
|
base[0] = gd->bd->bi_dram[0].start;
|
||||||
size = getenv_bootm_size();
|
size[0] = gd->bd->bi_dram[0].size;
|
||||||
fdt_fixup_memory(blob, (u64)base, (u64)size);
|
base[1] = gd->bd->bi_dram[1].start;
|
||||||
|
size[1] = gd->bd->bi_dram[1].size;
|
||||||
|
|
||||||
|
fdt_fixup_memory_banks(blob, base, size, 2);
|
||||||
|
|
||||||
#ifdef CONFIG_FSL_MC_ENET
|
#ifdef CONFIG_FSL_MC_ENET
|
||||||
fdt_fixup_board_enet(blob);
|
fdt_fixup_board_enet(blob);
|
||||||
|
|
Loading…
Reference in a new issue