[U-Boot] [PATCH v3 1/4] lib: fdtdec: Add new variable ram_start to global data
Michal Simek
michal.simek at xilinx.com
Fri Jul 13 06:37:07 UTC 2018
On 18.6.2018 08:18, Siva Durga Prasad Paladugu wrote:
> Added new variable ram_start to global data structure for holding
> the start address of first bank of RAM, and then use this ram_start
> for calculating ram_top properly. This patch fixes the erroneous
> calculation of ram_top incase of non zero ram start address.
> This patch also renames fdtdec_setup_memory_size() to
> fdtdec_setup_mem_size_start() as this routine now takes care
> of memory size and start.
>
> Signed-off-by: Siva Durga Prasad Paladugu <siva.durga.paladugu at xilinx.com>
> Signed-off-by: Michal Simek <michal.simek at xilinx.com>
> ---
> Changes from v2:
> - Used new varibale ram_start
> - Rename fdtdec_setup_memory_size
>
> Changes from v1:
> - None
> ---
> arch/arm/mach-mvebu/arm64-common.c | 2 +-
> board/emulation/qemu-arm/qemu-arm.c | 2 +-
> board/renesas/alt/alt.c | 2 +-
> board/renesas/blanche/blanche.c | 2 +-
> board/renesas/draak/draak.c | 2 +-
> board/renesas/eagle/eagle.c | 2 +-
> board/renesas/gose/gose.c | 2 +-
> board/renesas/koelsch/koelsch.c | 2 +-
> board/renesas/lager/lager.c | 2 +-
> board/renesas/porter/porter.c | 2 +-
> board/renesas/salvator-x/salvator-x.c | 2 +-
> board/renesas/silk/silk.c | 2 +-
> board/renesas/stout/stout.c | 2 +-
> board/renesas/ulcb/ulcb.c | 2 +-
> board/st/stm32f429-discovery/stm32f429-discovery.c | 2 +-
> board/st/stm32f429-evaluation/stm32f429-evaluation.c | 2 +-
> board/st/stm32f469-discovery/stm32f469-discovery.c | 2 +-
> board/st/stm32h743-disco/stm32h743-disco.c | 2 +-
> board/st/stm32h743-eval/stm32h743-eval.c | 2 +-
> board/xilinx/zynq/board.c | 2 +-
> board/xilinx/zynqmp/zynqmp.c | 2 +-
> board/xilinx/zynqmp_r5/board.c | 2 +-
> common/board_f.c | 4 ++--
> include/asm-generic/global_data.h | 1 +
> include/fdtdec.h | 16 +++++++++-------
> lib/fdtdec.c | 3 ++-
> tools/patman/func_test.py | 2 +-
> tools/patman/test/0000-cover-letter.patch | 2 +-
> ...orrect-cast-for-sandbox-in-fdtdec_setup_memory_.patch | 4 ++--
> tools/patman/test/test01.txt | 2 +-
> 30 files changed, 41 insertions(+), 37 deletions(-)
>
> diff --git a/arch/arm/mach-mvebu/arm64-common.c b/arch/arm/mach-mvebu/arm64-common.c
> index d3ea9e6..c2ab831 100644
> --- a/arch/arm/mach-mvebu/arm64-common.c
> +++ b/arch/arm/mach-mvebu/arm64-common.c
> @@ -54,7 +54,7 @@ int dram_init_banksize(void)
>
> int dram_init(void)
> {
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> return -EINVAL;
>
> return 0;
> diff --git a/board/emulation/qemu-arm/qemu-arm.c b/board/emulation/qemu-arm/qemu-arm.c
> index 6ec4200..926bbf2 100644
> --- a/board/emulation/qemu-arm/qemu-arm.c
> +++ b/board/emulation/qemu-arm/qemu-arm.c
> @@ -47,7 +47,7 @@ int board_init(void)
>
> int dram_init(void)
> {
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> return -EINVAL;
>
> return 0;
> diff --git a/board/renesas/alt/alt.c b/board/renesas/alt/alt.c
> index 86e9d24..58838ff 100644
> --- a/board/renesas/alt/alt.c
> +++ b/board/renesas/alt/alt.c
> @@ -78,7 +78,7 @@ int board_init(void)
>
> int dram_init(void)
> {
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> return -EINVAL;
>
> return 0;
> diff --git a/board/renesas/blanche/blanche.c b/board/renesas/blanche/blanche.c
> index 7d48d0f..1fd511c 100644
> --- a/board/renesas/blanche/blanche.c
> +++ b/board/renesas/blanche/blanche.c
> @@ -339,7 +339,7 @@ int board_eth_init(bd_t *bis)
>
> int dram_init(void)
> {
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> return -EINVAL;
>
> return 0;
> diff --git a/board/renesas/draak/draak.c b/board/renesas/draak/draak.c
> index f804fae..b178131 100644
> --- a/board/renesas/draak/draak.c
> +++ b/board/renesas/draak/draak.c
> @@ -96,7 +96,7 @@ int board_init(void)
>
> int dram_init(void)
> {
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> return -EINVAL;
>
> return 0;
> diff --git a/board/renesas/eagle/eagle.c b/board/renesas/eagle/eagle.c
> index 4bf0a20..26deca9 100644
> --- a/board/renesas/eagle/eagle.c
> +++ b/board/renesas/eagle/eagle.c
> @@ -73,7 +73,7 @@ int board_init(void)
>
> int dram_init(void)
> {
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> return -EINVAL;
>
> return 0;
> diff --git a/board/renesas/gose/gose.c b/board/renesas/gose/gose.c
> index 96ac29d..1862c16 100644
> --- a/board/renesas/gose/gose.c
> +++ b/board/renesas/gose/gose.c
> @@ -83,7 +83,7 @@ int board_init(void)
>
> int dram_init(void)
> {
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> return -EINVAL;
>
> return 0;
> diff --git a/board/renesas/koelsch/koelsch.c b/board/renesas/koelsch/koelsch.c
> index b6688a2..a650b8b 100644
> --- a/board/renesas/koelsch/koelsch.c
> +++ b/board/renesas/koelsch/koelsch.c
> @@ -85,7 +85,7 @@ int board_init(void)
>
> int dram_init(void)
> {
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> return -EINVAL;
>
> return 0;
> diff --git a/board/renesas/lager/lager.c b/board/renesas/lager/lager.c
> index 6bfb0d1..ee66f02 100644
> --- a/board/renesas/lager/lager.c
> +++ b/board/renesas/lager/lager.c
> @@ -94,7 +94,7 @@ int board_init(void)
>
> int dram_init(void)
> {
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> return -EINVAL;
>
> return 0;
> diff --git a/board/renesas/porter/porter.c b/board/renesas/porter/porter.c
> index cadff2c..b4d7f57 100644
> --- a/board/renesas/porter/porter.c
> +++ b/board/renesas/porter/porter.c
> @@ -83,7 +83,7 @@ int board_init(void)
>
> int dram_init(void)
> {
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> return -EINVAL;
>
> return 0;
> diff --git a/board/renesas/salvator-x/salvator-x.c b/board/renesas/salvator-x/salvator-x.c
> index 651877c..c104458 100644
> --- a/board/renesas/salvator-x/salvator-x.c
> +++ b/board/renesas/salvator-x/salvator-x.c
> @@ -108,7 +108,7 @@ int board_init(void)
>
> int dram_init(void)
> {
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> return -EINVAL;
>
> return 0;
> diff --git a/board/renesas/silk/silk.c b/board/renesas/silk/silk.c
> index 5fa472c..eda61ee 100644
> --- a/board/renesas/silk/silk.c
> +++ b/board/renesas/silk/silk.c
> @@ -78,7 +78,7 @@ int board_init(void)
>
> int dram_init(void)
> {
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> return -EINVAL;
>
> return 0;
> diff --git a/board/renesas/stout/stout.c b/board/renesas/stout/stout.c
> index 778593b..bc62caf 100644
> --- a/board/renesas/stout/stout.c
> +++ b/board/renesas/stout/stout.c
> @@ -97,7 +97,7 @@ int board_init(void)
>
> int dram_init(void)
> {
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> return -EINVAL;
>
> return 0;
> diff --git a/board/renesas/ulcb/ulcb.c b/board/renesas/ulcb/ulcb.c
> index 9e15e45..679f09d 100644
> --- a/board/renesas/ulcb/ulcb.c
> +++ b/board/renesas/ulcb/ulcb.c
> @@ -96,7 +96,7 @@ int board_init(void)
>
> int dram_init(void)
> {
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> return -EINVAL;
>
> return 0;
> diff --git a/board/st/stm32f429-discovery/stm32f429-discovery.c b/board/st/stm32f429-discovery/stm32f429-discovery.c
> index b7638c0..fea3b6e 100644
> --- a/board/st/stm32f429-discovery/stm32f429-discovery.c
> +++ b/board/st/stm32f429-discovery/stm32f429-discovery.c
> @@ -29,7 +29,7 @@ int dram_init(void)
> return rv;
> }
>
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> rv = -EINVAL;
>
> return rv;
> diff --git a/board/st/stm32f429-evaluation/stm32f429-evaluation.c b/board/st/stm32f429-evaluation/stm32f429-evaluation.c
> index 2e638c6..6bf7f33 100644
> --- a/board/st/stm32f429-evaluation/stm32f429-evaluation.c
> +++ b/board/st/stm32f429-evaluation/stm32f429-evaluation.c
> @@ -23,7 +23,7 @@ int dram_init(void)
> return rv;
> }
>
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> rv = -EINVAL;
>
> return rv;
> diff --git a/board/st/stm32f469-discovery/stm32f469-discovery.c b/board/st/stm32f469-discovery/stm32f469-discovery.c
> index 90d7045..e2c2865 100644
> --- a/board/st/stm32f469-discovery/stm32f469-discovery.c
> +++ b/board/st/stm32f469-discovery/stm32f469-discovery.c
> @@ -23,7 +23,7 @@ int dram_init(void)
> return rv;
> }
>
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> rv = -EINVAL;
>
> return rv;
> diff --git a/board/st/stm32h743-disco/stm32h743-disco.c b/board/st/stm32h743-disco/stm32h743-disco.c
> index fa007c7..469370c 100644
> --- a/board/st/stm32h743-disco/stm32h743-disco.c
> +++ b/board/st/stm32h743-disco/stm32h743-disco.c
> @@ -20,7 +20,7 @@ int dram_init(void)
> return ret;
> }
>
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> ret = -EINVAL;
>
> return ret;
> diff --git a/board/st/stm32h743-eval/stm32h743-eval.c b/board/st/stm32h743-eval/stm32h743-eval.c
> index fa007c7..469370c 100644
> --- a/board/st/stm32h743-eval/stm32h743-eval.c
> +++ b/board/st/stm32h743-eval/stm32h743-eval.c
> @@ -20,7 +20,7 @@ int dram_init(void)
> return ret;
> }
>
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> ret = -EINVAL;
>
> return ret;
> diff --git a/board/xilinx/zynq/board.c b/board/xilinx/zynq/board.c
> index e4f86d1..d80dd3d 100644
> --- a/board/xilinx/zynq/board.c
> +++ b/board/xilinx/zynq/board.c
> @@ -93,7 +93,7 @@ int dram_init_banksize(void)
>
> int dram_init(void)
> {
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> return -EINVAL;
>
> zynq_ddrc_init();
> diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
> index e41fec3..38f935c 100644
> --- a/board/xilinx/zynqmp/zynqmp.c
> +++ b/board/xilinx/zynqmp/zynqmp.c
> @@ -418,7 +418,7 @@ int dram_init_banksize(void)
>
> int dram_init(void)
> {
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> return -EINVAL;
>
> return 0;
> diff --git a/board/xilinx/zynqmp_r5/board.c b/board/xilinx/zynqmp_r5/board.c
> index 70fb202..954e463 100644
> --- a/board/xilinx/zynqmp_r5/board.c
> +++ b/board/xilinx/zynqmp_r5/board.c
> @@ -18,7 +18,7 @@ int dram_init_banksize(void)
>
> int dram_init(void)
> {
> - if (fdtdec_setup_memory_size() != 0)
> + if (fdtdec_setup_mem_size_start() != 0)
> return -EINVAL;
>
> return 0;
> diff --git a/common/board_f.c b/common/board_f.c
> index fa667c7..ccd2a2f 100644
> --- a/common/board_f.c
> +++ b/common/board_f.c
> @@ -281,9 +281,9 @@ static int setup_dest_addr(void)
> gd->ram_size -= CONFIG_SYS_MEM_TOP_HIDE;
> #endif
> #ifdef CONFIG_SYS_SDRAM_BASE
> - gd->ram_top = CONFIG_SYS_SDRAM_BASE;
> + gd->ram_start = CONFIG_SYS_SDRAM_BASE;
> #endif
> - gd->ram_top += get_effective_memsize();
> + gd->ram_top = gd->ram_start + get_effective_memsize();
> gd->ram_top = board_get_usable_ram_top(gd->mon_len);
> gd->relocaddr = gd->ram_top;
> debug("Ram top: %08lX\n", (ulong)gd->ram_top);
> diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h
> index 2d451f8..c8ee788 100644
> --- a/include/asm-generic/global_data.h
> +++ b/include/asm-generic/global_data.h
> @@ -52,6 +52,7 @@ typedef struct global_data {
> unsigned long env_has_init; /* Bitmask of boolean of struct env_location offsets */
> int env_load_location;
>
> + unsigned long ram_start; /* Start address of first bank of RAM */
> unsigned long ram_top; /* Top address of RAM used by U-Boot */
> unsigned long relocaddr; /* Start address of U-Boot in RAM */
> phys_size_t ram_size; /* RAM size */
> diff --git a/include/fdtdec.h b/include/fdtdec.h
> index c15b2a0..f5ebf52 100644
> --- a/include/fdtdec.h
> +++ b/include/fdtdec.h
> @@ -951,20 +951,22 @@ int fdtdec_decode_display_timing(const void *blob, int node, int index,
> struct display_timing *config);
>
> /**
> - * fdtdec_setup_memory_size() - decode and setup gd->ram_size
> + * fdtdec_setup_mem_size_start() - decode and setup gd->ram_size and
> + * gd->ram_start
> *
> - * Decode the /memory 'reg' property to determine the size of the first memory
> - * bank, populate the global data with the size of the first bank of memory.
> + * Decode the /memory 'reg' property to determine the size and start of the
> + * first memory bank, populate the global data with the size and start of the
> + * first bank of memory.
> *
> * This function should be called from a boards dram_init(). This helper
> - * function allows for boards to query the device tree for DRAM size instead of
> - * hard coding the value in the case where the memory size cannot be detected
> - * automatically.
> + * function allows for boards to query the device tree for DRAM size and start
> + * address instead of hard coding the value in the case where the memory size
> + * and start address cannot be detected automatically.
> *
> * @return 0 if OK, -EINVAL if the /memory node or reg property is missing or
> * invalid
> */
> -int fdtdec_setup_memory_size(void);
> +int fdtdec_setup_mem_size_start(void);
>
> /**
> * fdtdec_setup_memory_banksize() - decode and populate gd->bd->bi_dram
> diff --git a/lib/fdtdec.c b/lib/fdtdec.c
> index f4e8dbf..8c63278 100644
> --- a/lib/fdtdec.c
> +++ b/lib/fdtdec.c
> @@ -1154,7 +1154,7 @@ int fdtdec_decode_display_timing(const void *blob, int parent, int index,
> return ret;
> }
>
> -int fdtdec_setup_memory_size(void)
> +int fdtdec_setup_mem_size_start(void)
> {
> int ret, mem;
> struct fdt_resource res;
> @@ -1172,6 +1172,7 @@ int fdtdec_setup_memory_size(void)
> }
>
> gd->ram_size = (phys_size_t)(res.end - res.start + 1);
> + gd->ram_start = (unsigned long)res.start;
> debug("%s: Initial DRAM size %llx\n", __func__,
> (unsigned long long)gd->ram_size);
>
> diff --git a/tools/patman/func_test.py b/tools/patman/func_test.py
> index 85372f3..a16427a 100644
> --- a/tools/patman/func_test.py
> +++ b/tools/patman/func_test.py
> @@ -209,7 +209,7 @@ Changes in v4:
>
> Simon Glass (2):
> pci: Correct cast for sandbox
> - fdt: Correct cast for sandbox in fdtdec_setup_memory_size()
> + fdt: Correct cast for sandbox in fdtdec_setup_mem_size_start()
>
> cmd/pci.c | 3 ++-
> fs/fat/fat.c | 1 +
> diff --git a/tools/patman/test/0000-cover-letter.patch b/tools/patman/test/0000-cover-letter.patch
> index 2906201..84ba81b 100644
> --- a/tools/patman/test/0000-cover-letter.patch
> +++ b/tools/patman/test/0000-cover-letter.patch
> @@ -10,7 +10,7 @@ Content-Transfer-Encoding: 8bit
>
> Simon Glass (2):
> pci: Correct cast for sandbox
> - fdt: Correct cast for sandbox in fdtdec_setup_memory_size()
> + fdt: Correct cast for sandbox in fdtdec_setup_mem_size_start()
>
> cmd/pci.c | 3 ++-
> fs/fat/fat.c | 1 +
> diff --git a/tools/patman/test/0002-fdt-Correct-cast-for-sandbox-in-fdtdec_setup_memory_.patch b/tools/patman/test/0002-fdt-Correct-cast-for-sandbox-in-fdtdec_setup_memory_.patch
> index e328497..827e4cc 100644
> --- a/tools/patman/test/0002-fdt-Correct-cast-for-sandbox-in-fdtdec_setup_memory_.patch
> +++ b/tools/patman/test/0002-fdt-Correct-cast-for-sandbox-in-fdtdec_setup_memory_.patch
> @@ -1,7 +1,7 @@
> From 5ab48490f03051875ab13d288a4bf32b507d76fd Mon Sep 17 00:00:00 2001
> From: Simon Glass <sjg at chromium.org>
> Date: Sat, 15 Apr 2017 15:39:08 -0600
> -Subject: [RFC 2/2] fdt: Correct cast for sandbox in fdtdec_setup_memory_size()
> +Subject: [RFC 2/2] fdt: Correct cast for sandbox in fdtdec_setup_mem_size_start()
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
> @@ -58,7 +58,7 @@ diff --git a/lib/fdtdec.c b/lib/fdtdec.c
> index c072e54..942244f 100644
> --- a/lib/fdtdec.c
> +++ b/lib/fdtdec.c
> -@@ -1200,7 +1200,8 @@ int fdtdec_setup_memory_size(void)
> +@@ -1200,7 +1200,8 @@ int fdtdec_setup_mem_size_start(void)
> }
>
> gd->ram_size = (phys_size_t)(res.end - res.start + 1);
> diff --git a/tools/patman/test/test01.txt b/tools/patman/test/test01.txt
> index 8ad9587..d8be23d 100644
> --- a/tools/patman/test/test01.txt
> +++ b/tools/patman/test/test01.txt
> @@ -28,7 +28,7 @@ commit 5ab48490f03051875ab13d288a4bf32b507d76fd
> Author: Simon Glass <sjg at chromium.org>
> Date: Sat Apr 15 15:39:08 2017 -0600
>
> - fdt: Correct cast for sandbox in fdtdec_setup_memory_size()
> + fdt: Correct cast for sandbox in fdtdec_setup_mem_size_start()
>
> This gives a warning with some native compilers:
>
>
Siva: Can you please update this patch based on this one which was
applied? There is a new ram_base added.
Thanks,
Michal
commit 90c08fa038451d6d7b7d8711bfd829b61d64c490
Author: Michael Pratt <mpratt at chromium.org>
AuthorDate: Mon Jun 11 13:07:09 2018 -0600
Commit: Simon Glass <sjg at chromium.org>
CommitDate: Mon Jul 9 09:11:00 2018 -0600
fdt: Add device tree memory bindings
Support a default memory bank, specified in reg, as well as
board-specific memory banks in subtree board-id nodes.
This allows memory information to be provided in the device tree,
rather than hard-coded in, which will make it simpler to handle
similar devices with different memory banks, as the board-id values
or masks can be used to match devices.
Signed-off-by: Michael Pratt <mpratt at chromium.org>
Signed-off-by: Simon Glass <sjg at chromium.org>
Reviewed-by: Vadim Bendebury <vbendeb at chromium.org>
More information about the U-Boot
mailing list