All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM
@ 2020-07-20 14:13 Ovidiu Panait
  2020-07-20 14:13 ` [PATCH v3 02/17] Kconfig: Convert CONFIG_SYS_SRAM_BASE to Kconfig Ovidiu Panait
                   ` (15 more replies)
  0 siblings, 16 replies; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-20 14:13 UTC (permalink / raw)
  To: u-boot

In order to be able to replace "#ifdef CONFIG_SYS_SRAM_BASE" sequences
with the IS_ENABLED() equivalent, introduce a new boolean Kconfig option
that signals whether the platform has SRAM support.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 Kconfig | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/Kconfig b/Kconfig
index 566ca72c92..934c020a2f 100644
--- a/Kconfig
+++ b/Kconfig
@@ -350,6 +350,17 @@ config PLATFORM_ELFENTRY
 	default "__start" if MIPS
 	default "_start"
 
+config SYS_HAS_SRAM
+	bool
+	default y if TARGET_PIC32MZDASK
+	default y if TARGET_DEVKIT8000
+	default y if TARGET_TRICORDER
+	default n
+	help
+	  Enable this to allow support for the on board SRAM.
+	  SRAM base address is controlled by CONFIG_SYS_SRAM_BASE.
+	  SRAM size is controlled by CONFIG_SYS_SRAM_SIZE.
+
 endmenu		# General setup
 
 menu "Boot images"
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 02/17] Kconfig: Convert CONFIG_SYS_SRAM_BASE to Kconfig
  2020-07-20 14:13 [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM Ovidiu Panait
@ 2020-07-20 14:13 ` Ovidiu Panait
  2020-07-20 14:13 ` [PATCH v3 03/17] Kconfig: Convert CONFIG_SYS_SRAM_SIZE " Ovidiu Panait
                   ` (14 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-20 14:13 UTC (permalink / raw)
  To: u-boot

This converts ad-hoc CONFIG_SYS_SRAM_BASE to Kconfig.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 Kconfig                       | 5 +++++
 include/configs/pic32mzdask.h | 1 -
 scripts/config_whitelist.txt  | 1 -
 3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/Kconfig b/Kconfig
index 934c020a2f..4ff1000848 100644
--- a/Kconfig
+++ b/Kconfig
@@ -361,6 +361,11 @@ config SYS_HAS_SRAM
 	  SRAM base address is controlled by CONFIG_SYS_SRAM_BASE.
 	  SRAM size is controlled by CONFIG_SYS_SRAM_SIZE.
 
+config SYS_SRAM_BASE
+	hex
+	default 0x80000000 if TARGET_PIC32MZDASK
+	default 0x0
+
 endmenu		# General setup
 
 menu "Boot images"
diff --git a/include/configs/pic32mzdask.h b/include/configs/pic32mzdask.h
index 73edd28f1a..25b898f2e6 100644
--- a/include/configs/pic32mzdask.h
+++ b/include/configs/pic32mzdask.h
@@ -19,7 +19,6 @@
 /*----------------------------------------------------------------------
  * Memory Layout
  */
-#define CONFIG_SYS_SRAM_BASE		0x80000000
 #define CONFIG_SYS_SRAM_SIZE		0x00080000 /* 512K */
 
 /* Initial RAM for temporary stack, global data */
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index 2ec7642583..93233f066b 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -3788,7 +3788,6 @@ CONFIG_SYS_SPL_LEN
 CONFIG_SYS_SPL_MALLOC_SIZE
 CONFIG_SYS_SPL_MALLOC_START
 CONFIG_SYS_SPR
-CONFIG_SYS_SRAM_BASE
 CONFIG_SYS_SRAM_SIZE
 CONFIG_SYS_SRAM_START
 CONFIG_SYS_SRIO
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 03/17] Kconfig: Convert CONFIG_SYS_SRAM_SIZE to Kconfig
  2020-07-20 14:13 [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM Ovidiu Panait
  2020-07-20 14:13 ` [PATCH v3 02/17] Kconfig: Convert CONFIG_SYS_SRAM_BASE to Kconfig Ovidiu Panait
@ 2020-07-20 14:13 ` Ovidiu Panait
  2020-07-20 14:13 ` [PATCH v3 04/17] Kconfig: Remove CONFIG_SYS_SRAM_START Ovidiu Panait
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-20 14:13 UTC (permalink / raw)
  To: u-boot

This converts ad-hoc CONFIG_SYS_SRAM_SIZE to Kconfig.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 Kconfig                       | 7 +++++++
 include/configs/devkit8000.h  | 1 -
 include/configs/pic32mzdask.h | 2 --
 include/configs/tricorder.h   | 1 -
 scripts/config_whitelist.txt  | 1 -
 5 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/Kconfig b/Kconfig
index 4ff1000848..d0f7ff80d1 100644
--- a/Kconfig
+++ b/Kconfig
@@ -366,6 +366,13 @@ config SYS_SRAM_BASE
 	default 0x80000000 if TARGET_PIC32MZDASK
 	default 0x0
 
+config SYS_SRAM_SIZE
+	hex
+	default 0x00080000 if TARGET_PIC32MZDASK
+	default 0x10000 if TARGET_DEVKIT8000
+	default 0x10000 if TARGET_TRICORDER
+	default 0x0
+
 endmenu		# General setup
 
 menu "Boot images"
diff --git a/include/configs/devkit8000.h b/include/configs/devkit8000.h
index f90c1c5a18..cdf7d7aa21 100644
--- a/include/configs/devkit8000.h
+++ b/include/configs/devkit8000.h
@@ -140,7 +140,6 @@
 
 /* SRAM config */
 #define CONFIG_SYS_SRAM_START              0x40200000
-#define CONFIG_SYS_SRAM_SIZE               0x10000
 
 /* Defines for SPL */
 
diff --git a/include/configs/pic32mzdask.h b/include/configs/pic32mzdask.h
index 25b898f2e6..d50edc7715 100644
--- a/include/configs/pic32mzdask.h
+++ b/include/configs/pic32mzdask.h
@@ -19,8 +19,6 @@
 /*----------------------------------------------------------------------
  * Memory Layout
  */
-#define CONFIG_SYS_SRAM_SIZE		0x00080000 /* 512K */
-
 /* Initial RAM for temporary stack, global data */
 #define CONFIG_SYS_INIT_RAM_SIZE	0x10000
 #define CONFIG_SYS_INIT_RAM_ADDR	\
diff --git a/include/configs/tricorder.h b/include/configs/tricorder.h
index 83aa3cd468..d438a7e635 100644
--- a/include/configs/tricorder.h
+++ b/include/configs/tricorder.h
@@ -202,7 +202,6 @@
 
 /* SRAM config */
 #define CONFIG_SYS_SRAM_START		0x40200000
-#define CONFIG_SYS_SRAM_SIZE		0x10000
 
 /* Defines for SPL */
 
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index 93233f066b..392b50875f 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -3788,7 +3788,6 @@ CONFIG_SYS_SPL_LEN
 CONFIG_SYS_SPL_MALLOC_SIZE
 CONFIG_SYS_SPL_MALLOC_START
 CONFIG_SYS_SPR
-CONFIG_SYS_SRAM_SIZE
 CONFIG_SYS_SRAM_START
 CONFIG_SYS_SRIO
 CONFIG_SYS_SRIO1_MEM_BASE
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 04/17] Kconfig: Remove CONFIG_SYS_SRAM_START
  2020-07-20 14:13 [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM Ovidiu Panait
  2020-07-20 14:13 ` [PATCH v3 02/17] Kconfig: Convert CONFIG_SYS_SRAM_BASE to Kconfig Ovidiu Panait
  2020-07-20 14:13 ` [PATCH v3 03/17] Kconfig: Convert CONFIG_SYS_SRAM_SIZE " Ovidiu Panait
@ 2020-07-20 14:13 ` Ovidiu Panait
  2020-07-20 14:13 ` [PATCH v3 05/17] cmd: bdinfo: Move sram info prints to generic code Ovidiu Panait
                   ` (12 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-20 14:13 UTC (permalink / raw)
  To: u-boot

Remove ad-hoc CONFIG_SYS_SRAM_START and use CONFIG_SYS_SRAM_BASE instead.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 Kconfig                      | 2 ++
 include/configs/devkit8000.h | 3 ---
 include/configs/tricorder.h  | 3 ---
 scripts/config_whitelist.txt | 1 -
 4 files changed, 2 insertions(+), 7 deletions(-)

diff --git a/Kconfig b/Kconfig
index d0f7ff80d1..b16ee0f57d 100644
--- a/Kconfig
+++ b/Kconfig
@@ -364,6 +364,8 @@ config SYS_HAS_SRAM
 config SYS_SRAM_BASE
 	hex
 	default 0x80000000 if TARGET_PIC32MZDASK
+	default 0x40200000 if TARGET_DEVKIT8000
+	default 0x40200000 if TARGET_TRICORDER
 	default 0x0
 
 config SYS_SRAM_SIZE
diff --git a/include/configs/devkit8000.h b/include/configs/devkit8000.h
index cdf7d7aa21..b4f649a958 100644
--- a/include/configs/devkit8000.h
+++ b/include/configs/devkit8000.h
@@ -138,9 +138,6 @@
 
 /* Boot Argument Buffer Size */
 
-/* SRAM config */
-#define CONFIG_SYS_SRAM_START              0x40200000
-
 /* Defines for SPL */
 
 /* NAND boot config */
diff --git a/include/configs/tricorder.h b/include/configs/tricorder.h
index d438a7e635..8ffa39f92f 100644
--- a/include/configs/tricorder.h
+++ b/include/configs/tricorder.h
@@ -200,9 +200,6 @@
 						CONFIG_SYS_INIT_RAM_SIZE - \
 						GENERATED_GBL_DATA_SIZE)
 
-/* SRAM config */
-#define CONFIG_SYS_SRAM_START		0x40200000
-
 /* Defines for SPL */
 
 #define CONFIG_SPL_NAND_BASE
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index 392b50875f..f840a504b6 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -3788,7 +3788,6 @@ CONFIG_SYS_SPL_LEN
 CONFIG_SYS_SPL_MALLOC_SIZE
 CONFIG_SYS_SPL_MALLOC_START
 CONFIG_SYS_SPR
-CONFIG_SYS_SRAM_START
 CONFIG_SYS_SRIO
 CONFIG_SYS_SRIO1_MEM_BASE
 CONFIG_SYS_SRIO1_MEM_BUS
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 05/17] cmd: bdinfo: Move sram info prints to generic code
  2020-07-20 14:13 [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM Ovidiu Panait
                   ` (2 preceding siblings ...)
  2020-07-20 14:13 ` [PATCH v3 04/17] Kconfig: Remove CONFIG_SYS_SRAM_START Ovidiu Panait
@ 2020-07-20 14:13 ` Ovidiu Panait
  2020-07-21 14:17   ` Simon Glass
  2020-07-20 14:13 ` [PATCH v3 06/17] board_f: Introduce setup_bdinfo initcall Ovidiu Panait
                   ` (11 subsequent siblings)
  15 siblings, 1 reply; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-20 14:13 UTC (permalink / raw)
  To: u-boot

bi_sramstart and bi_sramsize are generic members of the bd_info structure,
so move the m68k/powerpc-specific prints to generic code. Also, print them
only if SRAM support is enabled via CONFIG_SYS_HAS_SRAM.

Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 arch/m68k/lib/bdinfo.c    | 4 ----
 arch/powerpc/lib/bdinfo.c | 4 ----
 cmd/bdinfo.c              | 4 ++++
 3 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/arch/m68k/lib/bdinfo.c b/arch/m68k/lib/bdinfo.c
index fb4d1a52fd..b7bc6a3044 100644
--- a/arch/m68k/lib/bdinfo.c
+++ b/arch/m68k/lib/bdinfo.c
@@ -15,10 +15,6 @@ void arch_print_bdinfo(void)
 {
 	struct bd_info *bd = gd->bd;
 
-#if defined(CONFIG_SYS_INIT_RAM_ADDR)
-	bdinfo_print_num("sramstart", (ulong)bd->bi_sramstart);
-	bdinfo_print_num("sramsize", (ulong)bd->bi_sramsize);
-#endif
 	bdinfo_print_mhz("busfreq", bd->bi_busfreq);
 #if defined(CONFIG_SYS_MBAR)
 	bdinfo_print_num("mbar", bd->bi_mbar_base);
diff --git a/arch/powerpc/lib/bdinfo.c b/arch/powerpc/lib/bdinfo.c
index 75611e2592..07f823ee7a 100644
--- a/arch/powerpc/lib/bdinfo.c
+++ b/arch/powerpc/lib/bdinfo.c
@@ -20,10 +20,6 @@ void arch_print_bdinfo(void)
 {
 	struct bd_info *bd = gd->bd;
 
-#if defined(CONFIG_SYS_INIT_RAM_ADDR)
-	bdinfo_print_num("sramstart", (ulong)bd->bi_sramstart);
-	bdinfo_print_num("sramsize", (ulong)bd->bi_sramsize);
-#endif
 	bdinfo_print_mhz("busfreq", bd->bi_busfreq);
 #if defined(CONFIG_MPC8xx) || defined(CONFIG_E500)
 	bdinfo_print_num("immr_base", bd->bi_immr_base);
diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c
index 8b2c105e77..7da36f8096 100644
--- a/cmd/bdinfo.c
+++ b/cmd/bdinfo.c
@@ -75,6 +75,10 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 	print_bi_dram(bd);
 	bdinfo_print_num("memstart", (ulong)bd->bi_memstart);
 	print_lnum("memsize", (u64)bd->bi_memsize);
+	if (IS_ENABLED(CONFIG_SYS_HAS_SRAM)) {
+		bdinfo_print_num("sramstart", (ulong)bd->bi_sramstart);
+		bdinfo_print_num("sramsize", (ulong)bd->bi_sramsize);
+	}
 	bdinfo_print_num("flashstart", (ulong)bd->bi_flashstart);
 	bdinfo_print_num("flashsize", (ulong)bd->bi_flashsize);
 	bdinfo_print_num("flashoffset", (ulong)bd->bi_flashoffset);
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 06/17] board_f: Introduce setup_bdinfo initcall
  2020-07-20 14:13 [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM Ovidiu Panait
                   ` (3 preceding siblings ...)
  2020-07-20 14:13 ` [PATCH v3 05/17] cmd: bdinfo: Move sram info prints to generic code Ovidiu Panait
@ 2020-07-20 14:13 ` Ovidiu Panait
  2020-07-21 14:17   ` Simon Glass
  2020-07-20 14:13 ` [PATCH v3 07/17] board_f: Introduce arch_setup_bdinfo initcall Ovidiu Panait
                   ` (10 subsequent siblings)
  15 siblings, 1 reply; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-20 14:13 UTC (permalink / raw)
  To: u-boot

Introduce setup_bdinfo initcall as a generic routine to populate bdinfo
fields.

Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 common/board_f.c |  6 ++++++
 include/init.h   | 10 ++++++++++
 2 files changed, 16 insertions(+)

diff --git a/common/board_f.c b/common/board_f.c
index 88ff0424a7..72446f6da5 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -598,6 +598,11 @@ static int display_new_sp(void)
 	return 0;
 }
 
+int setup_bdinfo(void)
+{
+	return 0;
+}
+
 #if defined(CONFIG_M68K) || defined(CONFIG_MIPS) || defined(CONFIG_PPC) || \
 	defined(CONFIG_SH)
 static int setup_board_part1(void)
@@ -975,6 +980,7 @@ static const init_fnc_t init_sequence_f[] = {
 	reserve_stacks,
 	dram_init_banksize,
 	show_dram_config,
+	setup_bdinfo,
 #if defined(CONFIG_M68K) || defined(CONFIG_MIPS) || defined(CONFIG_PPC) || \
 	defined(CONFIG_SH)
 	setup_board_part1,
diff --git a/include/init.h b/include/init.h
index e727031514..2a8c910677 100644
--- a/include/init.h
+++ b/include/init.h
@@ -141,6 +141,16 @@ int arch_reserve_stacks(void);
  */
 int arch_reserve_mmu(void);
 
+/**
+ * setup_bdinfo() - Generic boardinfo setup
+ *
+ * Routine for populating various generic boardinfo fields of
+ * gd->bd. It is called during the generic board init sequence.
+ *
+ * Return: 0 if OK
+ */
+int setup_bdinfo(void);
+
 /**
  * init_cache_f_r() - Turn on the cache in preparation for relocation
  *
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 07/17] board_f: Introduce arch_setup_bdinfo initcall
  2020-07-20 14:13 [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM Ovidiu Panait
                   ` (4 preceding siblings ...)
  2020-07-20 14:13 ` [PATCH v3 06/17] board_f: Introduce setup_bdinfo initcall Ovidiu Panait
@ 2020-07-20 14:13 ` Ovidiu Panait
  2020-07-20 14:13 ` [PATCH v3 08/17] board_f: Introduce board_setup_bdinfo_mem initcall Ovidiu Panait
                   ` (9 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-20 14:13 UTC (permalink / raw)
  To: u-boot

Certain architectures (ppc, mips, sh, m68k) use setup board_part1 and
setup_board_part2 calls during pre-relocation init to populate gd->bd
boardinfo fields. This makes the generic init sequence cluttered with
arch-specific ifdefs.

In order to clean these arch-specific sequences from generic init,
introduce arch_setup_bdinfo weak initcall so that everyone can define their
own bdinfo setup routines.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 common/board_f.c |  7 ++++++-
 include/init.h   | 12 ++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/common/board_f.c b/common/board_f.c
index 72446f6da5..4356431488 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -598,11 +598,16 @@ static int display_new_sp(void)
 	return 0;
 }
 
-int setup_bdinfo(void)
+__weak int arch_setup_bdinfo(void)
 {
 	return 0;
 }
 
+int setup_bdinfo(void)
+{
+	return arch_setup_bdinfo();
+}
+
 #if defined(CONFIG_M68K) || defined(CONFIG_MIPS) || defined(CONFIG_PPC) || \
 	defined(CONFIG_SH)
 static int setup_board_part1(void)
diff --git a/include/init.h b/include/init.h
index 2a8c910677..e9354e8fca 100644
--- a/include/init.h
+++ b/include/init.h
@@ -141,6 +141,18 @@ int arch_reserve_stacks(void);
  */
 int arch_reserve_mmu(void);
 
+/**
+ * arch_setup_bdinfo() - Architecture dependent boardinfo setup
+ *
+ * Architecture-specific routine for populating various boardinfo fields of
+ * gd->bd. It is called during the generic board init sequence.
+ *
+ * If an implementation is not provided, it will just be a nop stub.
+ *
+ * Return: 0 if OK
+ */
+int arch_setup_bdinfo(void);
+
 /**
  * setup_bdinfo() - Generic boardinfo setup
  *
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 08/17] board_f: Introduce board_setup_bdinfo_mem initcall
  2020-07-20 14:13 [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM Ovidiu Panait
                   ` (5 preceding siblings ...)
  2020-07-20 14:13 ` [PATCH v3 07/17] board_f: Introduce arch_setup_bdinfo initcall Ovidiu Panait
@ 2020-07-20 14:13 ` Ovidiu Panait
  2020-07-21  7:05   ` Alexey Brodkin
  2020-07-21 14:07   ` Simon Glass
  2020-07-20 14:13 ` [PATCH v3 09/17] board_f: Move sram bdinfo assignments to generic code Ovidiu Panait
                   ` (8 subsequent siblings)
  15 siblings, 2 replies; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-20 14:13 UTC (permalink / raw)
  To: u-boot

In most cases (arc, ppc, mips, sh, m68k) gd->bd->bi_memsize and
gd->bd->bi_memstart are populated in a similar fashion:

    bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
    bd->bi_memsize = gd->ram_size;

However, there is a special case in board/cadence/xtfpga/xtfpga.c that
populates those fields in a board specific manner:

    gd->bd->bi_memstart = PHYSADDR(CONFIG_SYS_SDRAM_BASE);
    gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;

Due to this fact, a weak board-specific routine is introduced to take care
of this scenario. Also, move all assignments to bi_mem* fields to
setup_bdinfo initcall.

Use gd->ram_base to populate bi_memstart to avoid an ifdef.

Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 arch/arc/lib/cpu.c            |  2 --
 board/cadence/xtfpga/xtfpga.c |  7 ++++++-
 common/board_f.c              | 21 +++++++++++++++------
 include/init.h                | 12 ++++++++++++
 4 files changed, 33 insertions(+), 9 deletions(-)

diff --git a/arch/arc/lib/cpu.c b/arch/arc/lib/cpu.c
index 27b5832a0c..ccb7e1b265 100644
--- a/arch/arc/lib/cpu.c
+++ b/arch/arc/lib/cpu.c
@@ -27,8 +27,6 @@ int arch_cpu_init(void)
 
 int arch_early_init_r(void)
 {
-	gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
-	gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
 	return 0;
 }
 
diff --git a/board/cadence/xtfpga/xtfpga.c b/board/cadence/xtfpga/xtfpga.c
index 2869e5cf68..6f168f3f9f 100644
--- a/board/cadence/xtfpga/xtfpga.c
+++ b/board/cadence/xtfpga/xtfpga.c
@@ -49,7 +49,7 @@ int checkboard(void)
 	return 0;
 }
 
-int dram_init_banksize(void)
+int board_setup_bdinfo_mem(void)
 {
 	gd->bd->bi_memstart = PHYSADDR(CONFIG_SYS_SDRAM_BASE);
 	gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
@@ -57,6 +57,11 @@ int dram_init_banksize(void)
 	return 0;
 }
 
+int dram_init_banksize(void)
+{
+	return 0;
+}
+
 int board_postclk_init(void)
 {
 	/*
diff --git a/common/board_f.c b/common/board_f.c
index 4356431488..ac72096e3a 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -598,6 +598,19 @@ static int display_new_sp(void)
 	return 0;
 }
 
+__weak int board_setup_bdinfo_mem(void)
+{
+	struct bd_info *bd = gd->bd;
+
+	/*
+	 * Save local variables to board info struct
+	 */
+	bd->bi_memstart = gd->ram_base;  /* start of memory */
+	bd->bi_memsize = gd->ram_size;   /* size in bytes */
+
+	return 0;
+}
+
 __weak int arch_setup_bdinfo(void)
 {
 	return 0;
@@ -605,6 +618,8 @@ __weak int arch_setup_bdinfo(void)
 
 int setup_bdinfo(void)
 {
+	board_setup_bdinfo_mem();
+
 	return arch_setup_bdinfo();
 }
 
@@ -614,12 +629,6 @@ static int setup_board_part1(void)
 {
 	struct bd_info *bd = gd->bd;
 
-	/*
-	 * Save local variables to board info struct
-	 */
-	bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;	/* start of memory */
-	bd->bi_memsize = gd->ram_size;			/* size in bytes */
-
 #ifdef CONFIG_SYS_SRAM_BASE
 	bd->bi_sramstart = CONFIG_SYS_SRAM_BASE;	/* start of SRAM */
 	bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE;		/* size  of SRAM */
diff --git a/include/init.h b/include/init.h
index e9354e8fca..85c8f49095 100644
--- a/include/init.h
+++ b/include/init.h
@@ -141,6 +141,18 @@ int arch_reserve_stacks(void);
  */
 int arch_reserve_mmu(void);
 
+/**
+ * board_setup_bdinfo_mem() - Populate gd->bd->bi_mem* fields
+ *
+ * Board-specific routine for populating gd->bd->bi_mem* fields.
+ * It is called during the generic board init sequence in setup_bdinfo.
+ *
+ * If an implementation is not provided, the generic one will be used.
+ *
+ * Return: 0 if OK
+ */
+int board_setup_bdinfo_mem(void);
+
 /**
  * arch_setup_bdinfo() - Architecture dependent boardinfo setup
  *
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 09/17] board_f: Move sram bdinfo assignments to generic code
  2020-07-20 14:13 [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM Ovidiu Panait
                   ` (6 preceding siblings ...)
  2020-07-20 14:13 ` [PATCH v3 08/17] board_f: Introduce board_setup_bdinfo_mem initcall Ovidiu Panait
@ 2020-07-20 14:13 ` Ovidiu Panait
  2020-07-21 14:17   ` Simon Glass
  2020-07-20 14:14 ` [PATCH v3 10/17] board_f: m68k: Factor out m68k-specific bdinfo setup Ovidiu Panait
                   ` (7 subsequent siblings)
  15 siblings, 1 reply; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-20 14:13 UTC (permalink / raw)
  To: u-boot

Move sram related bdinfo from arch-specific setup_board_part1 to generic
code in setup_bdinfo. Also use "if (IS_ENABLED(CONFIG_SYS_HAS_SRAM))"
instead of "#ifdef CONFIG_SYS_SRAM_BASE".

Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 common/board_f.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/common/board_f.c b/common/board_f.c
index ac72096e3a..1befab5446 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -618,8 +618,15 @@ __weak int arch_setup_bdinfo(void)
 
 int setup_bdinfo(void)
 {
+	struct bd_info *bd = gd->bd;
+
 	board_setup_bdinfo_mem();
 
+	if (IS_ENABLED(CONFIG_SYS_HAS_SRAM)) {
+		bd->bi_sramstart = CONFIG_SYS_SRAM_BASE; /* start of SRAM */
+		bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE;  /* size  of SRAM */
+	}
+
 	return arch_setup_bdinfo();
 }
 
@@ -629,11 +636,6 @@ static int setup_board_part1(void)
 {
 	struct bd_info *bd = gd->bd;
 
-#ifdef CONFIG_SYS_SRAM_BASE
-	bd->bi_sramstart = CONFIG_SYS_SRAM_BASE;	/* start of SRAM */
-	bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE;		/* size  of SRAM */
-#endif
-
 #if defined(CONFIG_E500) || defined(CONFIG_MPC86xx)
 	bd->bi_immr_base = CONFIG_SYS_IMMR;	/* base  of IMMR register     */
 #endif
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 10/17] board_f: m68k: Factor out m68k-specific bdinfo setup
  2020-07-20 14:13 [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM Ovidiu Panait
                   ` (7 preceding siblings ...)
  2020-07-20 14:13 ` [PATCH v3 09/17] board_f: Move sram bdinfo assignments to generic code Ovidiu Panait
@ 2020-07-20 14:14 ` Ovidiu Panait
  2020-07-21 14:17   ` Simon Glass
  2020-07-20 14:14 ` [PATCH v3 11/17] board_f: ppc: Factor out ppc-specific " Ovidiu Panait
                   ` (6 subsequent siblings)
  15 siblings, 1 reply; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-20 14:14 UTC (permalink / raw)
  To: u-boot

Factor out m68k-specific bdinfo setup to arch_setup_bdinfo in
arch/m68k/lib/bdinfo.c. Also, use if(IS_ENABLED()) instead of #ifdef where
possible.

Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 arch/m68k/lib/bdinfo.c | 21 +++++++++++++++++++++
 common/board_f.c       | 19 ++++---------------
 2 files changed, 25 insertions(+), 15 deletions(-)

diff --git a/arch/m68k/lib/bdinfo.c b/arch/m68k/lib/bdinfo.c
index b7bc6a3044..404e5f19ed 100644
--- a/arch/m68k/lib/bdinfo.c
+++ b/arch/m68k/lib/bdinfo.c
@@ -11,6 +11,27 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+int arch_setup_bdinfo(void)
+{
+	struct bd_info *bd = gd->bd;
+
+	bd->bi_mbar_base = CONFIG_SYS_MBAR; /* base of internal registers */
+
+	bd->bi_intfreq = gd->cpu_clk;	/* Internal Freq, in Hz */
+	bd->bi_busfreq = gd->bus_clk;	/* Bus Freq,      in Hz */
+
+	if (IS_ENABLED(CONFIG_PCI))
+		bd->bi_pcifreq = gd->pci_clk;
+
+#if defined(CONFIG_EXTRA_CLOCK)
+	bd->bi_inpfreq = gd->arch.inp_clk;	/* input Freq in Hz */
+	bd->bi_vcofreq = gd->arch.vco_clk;	/* vco Freq in Hz */
+	bd->bi_flbfreq = gd->arch.flb_clk;	/* flexbus Freq in Hz */
+#endif
+
+	return 0;
+}
+
 void arch_print_bdinfo(void)
 {
 	struct bd_info *bd = gd->bd;
diff --git a/common/board_f.c b/common/board_f.c
index 1befab5446..8ab76a5c7a 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -630,7 +630,7 @@ int setup_bdinfo(void)
 	return arch_setup_bdinfo();
 }
 
-#if defined(CONFIG_M68K) || defined(CONFIG_MIPS) || defined(CONFIG_PPC) || \
+#if defined(CONFIG_MIPS) || defined(CONFIG_PPC) || \
 	defined(CONFIG_SH)
 static int setup_board_part1(void)
 {
@@ -639,9 +639,6 @@ static int setup_board_part1(void)
 #if defined(CONFIG_E500) || defined(CONFIG_MPC86xx)
 	bd->bi_immr_base = CONFIG_SYS_IMMR;	/* base  of IMMR register     */
 #endif
-#if defined(CONFIG_M68K)
-	bd->bi_mbar_base = CONFIG_SYS_MBAR;	/* base of internal registers */
-#endif
 #if defined(CONFIG_MPC83xx)
 	bd->bi_immrbar = CONFIG_SYS_IMMR;
 #endif
@@ -650,7 +647,7 @@ static int setup_board_part1(void)
 }
 #endif
 
-#if defined(CONFIG_PPC) || defined(CONFIG_M68K)
+#if defined(CONFIG_PPC)
 static int setup_board_part2(void)
 {
 	struct bd_info *bd = gd->bd;
@@ -663,14 +660,6 @@ static int setup_board_part2(void)
 	bd->bi_sccfreq = gd->arch.scc_clk;
 	bd->bi_vco = gd->arch.vco_out;
 #endif /* CONFIG_CPM2 */
-#if defined(CONFIG_M68K) && defined(CONFIG_PCI)
-	bd->bi_pcifreq = gd->pci_clk;
-#endif
-#if defined(CONFIG_EXTRA_CLOCK)
-	bd->bi_inpfreq = gd->arch.inp_clk;	/* input Freq in Hz */
-	bd->bi_vcofreq = gd->arch.vco_clk;	/* vco Freq in Hz */
-	bd->bi_flbfreq = gd->arch.flb_clk;	/* flexbus Freq in Hz */
-#endif
 
 	return 0;
 }
@@ -997,11 +986,11 @@ static const init_fnc_t init_sequence_f[] = {
 	dram_init_banksize,
 	show_dram_config,
 	setup_bdinfo,
-#if defined(CONFIG_M68K) || defined(CONFIG_MIPS) || defined(CONFIG_PPC) || \
+#if defined(CONFIG_MIPS) || defined(CONFIG_PPC) || \
 	defined(CONFIG_SH)
 	setup_board_part1,
 #endif
-#if defined(CONFIG_PPC) || defined(CONFIG_M68K)
+#if defined(CONFIG_PPC)
 	INIT_FUNC_WATCHDOG_RESET
 	setup_board_part2,
 #endif
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 11/17] board_f: ppc: Factor out ppc-specific bdinfo setup
  2020-07-20 14:13 [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM Ovidiu Panait
                   ` (8 preceding siblings ...)
  2020-07-20 14:14 ` [PATCH v3 10/17] board_f: m68k: Factor out m68k-specific bdinfo setup Ovidiu Panait
@ 2020-07-20 14:14 ` Ovidiu Panait
  2020-07-21 14:17   ` Simon Glass
  2020-07-20 14:14 ` [PATCH v3 12/17] board_f: Remove setup_board_part1 Ovidiu Panait
                   ` (5 subsequent siblings)
  15 siblings, 1 reply; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-20 14:14 UTC (permalink / raw)
  To: u-boot

Factor out ppc-specific bdinfo setup from generic init sequence to
arch_setup_bdinfo in arch/powerpc/lib/bdinfo.c.

Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 arch/powerpc/lib/bdinfo.c | 25 +++++++++++++++++++++++++
 common/board_f.c          | 36 ++----------------------------------
 2 files changed, 27 insertions(+), 34 deletions(-)

diff --git a/arch/powerpc/lib/bdinfo.c b/arch/powerpc/lib/bdinfo.c
index 07f823ee7a..36c9c99ee6 100644
--- a/arch/powerpc/lib/bdinfo.c
+++ b/arch/powerpc/lib/bdinfo.c
@@ -11,6 +11,31 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+int arch_setup_bdinfo(void)
+{
+	struct bd_info *bd = gd->bd;
+
+#if defined(CONFIG_E500) || defined(CONFIG_MPC86xx)
+	bd->bi_immr_base = CONFIG_SYS_IMMR;	/* base  of IMMR register     */
+#endif
+
+#if defined(CONFIG_MPC83xx)
+	bd->bi_immrbar = CONFIG_SYS_IMMR;
+#endif
+
+	bd->bi_intfreq = gd->cpu_clk;	/* Internal Freq, in Hz */
+	bd->bi_busfreq = gd->bus_clk;	/* Bus Freq,      in Hz */
+
+#if defined(CONFIG_CPM2)
+	bd->bi_cpmfreq = gd->arch.cpm_clk;
+	bd->bi_brgfreq = gd->arch.brg_clk;
+	bd->bi_sccfreq = gd->arch.scc_clk;
+	bd->bi_vco = gd->arch.vco_out;
+#endif /* CONFIG_CPM2 */
+
+	return 0;
+}
+
 void __weak board_detail(void)
 {
 	/* Please define board_detail() for your PPC platform */
diff --git a/common/board_f.c b/common/board_f.c
index 8ab76a5c7a..7eb65fc224 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -630,37 +630,9 @@ int setup_bdinfo(void)
 	return arch_setup_bdinfo();
 }
 
-#if defined(CONFIG_MIPS) || defined(CONFIG_PPC) || \
-	defined(CONFIG_SH)
+#if defined(CONFIG_MIPS) || defined(CONFIG_SH)
 static int setup_board_part1(void)
 {
-	struct bd_info *bd = gd->bd;
-
-#if defined(CONFIG_E500) || defined(CONFIG_MPC86xx)
-	bd->bi_immr_base = CONFIG_SYS_IMMR;	/* base  of IMMR register     */
-#endif
-#if defined(CONFIG_MPC83xx)
-	bd->bi_immrbar = CONFIG_SYS_IMMR;
-#endif
-
-	return 0;
-}
-#endif
-
-#if defined(CONFIG_PPC)
-static int setup_board_part2(void)
-{
-	struct bd_info *bd = gd->bd;
-
-	bd->bi_intfreq = gd->cpu_clk;	/* Internal Freq, in Hz */
-	bd->bi_busfreq = gd->bus_clk;	/* Bus Freq,      in Hz */
-#if defined(CONFIG_CPM2)
-	bd->bi_cpmfreq = gd->arch.cpm_clk;
-	bd->bi_brgfreq = gd->arch.brg_clk;
-	bd->bi_sccfreq = gd->arch.scc_clk;
-	bd->bi_vco = gd->arch.vco_out;
-#endif /* CONFIG_CPM2 */
-
 	return 0;
 }
 #endif
@@ -986,14 +958,10 @@ static const init_fnc_t init_sequence_f[] = {
 	dram_init_banksize,
 	show_dram_config,
 	setup_bdinfo,
-#if defined(CONFIG_MIPS) || defined(CONFIG_PPC) || \
-	defined(CONFIG_SH)
+#if defined(CONFIG_MIPS) || defined(CONFIG_SH)
 	setup_board_part1,
 #endif
-#if defined(CONFIG_PPC)
 	INIT_FUNC_WATCHDOG_RESET
-	setup_board_part2,
-#endif
 	display_new_sp,
 #ifdef CONFIG_OF_BOARD_FIXUP
 	fix_fdt,
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 12/17] board_f: Remove setup_board_part1
  2020-07-20 14:13 [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM Ovidiu Panait
                   ` (9 preceding siblings ...)
  2020-07-20 14:14 ` [PATCH v3 11/17] board_f: ppc: Factor out ppc-specific " Ovidiu Panait
@ 2020-07-20 14:14 ` Ovidiu Panait
  2020-07-21 14:17   ` Simon Glass
  2020-07-20 14:14 ` [PATCH v3 13/17] dm: blk: Use IS_ENABLED() instead of #ifdefs in blk_post_probe Ovidiu Panait
                   ` (4 subsequent siblings)
  15 siblings, 1 reply; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-20 14:14 UTC (permalink / raw)
  To: u-boot

Now that all arch specific code was converted to setup_bdinfo, we can
remove setup_board_part1.

Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 common/board_f.c | 12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/common/board_f.c b/common/board_f.c
index 7eb65fc224..25e805faa1 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -630,13 +630,6 @@ int setup_bdinfo(void)
 	return arch_setup_bdinfo();
 }
 
-#if defined(CONFIG_MIPS) || defined(CONFIG_SH)
-static int setup_board_part1(void)
-{
-	return 0;
-}
-#endif
-
 #ifdef CONFIG_POST
 static int init_post(void)
 {
@@ -957,11 +950,8 @@ static const init_fnc_t init_sequence_f[] = {
 	reserve_stacks,
 	dram_init_banksize,
 	show_dram_config,
-	setup_bdinfo,
-#if defined(CONFIG_MIPS) || defined(CONFIG_SH)
-	setup_board_part1,
-#endif
 	INIT_FUNC_WATCHDOG_RESET
+	setup_bdinfo,
 	display_new_sp,
 #ifdef CONFIG_OF_BOARD_FIXUP
 	fix_fdt,
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 13/17] dm: blk: Use IS_ENABLED() instead of #ifdefs in blk_post_probe
  2020-07-20 14:13 [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM Ovidiu Panait
                   ` (10 preceding siblings ...)
  2020-07-20 14:14 ` [PATCH v3 12/17] board_f: Remove setup_board_part1 Ovidiu Panait
@ 2020-07-20 14:14 ` Ovidiu Panait
  2020-07-20 14:14 ` [PATCH v3 14/17] drivers: serial: Make serial_initialize return int Ovidiu Panait
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-20 14:14 UTC (permalink / raw)
  To: u-boot

Use IS_ENABLED() instead of #ifdef in blk_post_probe function.

No functional change intended.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 drivers/block/blk-uclass.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c
index b19375cbc8..b2738f5717 100644
--- a/drivers/block/blk-uclass.c
+++ b/drivers/block/blk-uclass.c
@@ -644,11 +644,12 @@ int blk_unbind_all(int if_type)
 
 static int blk_post_probe(struct udevice *dev)
 {
-#if defined(CONFIG_PARTITIONS) && defined(CONFIG_HAVE_BLOCK_DEVICE)
-	struct blk_desc *desc = dev_get_uclass_platdata(dev);
+	if (IS_ENABLED(CONFIG_PARTITIONS) &&
+	    IS_ENABLED(CONFIG_HAVE_BLOCK_DEV)) {
+		struct blk_desc *desc = dev_get_uclass_platdata(dev);
 
-	part_init(desc);
-#endif
+		part_init(desc);
+	}
 
 	return 0;
 }
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 14/17] drivers: serial: Make serial_initialize return int
  2020-07-20 14:13 [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM Ovidiu Panait
                   ` (11 preceding siblings ...)
  2020-07-20 14:14 ` [PATCH v3 13/17] dm: blk: Use IS_ENABLED() instead of #ifdefs in blk_post_probe Ovidiu Panait
@ 2020-07-20 14:14 ` Ovidiu Panait
  2020-07-20 14:14 ` [PATCH v3 15/17] common/board_r: Remove initr_serial wrapper Ovidiu Panait
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-20 14:14 UTC (permalink / raw)
  To: u-boot

serial_initialize is called only during the common init sequence, after
relocation (in common/board_r.c). Because it has a void return value, it
has to wrapped in initr_serial. In order to be able to get rid of this
indirection, make serial_initialize return int.

Remove extern from prototype in order to silence the following checkpatch
warning:
check: extern prototypes should be avoided in .h files

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 drivers/serial/serial-uclass.c | 4 ++--
 drivers/serial/serial.c        | 4 +++-
 include/serial.h               | 2 +-
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c
index a0af0e6bfd..0027625ebf 100644
--- a/drivers/serial/serial-uclass.c
+++ b/drivers/serial/serial-uclass.c
@@ -170,9 +170,9 @@ int serial_init(void)
 }
 
 /* Called after relocation */
-void serial_initialize(void)
+int serial_initialize(void)
 {
-	serial_init();
+	return serial_init();
 }
 
 static void _serial_putc(struct udevice *dev, char ch)
diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c
index da017dc5b3..53358acb81 100644
--- a/drivers/serial/serial.c
+++ b/drivers/serial/serial.c
@@ -170,7 +170,7 @@ void serial_register(struct serial_device *dev)
  * serial port to the serial core. That serial port is then used as a
  * default output.
  */
-void serial_initialize(void)
+int serial_initialize(void)
 {
 	atmel_serial_initialize();
 	mcf_serial_initialize();
@@ -183,6 +183,8 @@ void serial_initialize(void)
 	mtk_serial_initialize();
 
 	serial_assign(default_serial_console()->name);
+
+	return 0;
 }
 
 static int serial_stub_start(struct stdio_dev *sdev)
diff --git a/include/serial.h b/include/serial.h
index c590637b1f..6d1e62c677 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -42,10 +42,10 @@ extern struct serial_device eserial5_device;
 extern struct serial_device eserial6_device;
 
 extern void serial_register(struct serial_device *);
-extern void serial_initialize(void);
 extern void serial_stdio_init(void);
 extern int serial_assign(const char *name);
 extern void serial_reinit_all(void);
+int serial_initialize(void);
 
 /* For usbtty */
 #ifdef CONFIG_USB_TTY
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 15/17] common/board_r: Remove initr_serial wrapper
  2020-07-20 14:13 [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM Ovidiu Panait
                   ` (12 preceding siblings ...)
  2020-07-20 14:14 ` [PATCH v3 14/17] drivers: serial: Make serial_initialize return int Ovidiu Panait
@ 2020-07-20 14:14 ` Ovidiu Panait
  2020-07-20 14:14 ` [PATCH v3 16/17] blkcache: Extend blkcache_init to cover CONFIG_NEEDS_MANUAL_RELOC Ovidiu Panait
  2020-07-20 14:14 ` [PATCH v3 17/17] common/board_r: Move blkcache_init call earlier in the boot sequence Ovidiu Panait
  15 siblings, 0 replies; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-20 14:14 UTC (permalink / raw)
  To: u-boot

Remove the initr_serial->serial_initialize indirection and call
serial_initialize directly.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 common/board_r.c | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/common/board_r.c b/common/board_r.c
index 67dc25c7d2..79772135a4 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -187,12 +187,6 @@ static int initr_reloc_global_data(void)
 	return 0;
 }
 
-static int initr_serial(void)
-{
-	serial_initialize();
-	return 0;
-}
-
 #if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_MIPS)
 static int initr_trap(void)
 {
@@ -705,7 +699,7 @@ static init_fnc_t init_sequence_r[] = {
 #endif
 	initr_dm_devices,
 	stdio_init_tables,
-	initr_serial,
+	serial_initialize,
 	initr_announce,
 #if CONFIG_IS_ENABLED(WDT)
 	initr_watchdog,
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 16/17] blkcache: Extend blkcache_init to cover CONFIG_NEEDS_MANUAL_RELOC
  2020-07-20 14:13 [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM Ovidiu Panait
                   ` (13 preceding siblings ...)
  2020-07-20 14:14 ` [PATCH v3 15/17] common/board_r: Remove initr_serial wrapper Ovidiu Panait
@ 2020-07-20 14:14 ` Ovidiu Panait
  2020-07-20 14:14 ` [PATCH v3 17/17] common/board_r: Move blkcache_init call earlier in the boot sequence Ovidiu Panait
  15 siblings, 0 replies; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-20 14:14 UTC (permalink / raw)
  To: u-boot

Extend manual relocation of block_cache list pointers to all platforms that
enable CONFIG_NEEDS_MANUAL_RELOC. Remove m68k-specific checks and provide a
single implementation that adds gd->reloc_off to the pre-relocation
pointers.

Acked-by: Angelo Dureghello <angelo.dureghello@timesys.com>
Tested-by: Angelo Dureghello <angelo.dureghello@timesys.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Eric Nelson <eric@nelint.com>
Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 common/board_r.c         |  2 +-
 drivers/block/blkcache.c | 13 +++++++------
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/common/board_r.c b/common/board_r.c
index 79772135a4..63c53b7b96 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -836,7 +836,7 @@ static init_fnc_t init_sequence_r[] = {
 #if defined(CONFIG_PRAM)
 	initr_mem,
 #endif
-#if defined(CONFIG_M68K) && defined(CONFIG_BLOCK_CACHE)
+#if defined(CONFIG_NEEDS_MANUAL_RELOC) && defined(CONFIG_BLOCK_CACHE)
 	blkcache_init,
 #endif
 	run_main_loop,
diff --git a/drivers/block/blkcache.c b/drivers/block/blkcache.c
index b6fc72fe98..d97ee99cf4 100644
--- a/drivers/block/blkcache.c
+++ b/drivers/block/blkcache.c
@@ -12,6 +12,8 @@
 #include <linux/ctype.h>
 #include <linux/list.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 struct block_cache_node {
 	struct list_head lh;
 	int iftype;
@@ -22,21 +24,20 @@ struct block_cache_node {
 	char *cache;
 };
 
-#ifndef CONFIG_M68K
 static LIST_HEAD(block_cache);
-#else
-static struct list_head block_cache;
-#endif
 
 static struct block_cache_stats _stats = {
 	.max_blocks_per_entry = 8,
 	.max_entries = 32
 };
 
-#ifdef CONFIG_M68K
+#ifdef CONFIG_NEEDS_MANUAL_RELOC
 int blkcache_init(void)
 {
-	INIT_LIST_HEAD(&block_cache);
+	struct list_head *head = &block_cache;
+
+	head->next = (uintptr_t)head->next + gd->reloc_off;
+	head->prev = (uintptr_t)head->prev + gd->reloc_off;
 
 	return 0;
 }
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 17/17] common/board_r: Move blkcache_init call earlier in the boot sequence
  2020-07-20 14:13 [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM Ovidiu Panait
                   ` (14 preceding siblings ...)
  2020-07-20 14:14 ` [PATCH v3 16/17] blkcache: Extend blkcache_init to cover CONFIG_NEEDS_MANUAL_RELOC Ovidiu Panait
@ 2020-07-20 14:14 ` Ovidiu Panait
  15 siblings, 0 replies; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-20 14:14 UTC (permalink / raw)
  To: u-boot

blkcache_init manually relocates blkcache list pointers when
CONFIG_NEEDS_MANUAL_RELOC is enabled. However, it is called very late in
the boot sequence, which could be a problem if previous boot calls execute
blkcache operations with the non-relocated pointers. For example, mmc is
initialized earlier and might call blkcache_invalidate (in
mmc_select_hwpart()) when trying to load the environment from mmc via
env_load().

To fix this issue, move blkcache_init boot call earlier, before mmc gets
initialized.

Acked-by: Angelo Dureghello <angelo.dureghello@timesys.com>
Tested-by: Angelo Dureghello <angelo.dureghello@timesys.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---

 common/board_r.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/common/board_r.c b/common/board_r.c
index 63c53b7b96..1c307383d5 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -705,6 +705,9 @@ static init_fnc_t init_sequence_r[] = {
 	initr_watchdog,
 #endif
 	INIT_FUNC_WATCHDOG_RESET
+#if defined(CONFIG_NEEDS_MANUAL_RELOC) && defined(CONFIG_BLOCK_CACHE)
+	blkcache_init,
+#endif
 #ifdef CONFIG_NEEDS_MANUAL_RELOC
 	initr_manual_reloc_cmdtable,
 #endif
@@ -835,9 +838,6 @@ static init_fnc_t init_sequence_r[] = {
 #endif
 #if defined(CONFIG_PRAM)
 	initr_mem,
-#endif
-#if defined(CONFIG_NEEDS_MANUAL_RELOC) && defined(CONFIG_BLOCK_CACHE)
-	blkcache_init,
 #endif
 	run_main_loop,
 };
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 08/17] board_f: Introduce board_setup_bdinfo_mem initcall
  2020-07-20 14:13 ` [PATCH v3 08/17] board_f: Introduce board_setup_bdinfo_mem initcall Ovidiu Panait
@ 2020-07-21  7:05   ` Alexey Brodkin
  2020-07-23  8:17     ` Ovidiu Panait
  2020-07-21 14:07   ` Simon Glass
  1 sibling, 1 reply; 29+ messages in thread
From: Alexey Brodkin @ 2020-07-21  7:05 UTC (permalink / raw)
  To: u-boot

Hi Ovidiu,

[snip]

> diff --git a/arch/arc/lib/cpu.c b/arch/arc/lib/cpu.c
> index 27b5832a0c..ccb7e1b265 100644
> --- a/arch/arc/lib/cpu.c
> +++ b/arch/arc/lib/cpu.c
> @@ -27,8 +27,6 @@ int arch_cpu_init(void)
>  
>  int arch_early_init_r(void)
>  {
> -       gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
> -       gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
>          return 0;

Do we still need an empty arch_early_init_r()?
I.e. get rid of it and:
--------------------------------->8-------------------------------
diff --git a/arch/Kconfig b/arch/Kconfig
index 91e049b322..2cc656b641 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -10,7 +10,6 @@ choice

 config ARC
        bool "ARC architecture"
-       select ARCH_EARLY_INIT_R
        select ARC_TIMER
        select CLK
        select HAVE_PRIVATE_LIBGCC
--------------------------------->8-------------------------------

-Alexey

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 08/17] board_f: Introduce board_setup_bdinfo_mem initcall
  2020-07-20 14:13 ` [PATCH v3 08/17] board_f: Introduce board_setup_bdinfo_mem initcall Ovidiu Panait
  2020-07-21  7:05   ` Alexey Brodkin
@ 2020-07-21 14:07   ` Simon Glass
  1 sibling, 0 replies; 29+ messages in thread
From: Simon Glass @ 2020-07-21 14:07 UTC (permalink / raw)
  To: u-boot

Hi Ovidiu,

On Mon, 20 Jul 2020 at 08:20, Ovidiu Panait <ovidiu.panait@windriver.com> wrote:
>
> In most cases (arc, ppc, mips, sh, m68k) gd->bd->bi_memsize and
> gd->bd->bi_memstart are populated in a similar fashion:
>
>     bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
>     bd->bi_memsize = gd->ram_size;
>
> However, there is a special case in board/cadence/xtfpga/xtfpga.c that
> populates those fields in a board specific manner:
>
>     gd->bd->bi_memstart = PHYSADDR(CONFIG_SYS_SDRAM_BASE);
>     gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
>
> Due to this fact, a weak board-specific routine is introduced to take care
> of this scenario. Also, move all assignments to bi_mem* fields to
> setup_bdinfo initcall.
>
> Use gd->ram_base to populate bi_memstart to avoid an ifdef.
>
> Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
> ---
>
>  arch/arc/lib/cpu.c            |  2 --
>  board/cadence/xtfpga/xtfpga.c |  7 ++++++-
>  common/board_f.c              | 21 +++++++++++++++------
>  include/init.h                | 12 ++++++++++++
>  4 files changed, 33 insertions(+), 9 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

This is unfortunate and I would much rather that some board-specific
code fix it up earlier or later. But I can't see an obvious place to
do this.

Regards,
Simon

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v3 05/17] cmd: bdinfo: Move sram info prints to generic code
  2020-07-20 14:13 ` [PATCH v3 05/17] cmd: bdinfo: Move sram info prints to generic code Ovidiu Panait
@ 2020-07-21 14:17   ` Simon Glass
  0 siblings, 0 replies; 29+ messages in thread
From: Simon Glass @ 2020-07-21 14:17 UTC (permalink / raw)
  To: u-boot

On Mon, 20 Jul 2020 at 08:18, Ovidiu Panait <ovidiu.panait@windriver.com> wrote:
>
> bi_sramstart and bi_sramsize are generic members of the bd_info structure,
> so move the m68k/powerpc-specific prints to generic code. Also, print them
> only if SRAM support is enabled via CONFIG_SYS_HAS_SRAM.
>
> Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
> ---
>
>  arch/m68k/lib/bdinfo.c    | 4 ----
>  arch/powerpc/lib/bdinfo.c | 4 ----
>  cmd/bdinfo.c              | 4 ++++
>  3 files changed, 4 insertions(+), 8 deletions(-)
>

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v3 06/17] board_f: Introduce setup_bdinfo initcall
  2020-07-20 14:13 ` [PATCH v3 06/17] board_f: Introduce setup_bdinfo initcall Ovidiu Panait
@ 2020-07-21 14:17   ` Simon Glass
  0 siblings, 0 replies; 29+ messages in thread
From: Simon Glass @ 2020-07-21 14:17 UTC (permalink / raw)
  To: u-boot

On Mon, 20 Jul 2020 at 08:18, Ovidiu Panait <ovidiu.panait@windriver.com> wrote:
>
> Introduce setup_bdinfo initcall as a generic routine to populate bdinfo
> fields.
>
> Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
> ---
>
>  common/board_f.c |  6 ++++++
>  include/init.h   | 10 ++++++++++
>  2 files changed, 16 insertions(+)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v3 09/17] board_f: Move sram bdinfo assignments to generic code
  2020-07-20 14:13 ` [PATCH v3 09/17] board_f: Move sram bdinfo assignments to generic code Ovidiu Panait
@ 2020-07-21 14:17   ` Simon Glass
  0 siblings, 0 replies; 29+ messages in thread
From: Simon Glass @ 2020-07-21 14:17 UTC (permalink / raw)
  To: u-boot

On Mon, 20 Jul 2020 at 08:20, Ovidiu Panait <ovidiu.panait@windriver.com> wrote:
>
> Move sram related bdinfo from arch-specific setup_board_part1 to generic
> code in setup_bdinfo. Also use "if (IS_ENABLED(CONFIG_SYS_HAS_SRAM))"
> instead of "#ifdef CONFIG_SYS_SRAM_BASE".
>
> Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
> ---
>
>  common/board_f.c | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v3 12/17] board_f: Remove setup_board_part1
  2020-07-20 14:14 ` [PATCH v3 12/17] board_f: Remove setup_board_part1 Ovidiu Panait
@ 2020-07-21 14:17   ` Simon Glass
  0 siblings, 0 replies; 29+ messages in thread
From: Simon Glass @ 2020-07-21 14:17 UTC (permalink / raw)
  To: u-boot

On Mon, 20 Jul 2020 at 08:20, Ovidiu Panait <ovidiu.panait@windriver.com> wrote:
>
> Now that all arch specific code was converted to setup_bdinfo, we can
> remove setup_board_part1.
>
> Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
> ---
>
>  common/board_f.c | 12 +-----------
>  1 file changed, 1 insertion(+), 11 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v3 10/17] board_f: m68k: Factor out m68k-specific bdinfo setup
  2020-07-20 14:14 ` [PATCH v3 10/17] board_f: m68k: Factor out m68k-specific bdinfo setup Ovidiu Panait
@ 2020-07-21 14:17   ` Simon Glass
  0 siblings, 0 replies; 29+ messages in thread
From: Simon Glass @ 2020-07-21 14:17 UTC (permalink / raw)
  To: u-boot

On Mon, 20 Jul 2020 at 08:20, Ovidiu Panait <ovidiu.panait@windriver.com> wrote:
>
> Factor out m68k-specific bdinfo setup to arch_setup_bdinfo in
> arch/m68k/lib/bdinfo.c. Also, use if(IS_ENABLED()) instead of #ifdef where
> possible.
>
> Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
> ---
>
>  arch/m68k/lib/bdinfo.c | 21 +++++++++++++++++++++
>  common/board_f.c       | 19 ++++---------------
>  2 files changed, 25 insertions(+), 15 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v3 11/17] board_f: ppc: Factor out ppc-specific bdinfo setup
  2020-07-20 14:14 ` [PATCH v3 11/17] board_f: ppc: Factor out ppc-specific " Ovidiu Panait
@ 2020-07-21 14:17   ` Simon Glass
  2020-07-21 16:42     ` Ovidiu Panait
  0 siblings, 1 reply; 29+ messages in thread
From: Simon Glass @ 2020-07-21 14:17 UTC (permalink / raw)
  To: u-boot

On Mon, 20 Jul 2020 at 08:20, Ovidiu Panait <ovidiu.panait@windriver.com> wrote:
>
> Factor out ppc-specific bdinfo setup from generic init sequence to
> arch_setup_bdinfo in arch/powerpc/lib/bdinfo.c.
>
> Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
> ---
>
>  arch/powerpc/lib/bdinfo.c | 25 +++++++++++++++++++++++++
>  common/board_f.c          | 36 ++----------------------------------
>  2 files changed, 27 insertions(+), 34 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

Could this be a way to remove the weak SDRAM function?

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v3 11/17] board_f: ppc: Factor out ppc-specific bdinfo setup
  2020-07-21 14:17   ` Simon Glass
@ 2020-07-21 16:42     ` Ovidiu Panait
  2020-07-28 18:58       ` Simon Glass
  0 siblings, 1 reply; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-21 16:42 UTC (permalink / raw)
  To: u-boot

Hi Simon,

On 21.07.2020 17:17, Simon Glass wrote:
> On Mon, 20 Jul 2020 at 08:20, Ovidiu Panait <ovidiu.panait@windriver.com> wrote:
>> Factor out ppc-specific bdinfo setup from generic init sequence to
>> arch_setup_bdinfo in arch/powerpc/lib/bdinfo.c.
>>
>> Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
>> ---
>>
>>   arch/powerpc/lib/bdinfo.c | 25 +++++++++++++++++++++++++
>>   common/board_f.c          | 36 ++----------------------------------
>>   2 files changed, 27 insertions(+), 34 deletions(-)
> Reviewed-by: Simon Glass <sjg@chromium.org>
>
> Could this be a way to remove the weak SDRAM function?

I think the SDRAM weak function can be eliminated by overwriting the 
values set in common/board_f.c using the xtensa-specific 
arch_setup_bdinfo (arch/xtensa/lib/bdinfo.c), as you suggested.


I plan to replace the weak SDRAM function patch with this one:

iff --git a/arch/Kconfig b/arch/Kconfig
index 9be02d1319..4d9557959c 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -10,7 +10,6 @@ choice

 ?config ARC
 ???? bool "ARC architecture"
-??? select ARCH_EARLY_INIT_R
 ???? select ARC_TIMER
 ???? select CLK
 ???? select HAVE_PRIVATE_LIBGCC
diff --git a/arch/arc/lib/cpu.c b/arch/arc/lib/cpu.c
index 27b5832a0c..d66a8c867a 100644
--- a/arch/arc/lib/cpu.c
+++ b/arch/arc/lib/cpu.c
@@ -25,13 +25,6 @@ int arch_cpu_init(void)
 ???? return 0;
 ?}

-int arch_early_init_r(void)
-{
-??? gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
-??? gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
-??? return 0;
-}
-
 ?/* This is a dummy function on arc */
 ?int dram_init(void)
 ?{
diff --git a/arch/xtensa/lib/bdinfo.c b/arch/xtensa/lib/bdinfo.c
new file mode 100644
index 0000000000..b3ab7227aa
--- /dev/null
+++ b/arch/xtensa/lib/bdinfo.c
@@ -0,0 +1,20 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * XTENSA-specific information for the 'bd' command
+ *
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+ */
+
+#include <common.h>
+#include <init.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int arch_setup_bdinfo(void)
+{
+??? struct bd_info *bd = gd->bd;
+
+??? gd->bd->bi_memstart = PHYSADDR(CONFIG_SYS_SDRAM_BASE);
+??? gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
+}
diff --git a/board/cadence/xtfpga/xtfpga.c b/board/cadence/xtfpga/xtfpga.c
index 2869e5cf68..4b49b6e5c8 100644
--- a/board/cadence/xtfpga/xtfpga.c
+++ b/board/cadence/xtfpga/xtfpga.c
@@ -51,9 +51,6 @@ int checkboard(void)

 ?int dram_init_banksize(void)
 ?{
-??? gd->bd->bi_memstart = PHYSADDR(CONFIG_SYS_SDRAM_BASE);
-??? gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
-
 ???? return 0;
 ?}

diff --git a/common/board_f.c b/common/board_f.c
index 4356431488..3b11f08725 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -605,6 +605,11 @@ __weak int arch_setup_bdinfo(void)

 ?int setup_bdinfo(void)
 ?{
+??? struct bd_info *bd = gd->bd;
+
+??? bd->bi_memstart = gd->ram_base;? /* start of memory */
+??? bd->bi_memsize = gd->ram_size;?? /* size in bytes */
+
 ???? return arch_setup_bdinfo();
 ?}

@@ -614,12 +619,6 @@ static int setup_board_part1(void)
 ?{
 ???? struct bd_info *bd = gd->bd;

-??? /*
-??? ?* Save local variables to board info struct
-??? ?*/
-??? bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;??? /* start of memory */
-??? bd->bi_memsize = gd->ram_size;??? ??? ??? /* size in bytes */
-
 ?#ifdef CONFIG_SYS_SRAM_BASE
 ???? bd->bi_sramstart = CONFIG_SYS_SRAM_BASE;??? /* start of SRAM */
 ???? bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE;??? ??? /* size? of SRAM */

Do you think this is a better approach?


Ovidiu

^ permalink raw reply related	[flat|nested] 29+ messages in thread

* [PATCH v3 08/17] board_f: Introduce board_setup_bdinfo_mem initcall
  2020-07-21  7:05   ` Alexey Brodkin
@ 2020-07-23  8:17     ` Ovidiu Panait
  0 siblings, 0 replies; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-23  8:17 UTC (permalink / raw)
  To: u-boot

On 21.07.2020 10:05, Alexey Brodkin wrote:
> Hi Ovidiu,
>
> [snip]
>
>> diff --git a/arch/arc/lib/cpu.c b/arch/arc/lib/cpu.c
>> index 27b5832a0c..ccb7e1b265 100644
>> --- a/arch/arc/lib/cpu.c
>> +++ b/arch/arc/lib/cpu.c
>> @@ -27,8 +27,6 @@ int arch_cpu_init(void)
>>   
>>   int arch_early_init_r(void)
>>   {
>> -       gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
>> -       gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
>>           return 0;
> Do we still need an empty arch_early_init_r()?
> I.e. get rid of it and:
> --------------------------------->8-------------------------------
> diff --git a/arch/Kconfig b/arch/Kconfig
> index 91e049b322..2cc656b641 100644
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -10,7 +10,6 @@ choice
>
>   config ARC
>          bool "ARC architecture"
> -       select ARCH_EARLY_INIT_R
>          select ARC_TIMER
>          select CLK
>          select HAVE_PRIVATE_LIBGCC
> --------------------------------->8-------------------------------

Hi Alexey,


Thanks for your input. I'll include these changes in v4.


Ovidiu

> -Alexey

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v3 11/17] board_f: ppc: Factor out ppc-specific bdinfo setup
  2020-07-21 16:42     ` Ovidiu Panait
@ 2020-07-28 18:58       ` Simon Glass
  2020-07-29  6:41         ` Ovidiu Panait
  0 siblings, 1 reply; 29+ messages in thread
From: Simon Glass @ 2020-07-28 18:58 UTC (permalink / raw)
  To: u-boot

Hi Ovidiu,

On Tue, 21 Jul 2020 at 10:43, Ovidiu Panait <ovidiu.panait@windriver.com> wrote:
>
> Hi Simon,
>
> On 21.07.2020 17:17, Simon Glass wrote:
> > On Mon, 20 Jul 2020 at 08:20, Ovidiu Panait <ovidiu.panait@windriver.com> wrote:
> >> Factor out ppc-specific bdinfo setup from generic init sequence to
> >> arch_setup_bdinfo in arch/powerpc/lib/bdinfo.c.
> >>
> >> Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
> >> ---
> >>
> >>   arch/powerpc/lib/bdinfo.c | 25 +++++++++++++++++++++++++
> >>   common/board_f.c          | 36 ++----------------------------------
> >>   2 files changed, 27 insertions(+), 34 deletions(-)
> > Reviewed-by: Simon Glass <sjg@chromium.org>
> >
> > Could this be a way to remove the weak SDRAM function?
>
> I think the SDRAM weak function can be eliminated by overwriting the
> values set in common/board_f.c using the xtensa-specific
> arch_setup_bdinfo (arch/xtensa/lib/bdinfo.c), as you suggested.
>
>
> I plan to replace the weak SDRAM function patch with this one:
>
> iff --git a/arch/Kconfig b/arch/Kconfig
> index 9be02d1319..4d9557959c 100644
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -10,7 +10,6 @@ choice
>
>   config ARC
>       bool "ARC architecture"
> -    select ARCH_EARLY_INIT_R
>       select ARC_TIMER
>       select CLK
>       select HAVE_PRIVATE_LIBGCC
> diff --git a/arch/arc/lib/cpu.c b/arch/arc/lib/cpu.c
> index 27b5832a0c..d66a8c867a 100644
> --- a/arch/arc/lib/cpu.c
> +++ b/arch/arc/lib/cpu.c
> @@ -25,13 +25,6 @@ int arch_cpu_init(void)
>       return 0;
>   }
>
> -int arch_early_init_r(void)
> -{
> -    gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
> -    gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
> -    return 0;
> -}
> -
>   /* This is a dummy function on arc */
>   int dram_init(void)
>   {
> diff --git a/arch/xtensa/lib/bdinfo.c b/arch/xtensa/lib/bdinfo.c
> new file mode 100644
> index 0000000000..b3ab7227aa
> --- /dev/null
> +++ b/arch/xtensa/lib/bdinfo.c
> @@ -0,0 +1,20 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * XTENSA-specific information for the 'bd' command
> + *
> + * (C) Copyright 2003
> + * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
> + */
> +
> +#include <common.h>
> +#include <init.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +int arch_setup_bdinfo(void)
> +{
> +    struct bd_info *bd = gd->bd;
> +
> +    gd->bd->bi_memstart = PHYSADDR(CONFIG_SYS_SDRAM_BASE);
> +    gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
> +}
> diff --git a/board/cadence/xtfpga/xtfpga.c b/board/cadence/xtfpga/xtfpga.c
> index 2869e5cf68..4b49b6e5c8 100644
> --- a/board/cadence/xtfpga/xtfpga.c
> +++ b/board/cadence/xtfpga/xtfpga.c
> @@ -51,9 +51,6 @@ int checkboard(void)
>
>   int dram_init_banksize(void)
>   {
> -    gd->bd->bi_memstart = PHYSADDR(CONFIG_SYS_SDRAM_BASE);
> -    gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
> -
>       return 0;
>   }
>
> diff --git a/common/board_f.c b/common/board_f.c
> index 4356431488..3b11f08725 100644
> --- a/common/board_f.c
> +++ b/common/board_f.c
> @@ -605,6 +605,11 @@ __weak int arch_setup_bdinfo(void)
>
>   int setup_bdinfo(void)
>   {
> +    struct bd_info *bd = gd->bd;
> +
> +    bd->bi_memstart = gd->ram_base;  /* start of memory */
> +    bd->bi_memsize = gd->ram_size;   /* size in bytes */
> +
>       return arch_setup_bdinfo();
>   }
>
> @@ -614,12 +619,6 @@ static int setup_board_part1(void)
>   {
>       struct bd_info *bd = gd->bd;
>
> -    /*
> -     * Save local variables to board info struct
> -     */
> -    bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;    /* start of memory */
> -    bd->bi_memsize = gd->ram_size;            /* size in bytes */
> -
>   #ifdef CONFIG_SYS_SRAM_BASE
>       bd->bi_sramstart = CONFIG_SYS_SRAM_BASE;    /* start of SRAM */
>       bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE;        /* size  of SRAM */
>
> Do you think this is a better approach?

Yes it looks better to me.

Regards,
Simon

^ permalink raw reply	[flat|nested] 29+ messages in thread

* [PATCH v3 11/17] board_f: ppc: Factor out ppc-specific bdinfo setup
  2020-07-28 18:58       ` Simon Glass
@ 2020-07-29  6:41         ` Ovidiu Panait
  0 siblings, 0 replies; 29+ messages in thread
From: Ovidiu Panait @ 2020-07-29  6:41 UTC (permalink / raw)
  To: u-boot

Hi Simon,

On 28.07.2020 21:58, Simon Glass wrote:
> Hi Ovidiu,
>
> On Tue, 21 Jul 2020 at 10:43, Ovidiu Panait <ovidiu.panait@windriver.com> wrote:
>> Hi Simon,
>>
>> On 21.07.2020 17:17, Simon Glass wrote:
>>> On Mon, 20 Jul 2020 at 08:20, Ovidiu Panait <ovidiu.panait@windriver.com> wrote:
>>>> Factor out ppc-specific bdinfo setup from generic init sequence to
>>>> arch_setup_bdinfo in arch/powerpc/lib/bdinfo.c.
>>>>
>>>> Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
>>>> ---
>>>>
>>>>    arch/powerpc/lib/bdinfo.c | 25 +++++++++++++++++++++++++
>>>>    common/board_f.c          | 36 ++----------------------------------
>>>>    2 files changed, 27 insertions(+), 34 deletions(-)
>>> Reviewed-by: Simon Glass <sjg@chromium.org>
>>>
>>> Could this be a way to remove the weak SDRAM function?
>> I think the SDRAM weak function can be eliminated by overwriting the
>> values set in common/board_f.c using the xtensa-specific
>> arch_setup_bdinfo (arch/xtensa/lib/bdinfo.c), as you suggested.
>>
>>
>> I plan to replace the weak SDRAM function patch with this one:
>>
>> iff --git a/arch/Kconfig b/arch/Kconfig
>> index 9be02d1319..4d9557959c 100644
>> --- a/arch/Kconfig
>> +++ b/arch/Kconfig
>> @@ -10,7 +10,6 @@ choice
>>
>>    config ARC
>>        bool "ARC architecture"
>> -    select ARCH_EARLY_INIT_R
>>        select ARC_TIMER
>>        select CLK
>>        select HAVE_PRIVATE_LIBGCC
>> diff --git a/arch/arc/lib/cpu.c b/arch/arc/lib/cpu.c
>> index 27b5832a0c..d66a8c867a 100644
>> --- a/arch/arc/lib/cpu.c
>> +++ b/arch/arc/lib/cpu.c
>> @@ -25,13 +25,6 @@ int arch_cpu_init(void)
>>        return 0;
>>    }
>>
>> -int arch_early_init_r(void)
>> -{
>> -    gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
>> -    gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
>> -    return 0;
>> -}
>> -
>>    /* This is a dummy function on arc */
>>    int dram_init(void)
>>    {
>> diff --git a/arch/xtensa/lib/bdinfo.c b/arch/xtensa/lib/bdinfo.c
>> new file mode 100644
>> index 0000000000..b3ab7227aa
>> --- /dev/null
>> +++ b/arch/xtensa/lib/bdinfo.c
>> @@ -0,0 +1,20 @@
>> +// SPDX-License-Identifier: GPL-2.0+
>> +/*
>> + * XTENSA-specific information for the 'bd' command
>> + *
>> + * (C) Copyright 2003
>> + * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
>> + */
>> +
>> +#include <common.h>
>> +#include <init.h>
>> +
>> +DECLARE_GLOBAL_DATA_PTR;
>> +
>> +int arch_setup_bdinfo(void)
>> +{
>> +    struct bd_info *bd = gd->bd;
>> +
>> +    gd->bd->bi_memstart = PHYSADDR(CONFIG_SYS_SDRAM_BASE);
>> +    gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
>> +}
>> diff --git a/board/cadence/xtfpga/xtfpga.c b/board/cadence/xtfpga/xtfpga.c
>> index 2869e5cf68..4b49b6e5c8 100644
>> --- a/board/cadence/xtfpga/xtfpga.c
>> +++ b/board/cadence/xtfpga/xtfpga.c
>> @@ -51,9 +51,6 @@ int checkboard(void)
>>
>>    int dram_init_banksize(void)
>>    {
>> -    gd->bd->bi_memstart = PHYSADDR(CONFIG_SYS_SDRAM_BASE);
>> -    gd->bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
>> -
>>        return 0;
>>    }
>>
>> diff --git a/common/board_f.c b/common/board_f.c
>> index 4356431488..3b11f08725 100644
>> --- a/common/board_f.c
>> +++ b/common/board_f.c
>> @@ -605,6 +605,11 @@ __weak int arch_setup_bdinfo(void)
>>
>>    int setup_bdinfo(void)
>>    {
>> +    struct bd_info *bd = gd->bd;
>> +
>> +    bd->bi_memstart = gd->ram_base;  /* start of memory */
>> +    bd->bi_memsize = gd->ram_size;   /* size in bytes */
>> +
>>        return arch_setup_bdinfo();
>>    }
>>
>> @@ -614,12 +619,6 @@ static int setup_board_part1(void)
>>    {
>>        struct bd_info *bd = gd->bd;
>>
>> -    /*
>> -     * Save local variables to board info struct
>> -     */
>> -    bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;    /* start of memory */
>> -    bd->bi_memsize = gd->ram_size;            /* size in bytes */
>> -
>>    #ifdef CONFIG_SYS_SRAM_BASE
>>        bd->bi_sramstart = CONFIG_SYS_SRAM_BASE;    /* start of SRAM */
>>        bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE;        /* size  of SRAM */
>>
>> Do you think this is a better approach?
> Yes it looks better to me.

In the meantime, I have sent the v4 for this series, containing the 
above mentioned changes:

https://lists.denx.de/pipermail/u-boot/2020-July/421283.html


Thanks,

Ovidiu


> Regards,
> Simon

^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2020-07-29  6:41 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-20 14:13 [PATCH v3 01/17] Kconfig: Introduce CONFIG_SYS_HAS_SRAM Ovidiu Panait
2020-07-20 14:13 ` [PATCH v3 02/17] Kconfig: Convert CONFIG_SYS_SRAM_BASE to Kconfig Ovidiu Panait
2020-07-20 14:13 ` [PATCH v3 03/17] Kconfig: Convert CONFIG_SYS_SRAM_SIZE " Ovidiu Panait
2020-07-20 14:13 ` [PATCH v3 04/17] Kconfig: Remove CONFIG_SYS_SRAM_START Ovidiu Panait
2020-07-20 14:13 ` [PATCH v3 05/17] cmd: bdinfo: Move sram info prints to generic code Ovidiu Panait
2020-07-21 14:17   ` Simon Glass
2020-07-20 14:13 ` [PATCH v3 06/17] board_f: Introduce setup_bdinfo initcall Ovidiu Panait
2020-07-21 14:17   ` Simon Glass
2020-07-20 14:13 ` [PATCH v3 07/17] board_f: Introduce arch_setup_bdinfo initcall Ovidiu Panait
2020-07-20 14:13 ` [PATCH v3 08/17] board_f: Introduce board_setup_bdinfo_mem initcall Ovidiu Panait
2020-07-21  7:05   ` Alexey Brodkin
2020-07-23  8:17     ` Ovidiu Panait
2020-07-21 14:07   ` Simon Glass
2020-07-20 14:13 ` [PATCH v3 09/17] board_f: Move sram bdinfo assignments to generic code Ovidiu Panait
2020-07-21 14:17   ` Simon Glass
2020-07-20 14:14 ` [PATCH v3 10/17] board_f: m68k: Factor out m68k-specific bdinfo setup Ovidiu Panait
2020-07-21 14:17   ` Simon Glass
2020-07-20 14:14 ` [PATCH v3 11/17] board_f: ppc: Factor out ppc-specific " Ovidiu Panait
2020-07-21 14:17   ` Simon Glass
2020-07-21 16:42     ` Ovidiu Panait
2020-07-28 18:58       ` Simon Glass
2020-07-29  6:41         ` Ovidiu Panait
2020-07-20 14:14 ` [PATCH v3 12/17] board_f: Remove setup_board_part1 Ovidiu Panait
2020-07-21 14:17   ` Simon Glass
2020-07-20 14:14 ` [PATCH v3 13/17] dm: blk: Use IS_ENABLED() instead of #ifdefs in blk_post_probe Ovidiu Panait
2020-07-20 14:14 ` [PATCH v3 14/17] drivers: serial: Make serial_initialize return int Ovidiu Panait
2020-07-20 14:14 ` [PATCH v3 15/17] common/board_r: Remove initr_serial wrapper Ovidiu Panait
2020-07-20 14:14 ` [PATCH v3 16/17] blkcache: Extend blkcache_init to cover CONFIG_NEEDS_MANUAL_RELOC Ovidiu Panait
2020-07-20 14:14 ` [PATCH v3 17/17] common/board_r: Move blkcache_init call earlier in the boot sequence Ovidiu Panait

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.