All of lore.kernel.org
 help / color / mirror / Atom feed
From: Albert ARIBAUD <albert.u.boot@aribaud.net>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] edminiv2: switch to SPL
Date: Wed, 25 Feb 2015 09:07:08 +0100	[thread overview]
Message-ID: <20150225090708.4ebc7422@lilith> (raw)
In-Reply-To: <1422741338-27165-1-git-send-email-albert.u.boot@aribaud.net>

On Sat, 31 Jan 2015 22:55:38 +0100, Albert ARIBAUD <albert.u.boot@aribaud.net> wrote:
> ED Mini V2 is based on Orion 5x which boots at fixed
> address 0xFFFF0000 in NOR Flash. Place SPL there, and
> switch U-Boot from .bin to .img format, stored in
> NOR Flash at 0xFFF90000.
> 
> Note: this patch was tested on HW and works, i.e.
> it boots U-Boot properly, but SPL console output
> currently does not appear, due to GD being trashed
> by arch/arm/lib/spl.c. This trashing is soon to be
> removed, and then ED Mini V2 SPL console output will
> become visible.
> 
> Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
> ---
>  arch/arm/cpu/arm926ejs/orion5x/Kconfig         |  1 +
>  arch/arm/cpu/arm926ejs/orion5x/cpu.c           |  2 +
>  arch/arm/cpu/arm926ejs/orion5x/lowlevel_init.S | 14 +++++-
>  arch/arm/cpu/arm926ejs/orion5x/u-boot-spl.lds  | 61 ++++++++++++++++++++++++++
>  arch/arm/include/asm/arch-orion5x/spl.h        | 10 +++++
>  board/LaCie/edminiv2/edminiv2.c                | 20 +++++++++
>  configs/edminiv2_defconfig                     |  7 +--
>  include/configs/edminiv2.h                     | 23 +++++++++-
>  8 files changed, 132 insertions(+), 6 deletions(-)
>  create mode 100644 arch/arm/cpu/arm926ejs/orion5x/u-boot-spl.lds
>  create mode 100644 arch/arm/include/asm/arch-orion5x/spl.h
> 
> diff --git a/arch/arm/cpu/arm926ejs/orion5x/Kconfig b/arch/arm/cpu/arm926ejs/orion5x/Kconfig
> index 5a54262..291c511 100644
> --- a/arch/arm/cpu/arm926ejs/orion5x/Kconfig
> +++ b/arch/arm/cpu/arm926ejs/orion5x/Kconfig
> @@ -5,6 +5,7 @@ choice
>  
>  config TARGET_EDMINIV2
>  	bool "LaCie Ethernet Disk mini V2"
> +	select SUPPORT_SPL
>  
>  endchoice
>  
> diff --git a/arch/arm/cpu/arm926ejs/orion5x/cpu.c b/arch/arm/cpu/arm926ejs/orion5x/cpu.c
> index f88db3b..2ecd385 100644
> --- a/arch/arm/cpu/arm926ejs/orion5x/cpu.c
> +++ b/arch/arm/cpu/arm926ejs/orion5x/cpu.c
> @@ -234,7 +234,9 @@ int arch_cpu_init(void)
>  	/* Enable and invalidate L2 cache in write through mode */
>  	invalidate_l2_cache();
>  
> +#ifdef CONFIG_SPL_BUILD
>  	orion5x_config_adr_windows();
> +#endif
>  
>  	return 0;
>  }
> diff --git a/arch/arm/cpu/arm926ejs/orion5x/lowlevel_init.S b/arch/arm/cpu/arm926ejs/orion5x/lowlevel_init.S
> index 4dacc29..51a8b3c 100644
> --- a/arch/arm/cpu/arm926ejs/orion5x/lowlevel_init.S
> +++ b/arch/arm/cpu/arm926ejs/orion5x/lowlevel_init.S
> @@ -62,14 +62,16 @@
>  /*
>   * Low-level init happens right after start.S has switched to SVC32,
>   * flushed and disabled caches and disabled MMU. We're still running
> - * from the boot chip select, so the first thing we should do is set
> - * up RAM for us to relocate into.
> + * from the boot chip select, so the first thing SPL should do is to
> + * set up the RAM to copy U-Boot into.
>   */
>  
>  .globl lowlevel_init
>  
>  lowlevel_init:
>  
> +#ifdef CONFIG_SPL_BUILD
> +
>  	/* Use 'r4 as the base for internal register accesses */
>  	ldr	r4, =ORION5X_REGS_PHY_BASE
>  
> @@ -273,5 +275,13 @@ lowlevel_init:
>  	orr	r2, r2, r6
>  	str	r2, [r3, #0x484]
>  
> +	/* enable for 2 GB DDR; detection should find out real amount */
> +	sub	r6, r6, r6
> +	str	r6, [r3, #0x500]
> +	ldr	r6, =0x7fff0001
> +	str	r6, [r3, #0x504]
> +
> +#endif /* CONFIG_SPL_BUILD */
> +
>  	/* Return to U-boot via saved link register */
>  	mov	pc, lr
> diff --git a/arch/arm/cpu/arm926ejs/orion5x/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/orion5x/u-boot-spl.lds
> new file mode 100644
> index 0000000..6f7fca0
> --- /dev/null
> +++ b/arch/arm/cpu/arm926ejs/orion5x/u-boot-spl.lds
> @@ -0,0 +1,61 @@
> +/*
> + * (C) Copyright 2014 Albert ARIBAUD <albert.u.boot@aribaud.net>
> + *
> + * Based on:
> + *
> + * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
> + * Tom Cubie <tangliang@allwinnertech.com>
> + *
> + * Based on omap-common/u-boot-spl.lds:
> + *
> + * (C) Copyright 2002
> + * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
> + *
> + * (C) Copyright 2010
> + * Texas Instruments, <www.ti.com>
> + *	Aneesh V <aneesh@ti.com>
> + *
> + * SPDX-License-Identifier:	GPL-2.0+
> + */
> +MEMORY { .nor : ORIGIN = CONFIG_SPL_TEXT_BASE,\
> +		LENGTH = CONFIG_SPL_MAX_SIZE }
> +MEMORY { .bss : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
> +		LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
> +
> +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
> +OUTPUT_ARCH(arm)
> +ENTRY(_start)
> +SECTIONS
> +{
> +	.text      :
> +	{
> +		__start = .;
> +		*(.vectors)
> +		CPUDIR/start.o	(.text)
> +		*(.text*)
> +	} > .nor
> +
> +	. = ALIGN(4);
> +	.rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.nor
> +
> +	. = ALIGN(4);
> +	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.nor
> +
> +	. = ALIGN(4);
> +	.u_boot_list : {
> +		KEEP(*(SORT(.u_boot_list*)));
> +	} > .nor
> +
> +	. = ALIGN(4);
> +	__image_copy_end = .;
> +	_end = .;
> +
> +	.bss :
> +	{
> +		. = ALIGN(4);
> +		__bss_start = .;
> +		*(.bss*)
> +		. = ALIGN(4);
> +		__bss_end = .;
> +	} > .bss
> +}
> diff --git a/arch/arm/include/asm/arch-orion5x/spl.h b/arch/arm/include/asm/arch-orion5x/spl.h
> new file mode 100644
> index 0000000..23745bc
> --- /dev/null
> +++ b/arch/arm/include/asm/arch-orion5x/spl.h
> @@ -0,0 +1,10 @@
> +/*
> + * (C) Copyright 2014 Albert ARIBAUD <albert.u.boot@aribaud.net>
> + *
> + * SPDX-License-Identifier:	GPL-2.0+
> + */
> +
> +#ifndef	_ASM_ARCH_SPL_H_
> +#define	_ASM_ARCH_SPL_H_
> +
> +#define BOOT_DEVICE_NOR		1
> diff --git a/board/LaCie/edminiv2/edminiv2.c b/board/LaCie/edminiv2/edminiv2.c
> index 80ec7fa..2983201 100644
> --- a/board/LaCie/edminiv2/edminiv2.c
> +++ b/board/LaCie/edminiv2/edminiv2.c
> @@ -12,6 +12,8 @@
>  #include <miiphy.h>
>  #include <asm/arch/orion5x.h>
>  #include "../common/common.h"
> +#include <spl.h>
> +#include <ns16550.h>
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> @@ -83,3 +85,21 @@ void reset_phy(void)
>  	mv_phy_88e1116_init("egiga0", 8);
>  }
>  #endif /* CONFIG_RESET_PHY_R */
> +
> +/*
> + * SPL serial setup and NOR boot device selection
> + */
> +
> +#ifdef CONFIG_SPL_BUILD
> +
> +void spl_board_init(void)
> +{
> +	preloader_console_init();
> +}
> +
> +u32 spl_boot_device(void)
> +{
> +	return BOOT_DEVICE_NOR;
> +}
> +
> +#endif /* CONFIG_SPL_BUILD */
> diff --git a/configs/edminiv2_defconfig b/configs/edminiv2_defconfig
> index 3b1a6c1..20c1c65 100644
> --- a/configs/edminiv2_defconfig
> +++ b/configs/edminiv2_defconfig
> @@ -1,3 +1,4 @@
> -CONFIG_ARM=y
> -CONFIG_ORION5X=y
> -CONFIG_TARGET_EDMINIV2=y
> +CONFIG_SPL=y
> ++S:CONFIG_ARM=y
> ++S:CONFIG_ORION5X=y
> ++S:CONFIG_TARGET_EDMINIV2=y
> diff --git a/include/configs/edminiv2.h b/include/configs/edminiv2.h
> index 47da4a9..ee5f76b 100644
> --- a/include/configs/edminiv2.h
> +++ b/include/configs/edminiv2.h
> @@ -13,10 +13,31 @@
>  #define _CONFIG_EDMINIV2_H
>  
>  /* general settings */
> -#define CONFIG_SYS_TEXT_BASE 0xfff90000
>  #define CONFIG_SYS_GENERIC_BOARD
>  
>  /*
> + * SPL
> + */
> +
> +#define CONFIG_SPL_FRAMEWORK
> +#define CONFIG_SPL_LIBGENERIC_SUPPORT
> +#define CONFIG_SPL_LIBCOMMON_SUPPORT
> +#define CONFIG_SPL_SERIAL_SUPPORT
> +#define CONFIG_SPL_NOR_SUPPORT
> +#define CONFIG_SPL_TEXT_BASE		0xffff0000
> +#define CONFIG_SPL_MAX_SIZE		0x0000fff0
> +#define CONFIG_SPL_STACK		0x00020000
> +#define CONFIG_SPL_BSS_START_ADDR	0x00020000
> +#define CONFIG_SPL_BSS_MAX_SIZE		0x0001ffff
> +#define CONFIG_SYS_SPL_MALLOC_START	0x00040000
> +#define CONFIG_SYS_SPL_MALLOC_SIZE	0x0001ffff
> +#define CONFIG_SPL_LDSCRIPT            "$(CPUDIR)/orion5x/u-boot-spl.lds"
> +#define CONFIG_SPL_BOARD_INIT
> +#define CONFIG_SYS_UBOOT_BASE		0xfff90000
> +#define CONFIG_SYS_UBOOT_START		0x00800000
> +#define CONFIG_SYS_TEXT_BASE 		0x00800000
> +
> +/*
>   * Version number information
>   */
>  
> -- 
> 2.1.0
> 

Applied to u-boot-arm/master.

Amicalement,
-- 
Albert.

      reply	other threads:[~2015-02-25  8:07 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-31 21:55 [U-Boot] [PATCH] edminiv2: switch to SPL Albert ARIBAUD
2015-02-25  8:07 ` Albert ARIBAUD [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150225090708.4ebc7422@lilith \
    --to=albert.u.boot@aribaud.net \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.