arm: imx53: remove usage of mx53_dram_size
Subsystems (3)
v3 cover arm: imx53: remove usage of mx53_dram_size
From: Patrick Bruenn <[email protected]>
Global variables are not available during board_init_f(). The i.MX53 boards m53evk, mx53cx9020 and mx53loco are using the exact same dram initialization code, which uses
'static uint32_t mx53_dram_size[2];' in dram_init(), dram_init_banksize() and get_effective_memsize() to avoid multiple calls to get_ram_size().
This series replaces the static variable with multiple calls to get_ram_size() and moves the shared code into arch/arm/mach-imx/mx5/.
The first patch is required to let cx9020 boot again. Please include at least this one. Without that patch u-boot on cx9020 is broken.
The second patch moves that code to a common place to be reused by m53evk and mx53loco. Pick it only if you think this change is useful for one of these boards and you are willing to include the third and/or last patch.
Pick the third patch if you want to use the changed code for m53evk. Pick the last patch if you want to use the changed code for mx53loco.
Changes in v3:
- rebase to v2018.01
- fix the cover-letter to make it more clear that the first patch is required to make the cx9020 boot again. All other patches are optional.
Changes in v2:
- move dram initialization into common location
- reuse fixed dram initialization for m53evk and mx53loco
Patrick Bruenn (4):
arm: imx: cx9020: remove usage of mx53_dram_size
arm: imx: cx9020: move dram init into common place
arm: imx: m53evk: remove usage of mx53_dram_size
arm: imx: mx53loco: remove usage of mx53_dram_size
arch/arm/mach-imx/mx5/Makefile | 5 ++++ arch/arm/mach-imx/mx5/mx53_dram.c | 45 ++++++++++++++++++++++++++++++++++ board/aries/m53evk/m53evk.c | 39 ----------------------------- board/beckhoff/mx53cx9020/mx53cx9020.c | 39 ----------------------------- board/freescale/mx53loco/mx53loco.c | 39 ----------------------------- 5 files changed, 50 insertions(+), 117 deletions(-) create mode 100644 arch/arm/mach-imx/mx5/mx53_dram.c
Signature · 1 line
2.11.0
PATCH v3 1/4 arm: imx: cx9020: remove usage of mx53_dram_size
From: Patrick Bruenn <[email protected]>
Static variables are not available during board_init_f(). 'static uint32_t mx53_dram_size[2];' was used in board specific dram_init(), dram_init_banksize() and get_effective_memsize() to avoid multiple calls to get_ram_size().
However multiple calls are better than undefined behavior... This fixes:
https://lists.denx.de/pipermail/u-boot/2017-November/313214.html
https://lists.denx.de/pipermail/u-boot/2017-December/314480.html
---
Changes in v3:
- rebase to v2018.01
- fix the cover-letter to make it more clear that the first patch is required to make the cx9020 boot again. All other patches are optional.
Changes in v2:
- move dram initialization into common location
- reuse fixed dram initialization for m53evk and mx53loco
board/beckhoff/mx53cx9020/mx53cx9020.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-)
board/beckhoff/mx53cx9020/mx53cx9020.c +5 -9
@@ -59,8 +59,6 @@ static const u32 CCAT_MODE_RUN = 0x0033DC8F;DECLARE_GLOBAL_DATA_PTR ; -static uint32_t mx53_dram_size[2 ]; -phys_size_t get_effective_memsize (void ) {/*
@@ -74,15 +72,13 @@ phys_size_t get_effective_memsize(void)* U-Boot into invalid memory area close to the end of the first * DRAM bank. */ -return mx53_dram_size[0 ]; +return get_ram_size ((void *)PHYS_SDRAM_1 ,1 <<30 ); }int dram_init (void ) { - mx53_dram_size[0 ] =get_ram_size ((void *)PHYS_SDRAM_1 ,1 <<30 ); - mx53_dram_size[1 ] =get_ram_size ((void *)PHYS_SDRAM_2 ,1 <<30 ); - - gd->ram_size = mx53_dram_size[0 ] + mx53_dram_size[1 ]; + gd->ram_size =get_ram_size ((void *)PHYS_SDRAM_1 ,1 <<30 ); + gd->ram_size +=get_ram_size ((void *)PHYS_SDRAM_2 ,1 <<30 );return 0 ; }
@@ -90,10 +86,10 @@ int dram_init(void)int dram_init_banksize (void ) { gd->bd->bi_dram[0 ].start =PHYS_SDRAM_1 ; - gd->bd->bi_dram[0 ].size = mx53_dram_size[0 ]; + gd->bd->bi_dram[0 ].size =get_ram_size ((void *)PHYS_SDRAM_1 ,1 <<30 ); gd->bd->bi_dram[1 ].start =PHYS_SDRAM_2 ; - gd->bd->bi_dram[1 ].size = mx53_dram_size[1 ]; + gd->bd->bi_dram[1 ].size =get_ram_size ((void *)PHYS_SDRAM_2 ,1 <<30 );return 0 ; }
Signature · 1 line
2.11.0
PATCH v3 2/4 arm: imx: cx9020: move dram init into common place
In reply to linux-kernel-dev at beckhoff.comFrom: Patrick Bruenn <[email protected]>
Move dram_init(), dram_init_banksize() and get_effective_memsize() to arch/arm/mach-imx/mx5/mx53_dram.c, where it can be reused by m53evk and mx53loco.
---
Changes in v3: None
Changes in v2: None
Patch-Cc: Fabio Estevam <[email protected]> Patch-Cc: Christian Gmeiner <[email protected]> Patch-Cc: Jason Liu <[email protected]> Patch-Cc: Patrick Bruenn <[email protected]> Patch-Cc: Stefano Babic <[email protected]> Patch-Cc: u-boot at lists.denx.de Patch-Cc: Marek Vasut <[email protected]> Patch-Cc: Albert Aribaud <[email protected]>
--- arch/arm/mach-imx/mx5/Makefile | 3 +++ arch/arm/mach-imx/mx5/mx53_dram.c | 45 ++++++++++++++++++++++++++++++++++ board/beckhoff/mx53cx9020/mx53cx9020.c | 35 -------------------------- 3 files changed, 48 insertions(+), 35 deletions(-) create mode 100644 arch/arm/mach-imx/mx5/mx53_dram.c
arch/arm/mach-imx/mx5/Makefile +3 -0
@@ -9,3 +9,6 @@ obj-y := soc.o clock.o obj-y += lowlevel_init.o + +# common files for mx53 dram initialization +obj-$(CONFIG_TARGET_MX53CX9020) += mx53_dram.o
arch/arm/mach-imx/mx5/mx53_dram.c new file +45 -0
45 lines not on this page · raw message
board/beckhoff/mx53cx9020/mx53cx9020.c +0 -35
@@ -59,41 +59,6 @@ static const u32 CCAT_MODE_RUN = 0x0033DC8F;DECLARE_GLOBAL_DATA_PTR ; -phys_size_t get_effective_memsize (void ) -{ -/* -* WARNING: We must override get_effective_memsize() function here -* to report only the size of the first DRAM bank. This is to make -* U-Boot relocator place U-Boot into valid memory, that is, at the -* end of the first DRAM bank. If we did not override this function -* like so, U-Boot would be placed@the address of the first DRAM -* bank + total DRAM size - sizeof(uboot), which in the setup where -* each DRAM bank contains 512MiB of DRAM would result in placing -* U-Boot into invalid memory area close to the end of the first -* DRAM bank. -*/ -return get_ram_size ((void *)PHYS_SDRAM_1 ,1 <<30 ); -} - -int dram_init (void ) -{ - gd->ram_size =get_ram_size ((void *)PHYS_SDRAM_1 ,1 <<30 ); - gd->ram_size +=get_ram_size ((void *)PHYS_SDRAM_2 ,1 <<30 ); - -return 0 ; -} - -int dram_init_banksize (void ) -{ - gd->bd->bi_dram[0 ].start =PHYS_SDRAM_1 ; - gd->bd->bi_dram[0 ].size =get_ram_size ((void *)PHYS_SDRAM_1 ,1 <<30 ); - - gd->bd->bi_dram[1 ].start =PHYS_SDRAM_2 ; - gd->bd->bi_dram[1 ].size =get_ram_size ((void *)PHYS_SDRAM_2 ,1 <<30 ); - -return 0 ; -} -u32 get_board_rev (void ) {struct iim_regs *iim = (struct iim_regs *)IMX_IIM_BASE ;
Signature · 1 line
2.11.0
PATCH v3 3/4 arm: imx: m53evk: remove usage of mx53_dram_size
In reply to linux-kernel-dev at beckhoff.comFrom: Patrick Bruenn <[email protected]>
Static variables are not available during board_init_f(). 'static uint32_t mx53_dram_size[2];' was used in board specific dram_init(), dram_init_banksize() and get_effective_memsize() to avoid multiple calls to get_ram_size().
Reused dram initialization functions from arch/arm/mach-imx/mx5/mx53_dram.c
---
Changes in v3: None
Changes in v2: None
Only compile tested with make m53evk_defconfig
--- arch/arm/mach-imx/mx5/Makefile | 1 + board/aries/m53evk/m53evk.c | 39 --------------------------------------- 2 files changed, 1 insertion(+), 39 deletions(-)
arch/arm/mach-imx/mx5/Makefile +1 -0
@@ -11,4 +11,5 @@ obj-y := soc.o clock.o obj-y += lowlevel_init.o # common files for mx53 dram initialization +obj-$(CONFIG_TARGET_M53EVK) += mx53_dram.o obj-$(CONFIG_TARGET_MX53CX9020) += mx53_dram.o
board/aries/m53evk/m53evk.c +0 -39
@@ -31,45 +31,6 @@DECLARE_GLOBAL_DATA_PTR ; -static uint32_t mx53_dram_size[2 ]; - -phys_size_t get_effective_memsize (void ) -{ -/* -* WARNING: We must override get_effective_memsize() function here -* to report only the size of the first DRAM bank. This is to make -* U-Boot relocator place U-Boot into valid memory, that is, at the -* end of the first DRAM bank. If we did not override this function -* like so, U-Boot would be placed at the address of the first DRAM -* bank + total DRAM size - sizeof(uboot), which in the setup where -* each DRAM bank contains 512MiB of DRAM would result in placing -* U-Boot into invalid memory area close to the end of the first -* DRAM bank. -*/ -return mx53_dram_size[0 ]; -} - -int dram_init (void ) -{ - mx53_dram_size[0 ] =get_ram_size ((void *)PHYS_SDRAM_1 ,1 <<30 ); - mx53_dram_size[1 ] =get_ram_size ((void *)PHYS_SDRAM_2 ,1 <<30 ); - - gd->ram_size = mx53_dram_size[0 ] + mx53_dram_size[1 ]; - -return 0 ; -} - -int dram_init_banksize (void ) -{ - gd->bd->bi_dram[0 ].start =PHYS_SDRAM_1 ; - gd->bd->bi_dram[0 ].size = mx53_dram_size[0 ]; - - gd->bd->bi_dram[1 ].start =PHYS_SDRAM_2 ; - gd->bd->bi_dram[1 ].size = mx53_dram_size[1 ]; - -return 0 ; -} -static void setup_iomux_uart (void ) {static const iomux_v3_cfg_t uart_pads[] = {
Signature · 1 line
2.11.0
PATCH v3 4/4 arm: imx: mx53loco: remove usage of mx53_dram_size
In reply to linux-kernel-dev at beckhoff.comFrom: Patrick Bruenn <[email protected]>
Static variables are not available during board_init_f(). 'static uint32_t mx53_dram_size[2];' was used in board specific dram_init(), dram_init_banksize() and get_effective_memsize() to avoid multiple calls to get_ram_size().
Reused dram initialization functions from arch/arm/mach-imx/mx5/mx53_dram.c
---
Changes in v3: None
Changes in v2: None
Only compile tested with make mx53loco_defconfig
--- arch/arm/mach-imx/mx5/Makefile | 1 + board/freescale/mx53loco/mx53loco.c | 39 ------------------------------------- 2 files changed, 1 insertion(+), 39 deletions(-)
arch/arm/mach-imx/mx5/Makefile +1 -0
@@ -13,3 +13,4 @@ obj-y += lowlevel_init.o # common files for mx53 dram initialization obj-$(CONFIG_TARGET_M53EVK) += mx53_dram.o obj-$(CONFIG_TARGET_MX53CX9020) += mx53_dram.o +obj-$(CONFIG_TARGET_MX53LOCO) += mx53_dram.o
board/freescale/mx53loco/mx53loco.c +0 -39
@@ -31,45 +31,6 @@DECLARE_GLOBAL_DATA_PTR ; -static uint32_t mx53_dram_size[2 ]; - -phys_size_t get_effective_memsize (void ) -{ -/* -* WARNING: We must override get_effective_memsize() function here -* to report only the size of the first DRAM bank. This is to make -* U-Boot relocator place U-Boot into valid memory, that is, at the -* end of the first DRAM bank. If we did not override this function -* like so, U-Boot would be placed at the address of the first DRAM -* bank + total DRAM size - sizeof(uboot), which in the setup where -* each DRAM bank contains 512MiB of DRAM would result in placing -* U-Boot into invalid memory area close to the end of the first -* DRAM bank. -*/ -return mx53_dram_size[0 ]; -} - -int dram_init (void ) -{ - mx53_dram_size[0 ] =get_ram_size ((void *)PHYS_SDRAM_1 ,1 <<30 ); - mx53_dram_size[1 ] =get_ram_size ((void *)PHYS_SDRAM_2 ,1 <<30 ); - - gd->ram_size = mx53_dram_size[0 ] + mx53_dram_size[1 ]; - -return 0 ; -} - -int dram_init_banksize (void ) -{ - gd->bd->bi_dram[0 ].start =PHYS_SDRAM_1 ; - gd->bd->bi_dram[0 ].size = mx53_dram_size[0 ]; - - gd->bd->bi_dram[1 ].start =PHYS_SDRAM_2 ; - gd->bd->bi_dram[1 ].size = mx53_dram_size[1 ]; - -return 0 ; -} -u32 get_board_rev (void ) {struct iim_regs *iim = (struct iim_regs *)IMX_IIM_BASE ;
Signature · 1 line
2.11.0
v3 cover arm: imx53: remove usage of mx53_dram_size
In reply to linux-kernel-dev at beckhoff.comHi Patrick,
Quoted 9 lines · linux-kernel-dev at beckhoff.com
From: Patrick Bruenn <[email protected]>
Global variables are not available during
board_init_f(). The i.MX53 boards m53evk, mx53cx9020 and mx53loco are using the exact same dram initialization code, which uses
'staticuint32_tmx53_dram_size[2];' indram_init(),dram_init_banksize()andget_effective_memsize()to avoid multiple calls toget_ram_size().
Quoted 6 lines
This series replaces the static variable with multiple calls to
get_ram_size()and moves the shared code intoarch/arm/mach-imx/mx5/.The first patch is required to let cx9020 boot again. Please include at least this one. Without that patch u-boot on cx9020 is broken.
I applied this.
Quoted 4 lines
The second patch moves that code to a common place to be reused by m53evk and mx53loco. Pick it only if you think this change is useful for one of these boards and you are willing to include the third and/or last patch.
From discussion between you and Marek, I understood that mx53evk is fine with changes. Applied, too.
Quoted 2 lines
Pick the third patch if you want to use the changed code for m53evk. Pick the last patch if you want to use the changed code for mx53loco.
And if mx53evk is fine, I prefer that mx53 boards behave in the same way. I pick up these, too.
Thanks,
Stefano Babic
Quoted 26 lines
Changes in v3:
- rebase to v2018.01
- fix the cover-letter to make it more clear that the first patch is required to make the cx9020 boot again. All other patches are optional.Changes in v2:
- move dram initialization into common location
- reuse fixed dram initialization for m53evk and mx53locoPatrick Bruenn (4):
arm: imx: cx9020: remove usage ofmx53_dram_size
arm: imx: cx9020: move dram init into common place
arm: imx: m53evk: remove usage ofmx53_dram_size
arm: imx: mx53loco: remove usage ofmx53_dram_sizearch/arm/mach-imx/mx5/Makefile | 5 ++++ arch/arm/mach-imx/mx5/mx53_dram.c | 45 ++++++++++++++++++++++++++++++++++ board/aries/m53evk/m53evk.c | 39 ----------------------------- board/beckhoff/mx53cx9020/mx53cx9020.c | 39 ----------------------------- board/freescale/mx53loco/mx53loco.c | 39 ----------------------------- 5 files changed, 50 insertions(+), 117 deletions(-) create mode 100644 arch/arm/mach-imx/mx5/mx53_dram.c
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================