* [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 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 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 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-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 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 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 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 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
* [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