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 <[email protected]> > Signed-off-by: Michal Simek <[email protected]> > --- > 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 <[email protected]> > 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 <[email protected]> > 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 <[email protected]> AuthorDate: Mon Jun 11 13:07:09 2018 -0600 Commit: Simon Glass <[email protected]> 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 <[email protected]> Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Vadim Bendebury <[email protected]> _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

