sparc: Initial ground work for generic board initialization
authorFrancois Retief <fgretief@spaceteq.co.za>
Wed, 28 Oct 2015 12:29:32 +0000 (14:29 +0200)
committerFrancois Retief <fgretief@spaceteq.co.za>
Thu, 3 Dec 2015 11:15:48 +0000 (13:15 +0200)
Initial ground work in preperation for generic board initialization
code for the SPARC architecture.

Signed-off-by: Francois Retief <fgretief@spaceteq.co.za>
arch/Kconfig
arch/sparc/cpu/leon2/cpu.c
arch/sparc/cpu/leon2/cpu_init.c
arch/sparc/cpu/leon3/cpu.c
arch/sparc/cpu/leon3/cpu_init.c
arch/sparc/include/asm/config.h
arch/sparc/include/asm/u-boot.h
arch/sparc/lib/Makefile
common/board_r.c

index 25dcf4a..6489cc9 100644 (file)
@@ -97,6 +97,7 @@ config SH
 
 config SPARC
        bool "SPARC architecture"
 
 config SPARC
        bool "SPARC architecture"
+       select HAVE_GENERIC_BOARD
        select CREATE_ARCH_SYMLINK
 
 config X86
        select CREATE_ARCH_SYMLINK
 
 config X86
index 380c397..22e63e3 100644 (file)
@@ -1,7 +1,7 @@
 /* CPU specific code for the LEON2 CPU
  *
 /* CPU specific code for the LEON2 CPU
  *
- * (C) Copyright 2007
- * Daniel Hellstrom, Gaisler Research, daniel@gaisler.com
+ * (C) Copyright 2007, 2015
+ * Daniel Hellstrom, Cobham Gaisler, daniel@gaisler.com
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
index 695ee02..581f057 100644 (file)
@@ -1,8 +1,8 @@
 /* Initializes CPU and basic hardware such as memory
  * controllers, IRQ controller and system timer 0.
  *
 /* Initializes CPU and basic hardware such as memory
  * controllers, IRQ controller and system timer 0.
  *
- * (C) Copyright 2007
- * Daniel Hellstrom, Gaisler Research, daniel@gaisler.com
+ * (C) Copyright 2007, 2015
+ * Daniel Hellstrom, Cobham Gaisler, daniel@gaisler.com
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
 DECLARE_GLOBAL_DATA_PTR;
 
 
 DECLARE_GLOBAL_DATA_PTR;
 
-/* reset CPU (jump to 0, without reset) */
-void start(void);
-
-struct {
-       gd_t gd_area;
-       bd_t bd;
-} global_data;
-
 /*
  * Breath some life into the CPU...
  *
 /*
  * Breath some life into the CPU...
  *
@@ -69,6 +61,15 @@ void cpu_init_f2(void)
 
 }
 
 
 }
 
+int arch_cpu_init(void)
+{
+       gd->cpu_clk = CONFIG_SYS_CLK_FREQ;
+       gd->bus_clk = CONFIG_SYS_CLK_FREQ;
+       gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
+
+       return 0;
+}
+
 /*
  * initialize higher level parts of CPU like time base and timers
  */
 /*
  * initialize higher level parts of CPU like time base and timers
  */
index 8ab3150..d57bf2f 100644 (file)
@@ -1,7 +1,7 @@
 /* CPU specific code for the LEON3 CPU
  *
 /* CPU specific code for the LEON3 CPU
  *
- * (C) Copyright 2007
- * Daniel Hellstrom, Gaisler Research, daniel@gaisler.com
+ * (C) Copyright 2007, 2015
+ * Daniel Hellstrom, Cobham Gaisler, daniel@gaisler.com
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
index b140da3..a0526cd 100644 (file)
 
 DECLARE_GLOBAL_DATA_PTR;
 
 
 DECLARE_GLOBAL_DATA_PTR;
 
-/* reset CPU (jump to 0, without reset) */
-void start(void);
-
 ambapp_dev_irqmp *irqmp = NULL;
 ambapp_dev_gptimer *gptimer = NULL;
 unsigned int gptimer_irq = 0;
 int leon3_snooping_avail = 0;
 
 ambapp_dev_irqmp *irqmp = NULL;
 ambapp_dev_gptimer *gptimer = NULL;
 unsigned int gptimer_irq = 0;
 int leon3_snooping_avail = 0;
 
-struct {
-       gd_t gd_area;
-       bd_t bd;
-} global_data;
-
 /*
  * Breath some life into the CPU...
  *
 /*
  * Breath some life into the CPU...
  *
@@ -71,6 +63,15 @@ void cpu_init_f2(void)
        ambapp_bus_init(CONFIG_AMBAPP_IOAREA, CONFIG_SYS_CLK_FREQ, &ambapp_plb);
 }
 
        ambapp_bus_init(CONFIG_AMBAPP_IOAREA, CONFIG_SYS_CLK_FREQ, &ambapp_plb);
 }
 
+int arch_cpu_init(void)
+{
+       gd->cpu_clk = CONFIG_SYS_CLK_FREQ;
+       gd->bus_clk = CONFIG_SYS_CLK_FREQ;
+       gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
+
+       return 0;
+}
+
 /*
  * initialize higher level parts of CPU like time base and timers
  */
 /*
  * initialize higher level parts of CPU like time base and timers
  */
index fd0b551..c884b25 100644 (file)
@@ -1,5 +1,6 @@
 /*
 /*
- * Copyright 2009 Freescale Semiconductor, Inc.
+ * Copyright 2015,
+ * Daniel Hellstrom, Cobham Gaisler, daniel@gaisler.com.
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
@@ -7,6 +8,7 @@
 #ifndef _ASM_CONFIG_H_
 #define _ASM_CONFIG_H_
 
 #ifndef _ASM_CONFIG_H_
 #define _ASM_CONFIG_H_
 
+#define CONFIG_SYS_GENERIC_GLOBAL_DATA
 #define CONFIG_NEEDS_MANUAL_RELOC
 
 #define CONFIG_LMB
 #define CONFIG_NEEDS_MANUAL_RELOC
 
 #define CONFIG_LMB
index 5f12e58..4c4b5f2 100644 (file)
 #ifndef __U_BOOT_H__
 #define __U_BOOT_H__
 
 #ifndef __U_BOOT_H__
 #define __U_BOOT_H__
 
+#ifdef CONFIG_SYS_GENERIC_BOARD
+/* Use the generic board which requires a unified bd_info */
+#include <asm-generic/u-boot.h>
+#else
+
 /*
  * Currently, this Board information is not passed to
  * Linux kernel from U-Boot, but may be passed to other
 /*
  * Currently, this Board information is not passed to
  * Linux kernel from U-Boot, but may be passed to other
@@ -44,6 +49,8 @@ typedef struct bd_info {
 
 #endif                         /* __ASSEMBLY__ */
 
 
 #endif                         /* __ASSEMBLY__ */
 
+#endif /* !CONFIG_SYS_GENERIC_BOARD */
+
 /* For image.h:image_check_target_arch() */
 #define IH_ARCH_DEFAULT IH_ARCH_SPARC
 
 /* For image.h:image_check_target_arch() */
 #define IH_ARCH_DEFAULT IH_ARCH_SPARC
 
index e69b9ba..6bddd4c 100644 (file)
@@ -1,9 +1,13 @@
 #
 #
-# (C) Copyright 2000-2006
+# (C) Copyright 2000-2015
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
 #
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
 # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
 #
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-y  = board.o cache.o interrupts.o time.o
+obj-y = cache.o interrupts.o time.o
 obj-$(CONFIG_CMD_BOOTM) += bootm.o
 obj-$(CONFIG_CMD_BOOTM) += bootm.o
+
+ifndef CONFIG_SYS_GENERIC_BOARD
+obj-y += board.o
+endif
index a41fb54..f1dfa68 100644 (file)
@@ -813,7 +813,8 @@ init_fnc_t init_sequence_r[] = {
        initr_flash,
 #endif
        INIT_FUNC_WATCHDOG_RESET
        initr_flash,
 #endif
        INIT_FUNC_WATCHDOG_RESET
-#if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_X86)
+#if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_X86) || \
+       defined(CONFIG_SPARC)
        /* initialize higher level parts of CPU like time base and timers */
        cpu_init_r,
 #endif
        /* initialize higher level parts of CPU like time base and timers */
        cpu_init_r,
 #endif