From 746a36a10776b003f877f7f5f63398a29959a9dc Mon Sep 17 00:00:00 2001 From: Stefan Roese Date: Wed, 19 Nov 2014 09:37:46 +0100 Subject: [PATCH 1/3] powerpc: mpc52xx: a4m072: Convert to generic board Signed-off-by: Stefan Roese Cc: Wolfgang Denk --- include/configs/a4m072.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/configs/a4m072.h b/include/configs/a4m072.h index cc88ac1..3c67655 100644 --- a/include/configs/a4m072.h +++ b/include/configs/a4m072.h @@ -19,6 +19,8 @@ #define CONFIG_MPC5200 1 /* This is a MPC5200 CPU */ #define CONFIG_A4M072 1 /* ... on A4M072 board */ #define CONFIG_MPC5200_DDR 1 /* ... use DDR RAM */ +#define CONFIG_DISPLAY_BOARDINFO +#define CONFIG_SYS_GENERIC_BOARD #define CONFIG_SYS_TEXT_BASE 0xFE000000 From c07e8da1a47f795d01ce2c26996b262869c8638f Mon Sep 17 00:00:00 2001 From: Stefan Roese Date: Wed, 19 Nov 2014 09:37:47 +0100 Subject: [PATCH 2/3] powerpc: mpc52xx: a3m071/a4m2k: Convert to generic board a3m071 and a4m2k share one config header. So adding the generic board defines in this one file is enough to convert both boards. Signed-off-by: Stefan Roese Cc: Wolfgang Denk --- include/configs/a3m071.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/configs/a3m071.h b/include/configs/a3m071.h index a4050f3..120fdc6 100644 --- a/include/configs/a3m071.h +++ b/include/configs/a3m071.h @@ -14,6 +14,8 @@ #define CONFIG_MPC5200 #define CONFIG_A3M071 /* A3M071 board */ +#define CONFIG_DISPLAY_BOARDINFO +#define CONFIG_SYS_GENERIC_BOARD #define CONFIG_SYS_TEXT_BASE 0x01000000 /* boot low for 32 MiB boards */ From 5fc3494fdb00dd7894090ce0c21936815a575558 Mon Sep 17 00:00:00 2001 From: Stefan Roese Date: Wed, 19 Nov 2014 09:37:48 +0100 Subject: [PATCH 3/3] powerpc: mpc52xx: Clear GD in the main U-Boot stage for SPL usage When an MPC5200 based board is used with SPL support, the main U-Boot needs to clear the GD (global data) struct again. Otherwise the generic board init code in board_init_f (when CONFIG_SYS_GENERIC_BOARD is defined) will not initialize all GD variables correctly. Resulting in a hangup on the a4m2k board. Signed-off-by: Stefan Roese Cc: Wolfgang Denk --- arch/powerpc/cpu/mpc5xxx/start.S | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/arch/powerpc/cpu/mpc5xxx/start.S b/arch/powerpc/cpu/mpc5xxx/start.S index 02c706e..94eb0d3 100644 --- a/arch/powerpc/cpu/mpc5xxx/start.S +++ b/arch/powerpc/cpu/mpc5xxx/start.S @@ -76,6 +76,21 @@ _start: * been done in the SPL u-boot version. */ GET_GOT /* initialize GOT access */ + + /* + * The GD (global data) struct needs to get cleared. Lets do + * this by calling memset(). + * This function is called when the platform is build with SPL + * support from the main (full-blown) U-Boot. And the GD needs + * to get cleared (again) so that the following generic + * board support code, defined via CONFIG_SYS_GENERIC_BOARD, + * initializes all variables correctly. + */ + mr r3, r2 /* parameter 1: GD pointer */ + li r4,0 /* parameter 2: value to fill */ + li r5,GD_SIZE /* parameter 3: count */ + bl memset + bl board_init_f /* run 1st part of board init code (in Flash)*/ /* NOTREACHED - board_init_f() does not return */ #else