diff mbox series

[U-Boot,v3,1/4] lib: fdtdec: Add new variable ram_start to global data

Message ID 1529302684-28709-1-git-send-email-siva.durga.paladugu@xilinx.com
State Superseded
Delegated to: Michal Simek
Headers show
Series [U-Boot,v3,1/4] lib: fdtdec: Add new variable ram_start to global data | expand

Commit Message

Siva Durga Prasad Paladugu June 18, 2018, 6:18 a.m. UTC
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@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@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(-)

Comments

Michal Simek June 22, 2018, 7:41 a.m. UTC | #1
Hi Simon,

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@xilinx.com>
> Signed-off-by: Michal Simek <michal.simek@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@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@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:
>      
> 

sjg: Do you see any issue with this patch?

I can't see the reason for fixing tools/patman but I will wait for you.

Thanks,
Michal
Simon Glass June 22, 2018, 7:28 p.m. UTC | #2
Hi,

On 22 June 2018 at 01:41, Michal Simek <michal.simek@xilinx.com> wrote:
> Hi Simon,
>
> 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@xilinx.com>
>> Signed-off-by: Michal Simek <michal.simek@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(-)

[...]

> sjg: Do you see any issue with this patch?

I think it is OK. Would like to get more people to look at it though.

>
> I can't see the reason for fixing tools/patman but I will wait for you.

Changing patman tests is OK with me. Keeps thing consistent.

Regards,
Simon
Michal Simek June 25, 2018, 6:15 a.m. UTC | #3
Hi,

On 22.6.2018 21:28, Simon Glass wrote:
> Hi,
> 
> On 22 June 2018 at 01:41, Michal Simek <michal.simek@xilinx.com> wrote:
>> Hi Simon,
>>
>> 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@xilinx.com>
>>> Signed-off-by: Michal Simek <michal.simek@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(-)
> 
> [...]
> 
>> sjg: Do you see any issue with this patch?
> 
> I think it is OK. Would like to get more people to look at it though.
> 
>>
>> I can't see the reason for fixing tools/patman but I will wait for you.
> 
> Changing patman tests is OK with me. Keeps thing consistent.

thanks Simon.

Tom: Do you see any issue with this change?

Marek: Can you please retest renesas boards that this patch is not
breaking your boards?

Thanks,
Michal
Tom Rini June 25, 2018, 12:56 p.m. UTC | #4
On Mon, Jun 25, 2018 at 08:15:34AM +0200, Michal Simek wrote:
> Hi,
> 
> On 22.6.2018 21:28, Simon Glass wrote:
> > Hi,
> > 
> > On 22 June 2018 at 01:41, Michal Simek <michal.simek@xilinx.com> wrote:
> >> Hi Simon,
> >>
> >> 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@xilinx.com>
> >>> Signed-off-by: Michal Simek <michal.simek@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(-)
> > 
> > [...]
> > 
> >> sjg: Do you see any issue with this patch?
> > 
> > I think it is OK. Would like to get more people to look at it though.
> > 
> >>
> >> I can't see the reason for fixing tools/patman but I will wait for you.
> > 
> > Changing patman tests is OK with me. Keeps thing consistent.
> 
> thanks Simon.
> 
> Tom: Do you see any issue with this change?

Yes, thanks.  You can take it via your tree once Marek has had a chance
to test things.

Reviewed-by: Tom Rini <trini@konsulko.com>
Marek Vasut July 12, 2018, 7:20 a.m. UTC | #5
On 06/25/2018 02:56 PM, Tom Rini wrote:
> On Mon, Jun 25, 2018 at 08:15:34AM +0200, Michal Simek wrote:
>> Hi,
>>
>> On 22.6.2018 21:28, Simon Glass wrote:
>>> Hi,
>>>
>>> On 22 June 2018 at 01:41, Michal Simek <michal.simek@xilinx.com> wrote:
>>>> Hi Simon,
>>>>
>>>> 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@xilinx.com>
>>>>> Signed-off-by: Michal Simek <michal.simek@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(-)
>>>
>>> [...]
>>>
>>>> sjg: Do you see any issue with this patch?
>>>
>>> I think it is OK. Would like to get more people to look at it though.
>>>
>>>>
>>>> I can't see the reason for fixing tools/patman but I will wait for you.
>>>
>>> Changing patman tests is OK with me. Keeps thing consistent.
>>
>> thanks Simon.
>>
>> Tom: Do you see any issue with this change?
> 
> Yes, thanks.  You can take it via your tree once Marek has had a chance
> to test things.
> 
> Reviewed-by: Tom Rini <trini@konsulko.com>

I'd rather like the rename in a separate patch, since that makes it hard
to review. I don't see how "This patch fixes the erroneous
calculation of ram_top incase of non zero ram start address." thought,
maybe it's hidden in this mega-patch.
Michal Simek July 12, 2018, 11:28 a.m. UTC | #6
On 12.7.2018 09:20, Marek Vasut wrote:
> On 06/25/2018 02:56 PM, Tom Rini wrote:
>> On Mon, Jun 25, 2018 at 08:15:34AM +0200, Michal Simek wrote:
>>> Hi,
>>>
>>> On 22.6.2018 21:28, Simon Glass wrote:
>>>> Hi,
>>>>
>>>> On 22 June 2018 at 01:41, Michal Simek <michal.simek@xilinx.com> wrote:
>>>>> Hi Simon,
>>>>>
>>>>> 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@xilinx.com>
>>>>>> Signed-off-by: Michal Simek <michal.simek@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(-)
>>>>
>>>> [...]
>>>>
>>>>> sjg: Do you see any issue with this patch?
>>>>
>>>> I think it is OK. Would like to get more people to look at it though.
>>>>
>>>>>
>>>>> I can't see the reason for fixing tools/patman but I will wait for you.
>>>>
>>>> Changing patman tests is OK with me. Keeps thing consistent.
>>>
>>> thanks Simon.
>>>
>>> Tom: Do you see any issue with this change?
>>
>> Yes, thanks.  You can take it via your tree once Marek has had a chance
>> to test things.
>>
>> Reviewed-by: Tom Rini <trini@konsulko.com>
> 
> I'd rather like the rename in a separate patch, since that makes it hard
> to review. I don't see how "This patch fixes the erroneous
> calculation of ram_top incase of non zero ram start address." thought,
> maybe it's hidden in this mega-patch.
> 

We have discussed this with Marek over chat that he will look how
renesas is configuring sdram based.
Fix is done only in lib/fdtdec.c to fill
gd->ram_start = (unsigned long)res.start;

the rest is just renaming around.

Thanks,
Michal
Michal Simek July 13, 2018, 6:37 a.m. UTC | #7
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@xilinx.com>
> Signed-off-by: Michal Simek <michal.simek@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@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@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@chromium.org>
AuthorDate: Mon Jun 11 13:07:09 2018 -0600
Commit:     Simon Glass <sjg@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@chromium.org>
    Signed-off-by: Simon Glass <sjg@chromium.org>
    Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
diff mbox series

Patch

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@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@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: