diff mbox

[U-Boot,3/3] m68k: add generic-board support

Message ID 1423701617-20640-1-git-send-email-angelo@sysam.it
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Angelo Dureghello Feb. 12, 2015, 12:40 a.m. UTC
Add generic-board support for the m68k architecture.

Signed-off-by: Angelo Dureghello <angelo@sysam.it>
---
 arch/m68k/config.mk            |  3 +++
 arch/m68k/include/asm/config.h |  3 +++
 arch/m68k/include/asm/u-boot.h |  8 ++++++++
 arch/m68k/lib/Makefile         |  4 +++-
 common/board_f.c               | 22 ++++++++++++++++------
 common/board_r.c               | 22 +++++++---------------
 include/asm-generic/u-boot.h   |  2 +-
 7 files changed, 41 insertions(+), 23 deletions(-)

Comments

Tom Rini March 6, 2015, 3:46 p.m. UTC | #1
On Thu, Feb 12, 2015 at 01:40:17AM +0100, angelo@sysam.it wrote:

> Add generic-board support for the m68k architecture.
> 
> Signed-off-by: Angelo Dureghello <angelo@sysam.it>

Applied to u-boot/master, thanks!
Jan Kiszka March 7, 2015, 8 a.m. UTC | #2
On 2015-02-12 01:40, Angelo Dureghello wrote:
> Add generic-board support for the m68k architecture.
> 
> Signed-off-by: Angelo Dureghello <angelo@sysam.it>
> ---
>  arch/m68k/config.mk            |  3 +++
>  arch/m68k/include/asm/config.h |  3 +++
>  arch/m68k/include/asm/u-boot.h |  8 ++++++++
>  arch/m68k/lib/Makefile         |  4 +++-
>  common/board_f.c               | 22 ++++++++++++++++------
>  common/board_r.c               | 22 +++++++---------------
>  include/asm-generic/u-boot.h   |  2 +-
>  7 files changed, 41 insertions(+), 23 deletions(-)
> 
> diff --git a/arch/m68k/config.mk b/arch/m68k/config.mk
> index 3b3a7e8..a629b68 100644
> --- a/arch/m68k/config.mk
> +++ b/arch/m68k/config.mk
> @@ -11,6 +11,9 @@ endif
>  
>  CONFIG_STANDALONE_LOAD_ADDR ?= 0x20000
>  
> +# Support generic board on m68k
> +__HAVE_ARCH_GENERIC_BOARD := y
> +
>  PLATFORM_CPPFLAGS += -D__M68K__
>  PLATFORM_LDFLAGS  += -n
>  PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections
> diff --git a/arch/m68k/include/asm/config.h b/arch/m68k/include/asm/config.h
> index 9c4d3fb..7590842 100644
> --- a/arch/m68k/include/asm/config.h
> +++ b/arch/m68k/include/asm/config.h
> @@ -7,6 +7,9 @@
>  #ifndef _ASM_CONFIG_H_
>  #define _ASM_CONFIG_H_
>  
> +#define CONFIG_SYS_GENERIC_BOARD
> +#define CONFIG_SYS_GENERIC_GLOBAL_DATA
> +
>  #define CONFIG_NEEDS_MANUAL_RELOC
>  
>  #define CONFIG_LMB
> diff --git a/arch/m68k/include/asm/u-boot.h b/arch/m68k/include/asm/u-boot.h
> index 983cb2d..911c0d3 100644
> --- a/arch/m68k/include/asm/u-boot.h
> +++ b/arch/m68k/include/asm/u-boot.h
> @@ -20,6 +20,11 @@
>   * include/asm-ppc/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
> +
>  #ifndef __ASSEMBLY__
>  
>  typedef struct bd_info {
> @@ -48,6 +53,9 @@ typedef struct bd_info {
>  
>  #endif				/* __ASSEMBLY__ */
>  
> +#endif				/* !CONFIG_SYS_GENERIC_BOARD */
> +
> +
>  /* For image.h:image_check_target_arch() */
>  #define IH_ARCH_DEFAULT IH_ARCH_M68K
>  
> diff --git a/arch/m68k/lib/Makefile b/arch/m68k/lib/Makefile
> index 65867d6..d0e1a84 100644
> --- a/arch/m68k/lib/Makefile
> +++ b/arch/m68k/lib/Makefile
> @@ -5,7 +5,9 @@
>  # SPDX-License-Identifier:	GPL-2.0+
>  #
>  
> -obj-y	+= board.o
> +ifndef CONFIG_SYS_GENERIC_BOARD
> +obj-y   += board.o
> +endif
>  obj-$(CONFIG_CMD_BOOTM) += bootm.o
>  obj-y	+= cache.o
>  obj-y	+= interrupts.o
> diff --git a/common/board_f.c b/common/board_f.c
> index bdad36b..0de3919 100644
> --- a/common/board_f.c
> +++ b/common/board_f.c
> @@ -174,7 +174,7 @@ static int announce_dram_init(void)
>  	return 0;
>  }
>  
> -#if defined(CONFIG_MIPS) || defined(CONFIG_PPC)
> +#if defined(CONFIG_MIPS) || defined(CONFIG_PPC) || defined(CONFIG_M68K)
>  static int init_func_ram(void)
>  {
>  #ifdef	CONFIG_BOARD_TYPES
> @@ -624,7 +624,7 @@ static int display_new_sp(void)
>  	return 0;
>  }
>  
> -#ifdef CONFIG_PPC
> +#if defined(CONFIG_PPC) || defined(CONFIG_M68K)
>  static int setup_board_part1(void)
>  {
>  	bd_t *bd = gd->bd;
> @@ -645,7 +645,7 @@ static int setup_board_part1(void)
>  		defined(CONFIG_E500) || defined(CONFIG_MPC86xx)
>  	bd->bi_immr_base = CONFIG_SYS_IMMR;	/* base  of IMMR register     */
>  #endif
> -#if defined(CONFIG_MPC5xxx)
> +#if defined(CONFIG_MPC5xxx) || defined(CONFIG_M68K)
>  	bd->bi_mbar_base = CONFIG_SYS_MBAR;	/* base of internal registers */
>  #endif
>  #if defined(CONFIG_MPC83xx)
> @@ -735,6 +735,13 @@ static int setup_reloc(void)
>  {
>  #ifdef CONFIG_SYS_TEXT_BASE
>  	gd->reloc_off = gd->relocaddr - CONFIG_SYS_TEXT_BASE;
> +#ifdef CONFIG_M68K
> +	/*
> +	 * On all ColdFire arch cpu, monitor code starts always
> +	 * just after the default vector table location, so at 0x400
> +	 */
> +	gd->reloc_off = gd->relocaddr - (CONFIG_SYS_TEXT_BASE + 0x400);
> +#endif
>  #endif
>  	memcpy(gd->new_gd, (char *)gd, sizeof(gd_t));
>  
> @@ -860,6 +867,9 @@ static init_fnc_t init_sequence_f[] = {
>  #ifdef CONFIG_FSL_ESDHC
>  	get_clocks,
>  #endif
> +#ifdef CONFIG_M68K
> +	get_clocks,
> +#endif
>  	env_init,		/* initialize environment */
>  #if defined(CONFIG_8xx_CPUCLK_DEFAULT)
>  	/* get CPU and bus clocks according to the environment variable */
> @@ -886,7 +896,7 @@ static init_fnc_t init_sequence_f[] = {
>  #if defined(CONFIG_MPC83xx)
>  	prt_83xx_rsr,
>  #endif
> -#ifdef CONFIG_PPC
> +#if defined(CONFIG_PPC) || defined(CONFIG_M68K)
>  	checkcpu,
>  #endif
>  	print_cpuinfo,		/* display cpu info (and speed) */
> @@ -912,7 +922,7 @@ static init_fnc_t init_sequence_f[] = {
>  #if defined(CONFIG_ARM) || defined(CONFIG_X86) || defined(CONFIG_MICROBLAZE)
>  	dram_init,		/* configure available RAM banks */
>  #endif
> -#if defined(CONFIG_MIPS) || defined(CONFIG_PPC)
> +#if defined(CONFIG_MIPS) || defined(CONFIG_PPC) || defined(CONFIG_M68K)
>  	init_func_ram,
>  #endif
>  #ifdef CONFIG_POST
> @@ -980,7 +990,7 @@ static init_fnc_t init_sequence_f[] = {
>  	reserve_stacks,
>  	setup_dram_config,
>  	show_dram_config,
> -#ifdef CONFIG_PPC
> +#if defined(CONFIG_PPC) || defined(CONFIG_M68K)
>  	setup_board_part1,
>  	INIT_FUNC_WATCHDOG_RESET
>  	setup_board_part2,
> diff --git a/common/board_r.c b/common/board_r.c
> index 907b33c..b2488c0 100644
> --- a/common/board_r.c
> +++ b/common/board_r.c
> @@ -164,14 +164,17 @@ static int initr_serial(void)
>  	return 0;
>  }
>  
> -#ifdef CONFIG_PPC
> +#if defined(CONFIG_PPC) || defined(CONFIG_M68K)
>  static int initr_trap(void)
>  {
>  	/*
>  	 * Setup trap handlers
>  	 */
> +#if defined(CONFIG_PPC)
>  	trap_init(gd->relocaddr);
> -
> +#else
> +	trap_init(CONFIG_SYS_SDRAM_BASE);
> +#endif
>  	return 0;
>  }
>  #endif
> @@ -265,14 +268,6 @@ static int initr_malloc(void)
>  	return 0;
>  }
>  
> -#ifdef CONFIG_SYS_NONCACHED_MEMORY
> -static int initr_noncached(void)
> -{
> -	noncached_init();
> -	return 0;
> -}
> -#endif
> -

Why did this patch remove this hunk and the one below? This breaks
Ethernet for the Jetson TK1 which uses non-cached memory.

Jan

>  #ifdef CONFIG_DM
>  static int initr_dm(void)
>  {
> @@ -688,9 +683,6 @@ init_fnc_t init_sequence_r[] = {
>  #endif
>  	initr_barrier,
>  	initr_malloc,
> -#ifdef CONFIG_SYS_NONCACHED_MEMORY
> -	initr_noncached,
> -#endif
>  	bootstage_relocate,
>  #ifdef CONFIG_DM
>  	initr_dm,
> @@ -714,7 +706,7 @@ init_fnc_t init_sequence_r[] = {
>  #ifdef CONFIG_NEEDS_MANUAL_RELOC
>  	initr_manual_reloc_cmdtable,
>  #endif
> -#ifdef CONFIG_PPC
> +#if defined(CONFIG_PPC) || defined(CONFIG_M68K)
>  	initr_trap,
>  #endif
>  #ifdef CONFIG_ADDR_MAP
> @@ -813,7 +805,7 @@ init_fnc_t init_sequence_r[] = {
>  #if defined(CONFIG_ARM)
>  	initr_enable_interrupts,
>  #endif
> -#if defined(CONFIG_X86) || defined(CONFIG_MICROBLAZE)
> +#if defined(CONFIG_X86) || defined(CONFIG_MICROBLAZE) || defined(CONFIG_M68K)
>  	timer_init,		/* initialize timer */
>  #endif
>  #if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
> diff --git a/include/asm-generic/u-boot.h b/include/asm-generic/u-boot.h
> index aef39d7..e00db7d 100644
> --- a/include/asm-generic/u-boot.h
> +++ b/include/asm-generic/u-boot.h
> @@ -41,7 +41,7 @@ typedef struct bd_info {
>  	|| defined(CONFIG_E500) || defined(CONFIG_MPC86xx)
>  	unsigned long	bi_immr_base;	/* base of IMMR register */
>  #endif
> -#if defined(CONFIG_MPC5xxx)
> +#if defined(CONFIG_MPC5xxx) || defined(CONFIG_M68K)
>  	unsigned long	bi_mbar_base;	/* base of internal registers */
>  #endif
>  #if defined(CONFIG_MPC83xx)
>
diff mbox

Patch

diff --git a/arch/m68k/config.mk b/arch/m68k/config.mk
index 3b3a7e8..a629b68 100644
--- a/arch/m68k/config.mk
+++ b/arch/m68k/config.mk
@@ -11,6 +11,9 @@  endif
 
 CONFIG_STANDALONE_LOAD_ADDR ?= 0x20000
 
+# Support generic board on m68k
+__HAVE_ARCH_GENERIC_BOARD := y
+
 PLATFORM_CPPFLAGS += -D__M68K__
 PLATFORM_LDFLAGS  += -n
 PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections
diff --git a/arch/m68k/include/asm/config.h b/arch/m68k/include/asm/config.h
index 9c4d3fb..7590842 100644
--- a/arch/m68k/include/asm/config.h
+++ b/arch/m68k/include/asm/config.h
@@ -7,6 +7,9 @@ 
 #ifndef _ASM_CONFIG_H_
 #define _ASM_CONFIG_H_
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_SYS_GENERIC_GLOBAL_DATA
+
 #define CONFIG_NEEDS_MANUAL_RELOC
 
 #define CONFIG_LMB
diff --git a/arch/m68k/include/asm/u-boot.h b/arch/m68k/include/asm/u-boot.h
index 983cb2d..911c0d3 100644
--- a/arch/m68k/include/asm/u-boot.h
+++ b/arch/m68k/include/asm/u-boot.h
@@ -20,6 +20,11 @@ 
  * include/asm-ppc/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
+
 #ifndef __ASSEMBLY__
 
 typedef struct bd_info {
@@ -48,6 +53,9 @@  typedef struct bd_info {
 
 #endif				/* __ASSEMBLY__ */
 
+#endif				/* !CONFIG_SYS_GENERIC_BOARD */
+
+
 /* For image.h:image_check_target_arch() */
 #define IH_ARCH_DEFAULT IH_ARCH_M68K
 
diff --git a/arch/m68k/lib/Makefile b/arch/m68k/lib/Makefile
index 65867d6..d0e1a84 100644
--- a/arch/m68k/lib/Makefile
+++ b/arch/m68k/lib/Makefile
@@ -5,7 +5,9 @@ 
 # SPDX-License-Identifier:	GPL-2.0+
 #
 
-obj-y	+= board.o
+ifndef CONFIG_SYS_GENERIC_BOARD
+obj-y   += board.o
+endif
 obj-$(CONFIG_CMD_BOOTM) += bootm.o
 obj-y	+= cache.o
 obj-y	+= interrupts.o
diff --git a/common/board_f.c b/common/board_f.c
index bdad36b..0de3919 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -174,7 +174,7 @@  static int announce_dram_init(void)
 	return 0;
 }
 
-#if defined(CONFIG_MIPS) || defined(CONFIG_PPC)
+#if defined(CONFIG_MIPS) || defined(CONFIG_PPC) || defined(CONFIG_M68K)
 static int init_func_ram(void)
 {
 #ifdef	CONFIG_BOARD_TYPES
@@ -624,7 +624,7 @@  static int display_new_sp(void)
 	return 0;
 }
 
-#ifdef CONFIG_PPC
+#if defined(CONFIG_PPC) || defined(CONFIG_M68K)
 static int setup_board_part1(void)
 {
 	bd_t *bd = gd->bd;
@@ -645,7 +645,7 @@  static int setup_board_part1(void)
 		defined(CONFIG_E500) || defined(CONFIG_MPC86xx)
 	bd->bi_immr_base = CONFIG_SYS_IMMR;	/* base  of IMMR register     */
 #endif
-#if defined(CONFIG_MPC5xxx)
+#if defined(CONFIG_MPC5xxx) || defined(CONFIG_M68K)
 	bd->bi_mbar_base = CONFIG_SYS_MBAR;	/* base of internal registers */
 #endif
 #if defined(CONFIG_MPC83xx)
@@ -735,6 +735,13 @@  static int setup_reloc(void)
 {
 #ifdef CONFIG_SYS_TEXT_BASE
 	gd->reloc_off = gd->relocaddr - CONFIG_SYS_TEXT_BASE;
+#ifdef CONFIG_M68K
+	/*
+	 * On all ColdFire arch cpu, monitor code starts always
+	 * just after the default vector table location, so at 0x400
+	 */
+	gd->reloc_off = gd->relocaddr - (CONFIG_SYS_TEXT_BASE + 0x400);
+#endif
 #endif
 	memcpy(gd->new_gd, (char *)gd, sizeof(gd_t));
 
@@ -860,6 +867,9 @@  static init_fnc_t init_sequence_f[] = {
 #ifdef CONFIG_FSL_ESDHC
 	get_clocks,
 #endif
+#ifdef CONFIG_M68K
+	get_clocks,
+#endif
 	env_init,		/* initialize environment */
 #if defined(CONFIG_8xx_CPUCLK_DEFAULT)
 	/* get CPU and bus clocks according to the environment variable */
@@ -886,7 +896,7 @@  static init_fnc_t init_sequence_f[] = {
 #if defined(CONFIG_MPC83xx)
 	prt_83xx_rsr,
 #endif
-#ifdef CONFIG_PPC
+#if defined(CONFIG_PPC) || defined(CONFIG_M68K)
 	checkcpu,
 #endif
 	print_cpuinfo,		/* display cpu info (and speed) */
@@ -912,7 +922,7 @@  static init_fnc_t init_sequence_f[] = {
 #if defined(CONFIG_ARM) || defined(CONFIG_X86) || defined(CONFIG_MICROBLAZE)
 	dram_init,		/* configure available RAM banks */
 #endif
-#if defined(CONFIG_MIPS) || defined(CONFIG_PPC)
+#if defined(CONFIG_MIPS) || defined(CONFIG_PPC) || defined(CONFIG_M68K)
 	init_func_ram,
 #endif
 #ifdef CONFIG_POST
@@ -980,7 +990,7 @@  static init_fnc_t init_sequence_f[] = {
 	reserve_stacks,
 	setup_dram_config,
 	show_dram_config,
-#ifdef CONFIG_PPC
+#if defined(CONFIG_PPC) || defined(CONFIG_M68K)
 	setup_board_part1,
 	INIT_FUNC_WATCHDOG_RESET
 	setup_board_part2,
diff --git a/common/board_r.c b/common/board_r.c
index 907b33c..b2488c0 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -164,14 +164,17 @@  static int initr_serial(void)
 	return 0;
 }
 
-#ifdef CONFIG_PPC
+#if defined(CONFIG_PPC) || defined(CONFIG_M68K)
 static int initr_trap(void)
 {
 	/*
 	 * Setup trap handlers
 	 */
+#if defined(CONFIG_PPC)
 	trap_init(gd->relocaddr);
-
+#else
+	trap_init(CONFIG_SYS_SDRAM_BASE);
+#endif
 	return 0;
 }
 #endif
@@ -265,14 +268,6 @@  static int initr_malloc(void)
 	return 0;
 }
 
-#ifdef CONFIG_SYS_NONCACHED_MEMORY
-static int initr_noncached(void)
-{
-	noncached_init();
-	return 0;
-}
-#endif
-
 #ifdef CONFIG_DM
 static int initr_dm(void)
 {
@@ -688,9 +683,6 @@  init_fnc_t init_sequence_r[] = {
 #endif
 	initr_barrier,
 	initr_malloc,
-#ifdef CONFIG_SYS_NONCACHED_MEMORY
-	initr_noncached,
-#endif
 	bootstage_relocate,
 #ifdef CONFIG_DM
 	initr_dm,
@@ -714,7 +706,7 @@  init_fnc_t init_sequence_r[] = {
 #ifdef CONFIG_NEEDS_MANUAL_RELOC
 	initr_manual_reloc_cmdtable,
 #endif
-#ifdef CONFIG_PPC
+#if defined(CONFIG_PPC) || defined(CONFIG_M68K)
 	initr_trap,
 #endif
 #ifdef CONFIG_ADDR_MAP
@@ -813,7 +805,7 @@  init_fnc_t init_sequence_r[] = {
 #if defined(CONFIG_ARM)
 	initr_enable_interrupts,
 #endif
-#if defined(CONFIG_X86) || defined(CONFIG_MICROBLAZE)
+#if defined(CONFIG_X86) || defined(CONFIG_MICROBLAZE) || defined(CONFIG_M68K)
 	timer_init,		/* initialize timer */
 #endif
 #if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
diff --git a/include/asm-generic/u-boot.h b/include/asm-generic/u-boot.h
index aef39d7..e00db7d 100644
--- a/include/asm-generic/u-boot.h
+++ b/include/asm-generic/u-boot.h
@@ -41,7 +41,7 @@  typedef struct bd_info {
 	|| defined(CONFIG_E500) || defined(CONFIG_MPC86xx)
 	unsigned long	bi_immr_base;	/* base of IMMR register */
 #endif
-#if defined(CONFIG_MPC5xxx)
+#if defined(CONFIG_MPC5xxx) || defined(CONFIG_M68K)
 	unsigned long	bi_mbar_base;	/* base of internal registers */
 #endif
 #if defined(CONFIG_MPC83xx)