Added SPL for MX35 boards
v2 cover Added SPL for MX35 boards
In this patchset, a new i.MX35 board is added implementing the internal boot mode and using the general SPL Framework. To fix that relocation should not happen in SPL, the following patch is also required:
http://patchwork.ozlabs.org/patch/181166/
Because the woodburn can boot from different media, two targets are added into boards.cfg:
- woodburn : board boots in external mode from NOR flash
- woodburn_sd: board boots in internal mode from SD
This is the first i.MX board using the SPL framework.
Changes in v2:
- fix MX35 boot mode (Eric Benard)
- uses SPL as binary instead of MLO (Thomas Petazzoni, Tom Rini)
- NAND: the harware manufacturer decided for a different chip. Patches / issues related to NAND are dropped.
- use board_init_f in SPL for setting SDRAM controller
Stefano Babic (6):
ARM: Fix start.S when used with SPL in arm1136
MX35: add LOW_LEVEL_SRAM_STACK to use SPL_FRAMEWORK
MX35: Add soc_boot_mode and soc_boot_device to MX35
SPL: Added SPL target for mx35 SOC to SPL Makefile
ARM: Add SPL target to arm1136
MX35: add support for woodburn board
MAINTAINERS | 1 + Makefile | 1 + arch/arm/cpu/arm1136/config.mk | 3 + arch/arm/cpu/arm1136/mx35/Makefile | 1 + arch/arm/cpu/arm1136/mx35/generic.c | 75 ++++++ arch/arm/cpu/arm1136/mx35/mx35_sdram.c | 137 +++++++++++ arch/arm/cpu/arm1136/start.S | 31 ++- arch/arm/cpu/arm1136/u-boot-spl.lds | 62 +++++ arch/arm/include/asm/arch-mx35/imx-regs.h | 2 + arch/arm/include/asm/arch-mx35/mmc_host_def.h | 31 +++ arch/arm/include/asm/arch-mx35/spl.h | 38 +++ arch/arm/include/asm/arch-mx35/sys_proto.h | 2 + board/woodburn/Makefile | 43 ++++ board/woodburn/imximage.cfg | 4 + board/woodburn/lowlevel_init.S | 38 +++ board/woodburn/woodburn.c | 261 +++++++++++++++++++++ boards.cfg | 2 + include/configs/woodburn.h | 34 +++ include/configs/woodburn_common.h | 313 +++++++++++++++++++++++++ include/configs/woodburn_sd.h | 60 +++++ spl/Makefile | 6 + 21 files changed, 1134 insertions(+), 11 deletions(-) create mode 100644 arch/arm/cpu/arm1136/mx35/mx35_sdram.c create mode 100644 arch/arm/cpu/arm1136/u-boot-spl.lds create mode 100644 arch/arm/include/asm/arch-mx35/mmc_host_def.h create mode 100644 arch/arm/include/asm/arch-mx35/spl.h create mode 100644 board/woodburn/Makefile create mode 100644 board/woodburn/imximage.cfg create mode 100644 board/woodburn/lowlevel_init.S create mode 100644 board/woodburn/woodburn.c create mode 100644 include/configs/woodburn.h create mode 100644 include/configs/woodburn_common.h create mode 100644 include/configs/woodburn_sd.h
Signature · 1 line
1.7.9.5
PATCH v2 1/6 ARM: Fix start.S when used with SPL in arm1136
This patch modifies start.S for the arm1136 to make it conform to start.S in armv7 architecture, to make it usable if the SPL framework is used.
---
arch/arm/cpu/arm1136/start.S | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-)
arch/arm/cpu/arm1136/start.S +20 -11
@@ -100,6 +100,10 @@ _TEXT_BASE: _bss_start_ofs: .word __bss_start - _start +.global _image_copy_end_ofs +_image_copy_end_ofs: + .word __image_copy_end - _start + .globl _bss_end_ofs _bss_end_ofs: .word __bss_end__ - _start
@@ -192,7 +196,7 @@ stack_setup: cmp r0, r6 beq clear_bss /* skip relocation */ mov r1, r6 /* r1 <- scratch for copy_loop */ - ldr r3, _bss_start_ofs + ldr r3, _image_copy_end_ofs add r2, r0, r3 /* r2 <- source end address */ copy_loop:
@@ -240,15 +244,28 @@ fixnext: add r2, r2, #8 /* each rel.dyn entry is 8 bytes */ cmp r2, r3 blo fixloop + b clear_bss + +_rel_dyn_start_ofs: + .word __rel_dyn_start - _start +_rel_dyn_end_ofs: + .word __rel_dyn_end - _start +_dynsym_start_ofs: + .word __dynsym_start - _start #endif clear_bss: -#ifndef CONFIG_SPL_BUILD +#ifdef CONFIG_SPL_BUILD + /* No relocation for SPL */ + ldr r0, =__bss_start + ldr r1, =__bss_end__ +#else ldr r0, _bss_start_ofs ldr r1, _bss_end_ofs mov r4, r6 /* reloc addr */ add r0, r0, r4 add r1, r1, r4 +#endif mov r2, #0x00000000 /* clear */ clbss_l:cmp r0, r1 /* clear loop... */
@@ -257,7 +274,6 @@ clbss_l:cmp r0, r1 /* clear loop... */ add r0, r0, #4 b clbss_l clbss_e: -#endif /* #ifndef CONFIG_SPL_BUILD */ /* * We are done. Do not return, instead branch to second part of board
@@ -272,7 +288,7 @@ _nand_boot_ofs: #else jump_2_ram: ldr r0, _board_init_r_ofs - ldr r1, _TEXT_BASE + adr r1, _start add lr, r0, r1 add lr, lr, r9 /* setup parameters for board_init_r */
@@ -285,13 +301,6 @@ _board_init_r_ofs: .word board_init_r - _start #endif -_rel_dyn_start_ofs: - .word __rel_dyn_start - _start -_rel_dyn_end_ofs: - .word __rel_dyn_end - _start -_dynsym_start_ofs: - .word __dynsym_start - _start - /* ************************************************************************* *
Signature · 1 line
1.7.9.5
PATCH v3 1/6 ARM: Fix start.S when used with SPL in arm1136
This patch modifies start.S for the arm1136 to make it conform to start.S in armv7 architecture, to make it usable if the SPL framework is used.
---
Changes:
- Previous patch breaks legacy nand_spl boards
due to local u-boot.lds. Fixed it.
arch/arm/cpu/arm1136/start.S | 31 +++++++++++++++++---------- board/freescale/mx31ads/u-boot.lds | 2 ++ nand_spl/board/freescale/mx31pdk/u-boot.lds | 2 ++ 3 files changed, 24 insertions(+), 11 deletions(-)
arch/arm/cpu/arm1136/start.S +20 -11
@@ -100,6 +100,10 @@ _TEXT_BASE: _bss_start_ofs: .word __bss_start - _start +.global _image_copy_end_ofs +_image_copy_end_ofs: + .word __image_copy_end - _start + .globl _bss_end_ofs _bss_end_ofs: .word __bss_end__ - _start
@@ -193,7 +197,7 @@ stack_setup: moveq r9, #0 /* no relocation. relocation offset(r9) = 0 */ beq clear_bss /* skip relocation */ mov r1, r6 /* r1 <- scratch for copy_loop */ - ldr r3, _bss_start_ofs + ldr r3, _image_copy_end_ofs add r2, r0, r3 /* r2 <- source end address */ copy_loop:
@@ -241,15 +245,28 @@ fixnext: add r2, r2, #8 /* each rel.dyn entry is 8 bytes */ cmp r2, r3 blo fixloop + b clear_bss + +_rel_dyn_start_ofs: + .word __rel_dyn_start - _start +_rel_dyn_end_ofs: + .word __rel_dyn_end - _start +_dynsym_start_ofs: + .word __dynsym_start - _start #endif clear_bss: -#ifndef CONFIG_SPL_BUILD +#ifdef CONFIG_SPL_BUILD + /* No relocation for SPL */ + ldr r0, =__bss_start + ldr r1, =__bss_end__ +#else ldr r0, _bss_start_ofs ldr r1, _bss_end_ofs mov r4, r6 /* reloc addr */ add r0, r0, r4 add r1, r1, r4 +#endif mov r2, #0x00000000 /* clear */ clbss_l:cmp r0, r1 /* clear loop... */
@@ -258,7 +275,6 @@ clbss_l:cmp r0, r1 /* clear loop... */ add r0, r0, #4 b clbss_l clbss_e: -#endif /* #ifndef CONFIG_SPL_BUILD */ /* * We are done. Do not return, instead branch to second part of board
@@ -273,7 +289,7 @@ _nand_boot_ofs: #else jump_2_ram: ldr r0, _board_init_r_ofs - ldr r1, _TEXT_BASE + adr r1, _start add lr, r0, r1 add lr, lr, r9 /* setup parameters for board_init_r */
@@ -286,13 +302,6 @@ _board_init_r_ofs: .word board_init_r - _start #endif -_rel_dyn_start_ofs: - .word __rel_dyn_start - _start -_rel_dyn_end_ofs: - .word __rel_dyn_end - _start -_dynsym_start_ofs: - .word __dynsym_start - _start - /* ************************************************************************* *
board/freescale/mx31ads/u-boot.lds +2 -0
@@ -63,6 +63,8 @@ SECTIONS . = ALIGN(4); + __image_copy_end = .; + .rel.dyn : { __rel_dyn_start = .; *(.rel*)
nand_spl/board/freescale/mx31pdk/u-boot.lds +2 -0
@@ -52,6 +52,8 @@ SECTIONS . = ALIGN(4); + __image_copy_end = .; + .rel.dyn : { __rel_dyn_start = .; *(.rel*)
Signature · 1 line
1.7.9.5
Fabio Estevam
reviewerPATCH v3 1/6 ARM: Fix start.S when used with SPL in arm1136
Hi Stefano,
Quoted 10 lines · Stefano Babic
This patch modifies
start.Sfor the arm1136 to make it conform tostart.Sin armv7 architecture, to make it usable if the SPL framework is used.Signed-off-by Stefano Babic <[email protected]>---
Changes:
- Previous patch breaks legacynand_splboards
due to localu-boot.lds. Fixed it.
I would like to convert mx31pdk to the new spl mechanism.
Any suggestions? Any other mx3 board that currently builds from NAND via spl?
Thanks,
Fabio Estevam
PATCH v3 1/6 ARM: Fix start.S when used with SPL in arm1136
Am 26/10/2012 18:23, schrieb Fabio Estevam:
Quoted 10 lines
Hi Stefano,
Quoted 7 lines · Stefano Babic
This patch modifies
start.Sfor the arm1136 to make it conform tostart.Sin armv7 architecture, to make it usable if the SPL framework is used.Signed-off-by Stefano Babic <[email protected]>---
Quoted 7 lines
Quoted 3 lines
Changes:
- Previous patch breaks legacynand_splboards
due to localu-boot.lds. Fixed it.I would like to convert mx31pdk to the new spl mechanism.
Any suggestions? Any other mx3 board that currently builds from NAND via spl?
I have none - the first board using the spl framework is woodburn in this patchset (you can get a working tree checking out -next). For this board it was asked to boot exclusively from SD.
Regards,
Stefano Babic
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================
PATCH v2 2/6 MX35: add LOW_LEVEL_SRAM_STACK to use SPL_FRAMEWORK
In reply to Stefano Babic---
arch/arm/include/asm/arch-mx35/imx-regs.h | 2 ++ 1 file changed, 2 insertions(+)
arch/arm/include/asm/arch-mx35/imx-regs.h +2 -0
@@ -33,6 +33,8 @@#define IRAM_BASE_ADDR 0x10000000/* internal ram */ #define IRAM_SIZE 0x00020000/* 128 KB */ +#define LOW_LEVEL_SRAM_STACK 0x1001E000 +/* * AIPS 1 */
Signature · 1 line
1.7.9.5
PATCH v2 3/6 MX35: Add soc_boot_mode and soc_boot_device to MX35
In reply to Stefano BabicThe functions are required to use the generic
SPL Framework.
---
arch/arm/cpu/arm1136/mx35/generic.c | 75 +++++++++++++++++++++++++ arch/arm/cpu/arm1136/u-boot-spl.lds | 62 ++++++++++++++++++++ arch/arm/include/asm/arch-mx35/mmc_host_def.h | 31 ++++++++++ arch/arm/include/asm/arch-mx35/spl.h | 38 +++++++++++++ 4 files changed, 206 insertions(+) create mode 100644 arch/arm/cpu/arm1136/u-boot-spl.lds create mode 100644 arch/arm/include/asm/arch-mx35/mmc_host_def.h create mode 100644 arch/arm/include/asm/arch-mx35/spl.h
arch/arm/cpu/arm1136/mx35/generic.c +75 -0
@@ -35,6 +35,7 @@#include <fsl_esdhc.h> #endif #include <netdev.h> +#include <spl.h> #define CLK_CODE (arm, ahb, sel) (((arm) << 16) + ((ahb) << 8) + (sel))#define CLK_CODE_ARM (c) (((c) >> 16) & 0xFF)
@@ -492,3 +493,77 @@ void reset_cpu(ulong addr)struct wdog_regs *wdog = (struct wdog_regs *)WDOG_BASE_ADDR ;writew (4 , &wdog->wcr); } + +#define RCSR_MEM_CTL_WEIM 0 +#define RCSR_MEM_CTL_NAND 1 +#define RCSR_MEM_CTL_ATA 2 +#define RCSR_MEM_CTL_EXPANSION 3 +#define RCSR_MEM_TYPE_NOR 0 +#define RCSR_MEM_TYPE_ONENAND 2 +#define RCSR_MEM_TYPE_SD 0 +#define RCSR_MEM_TYPE_I2C 2 +#define RCSR_MEM_TYPE_SPI 3 + +u32 spl_boot_device (void ) +{ +struct ccm_regs *ccm = + (struct ccm_regs *)IMX_CCM_BASE ; + +u32 rcsr =readl (&ccm->rcsr); +u32 mem_type, mem_ctl; + +/* In external mode, no boot device is returned */ +if ((rcsr >>10 ) &0x03 ) +return BOOT_DEVICE_NONE ; + + mem_ctl = (rcsr >>25 ) &0x03 ; + mem_type = (rcsr >>23 ) &0x03 ; + +switch (mem_ctl) { +case RCSR_MEM_CTL_WEIM : +switch (mem_type) { +case RCSR_MEM_TYPE_NOR : +return BOOT_DEVICE_NOR ; +case RCSR_MEM_TYPE_ONENAND : +return BOOT_DEVICE_ONE_NAND ; +default : +return BOOT_DEVICE_NONE ; + } +case RCSR_MEM_CTL_NAND : +return BOOT_DEVICE_NAND ; +case RCSR_MEM_CTL_EXPANSION : +switch (mem_type) { +case RCSR_MEM_TYPE_SD : +return BOOT_DEVICE_MMC1 ; +case RCSR_MEM_TYPE_I2C : +return BOOT_DEVICE_I2C ; +case RCSR_MEM_TYPE_SPI : +return BOOT_DEVICE_SPI ; +default : +return BOOT_DEVICE_NONE ; + } + } + +return BOOT_DEVICE_NONE ; +} + +#ifdef CONFIG_SPL_BUILD +u32 spl_boot_mode (void ) +{ +switch (spl_boot_device ()) { +case BOOT_DEVICE_MMC1 : +#ifdef CONFIG_SPL_FAT_SUPPORT +return MMCSD_MODE_FAT ; +#else +return MMCSD_MODE_RAW ; +#endif +break ; +case BOOT_DEVICE_NAND : +return 0 ; +break ; +default : +puts ("spl: ERROR: unsupported device\n" ); +hang (); + } +} +#endif
arch/arm/cpu/arm1136/u-boot-spl.lds new file +62 -0
62 lines not on this page · raw message
arch/arm/include/asm/arch-mx35/mmc_host_def.h new file +31 -0
@@ -0,0 +1,31 @@ +/* +* (C) Copyright 2008 +* Texas Instruments, <www.ti.com> +* Syed Mohammed Khasim <[email protected]> +* +* See file CREDITS for list of people who contributed to this +* project. +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation's version 2 of +* the License. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place, Suite 330, Boston, +* MA 02111-1307 USA +*/ + +#ifndef MMC_HOST_DEF_H +#define MMC_HOST_DEF_H + +/* Driver definitions */ +#define MMCSD_SECTOR_SIZE 512 + +#endif /* MMC_HOST_DEF_H */
arch/arm/include/asm/arch-mx35/spl.h new file +38 -0
@@ -0,0 +1,38 @@ +/* +* (C) Copyright 2012 +* Texas Instruments, <www.ti.com> +* +* See file CREDITS for list of people who contributed to this +* project. +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place, Suite 330, Boston, +* MA 02111-1307 USA +*/ +#ifndef _ASM_ARCH_SPL_H_ +#define _ASM_SPL_H_ + +#define BOOT_DEVICE_NONE 0 +#define BOOT_DEVICE_XIP 1 +#define BOOT_DEVICE_XIPWAIT 2 +#define BOOT_DEVICE_NAND 3 +#define BOOT_DEVICE_ONE_NAND 4 +#define BOOT_DEVICE_MMC1 5 +#define BOOT_DEVICE_MMC2 6 +#define BOOT_DEVICE_MMC2_2 7 +#define BOOT_DEVICE_NOR 8 +#define BOOT_DEVICE_I2C 9 +#define BOOT_DEVICE_SPI 10 + +#endif
Signature · 1 line
1.7.9.5
PATCH v2 4/6 SPL: Added SPL target for mx35 SOC to SPL Makefile
In reply to Stefano Babic---
spl/Makefile | 6 ++++++ 1 file changed, 6 insertions(+)
spl/Makefile +6 -0
@@ -118,6 +118,12 @@ $(OBJTREE)/MLO: $(obj)u-boot-spl.bin -a $(CONFIG_SPL_TEXT_BASE) -d $< $@ endif +ifneq ($(CONFIG_IMX_CONFIG),) +$(OBJTREE)/SPL: $(obj)u-boot-spl.bin + $(OBJTREE)/tools/mkimage -n $(SRCTREE)/$(CONFIG_IMX_CONFIG) -T imximage \ + -e $(CONFIG_SPL_TEXT_BASE) -d $< $@ +endif + ALL-y += $(obj)u-boot-spl.bin ifdef CONFIG_SAMSUNG
Signature · 1 line
1.7.9.5
PATCH v2 5/6 ARM: Add SPL target to arm1136
In reply to Stefano Babic---
Makefile | 1 + arch/arm/cpu/arm1136/config.mk | 3 +++ 2 files changed, 4 insertions(+)
Makefile +1 -0
@@ -819,6 +819,7 @@ clobber: tidy @rm -f $(obj)nand_spl/{u-boot.lds,u-boot-nand_spl.lds,u-boot-spl,u-boot-spl.map,System.map} @rm -f $(obj)spl/{u-boot-spl,u-boot-spl.bin,u-boot-spl.lds,u-boot-spl.map} @rm -f $(obj)MLO + @rm -f $(obj)SPL @rm -f $(obj)tools/xway-swap-bytes @rm -f $(obj)arch/powerpc/cpu/mpc824x/bedbug_603e.c @rm -f $(obj)arch/powerpc/cpu/mpc83xx/ddr-gen?.c
arch/arm/cpu/arm1136/config.mk +3 -0
@@ -31,3 +31,6 @@ PLATFORM_CPPFLAGS += -march=armv5 # ========================================================================= PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT) +ifdef CONFIG_SPL_BUILD +ALL-y += $(OBJTREE)/SPL +endif
Signature · 1 line
1.7.9.5
PATCH v2 5/6 ARM: Add SPL target to arm1136
Hi Stefano,
Quoted 24 lines · Stefano Babic
Signed-off-by Stefano Babic <[email protected]>---
Makefile | 1 + arch/arm/cpu/arm1136/config.mk | 3 +++ 2 files changed, 4 insertions(+)Makefile +1
-0@@ -819,6 +819,7 @@ clobber: tidy @rm -f $(obj)nand_spl/{u-boot.lds,u-boot-nand_spl.lds,u-boot-spl,u-boot-spl.map,System.map} @rm -f $(obj)spl/{u-boot-spl,u-boot-spl.bin,u-boot-spl.lds,u-boot-spl.map} @rm -f $(obj)MLO + @rm -f $(obj)SPL @rm -f $(obj)tools/xway-swap-bytes @rm -f $(obj)arch/powerpc/cpu/mpc824x/bedbug_603e.c @rm -f $(obj)arch/powerpc/cpu/mpc83xx/ddr-gen?.carch/arm/cpu/arm1136/config.mk +0
-0
arch/arm/cpu/arm1136/config.mk PLATFORM_CPPFLAGS += -march=armv5 · line 36
Quoted 6 lines
arch/arm/cpu/arm1136/config.mk +3
-0@@ -31,3 +31,6 @@ PLATFORM_CPPFLAGS += -march=armv5 # ========================================================================= PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT) +ifdef CONFIG_SPL_BUILD +ALL-y += $(OBJTREE)/SPL +endif
Nitpick: this patch also removes SPL build files in the clobber rule, but the commit message does not say so. Can you just update the comment?
Amicalement,
Signature · 1 line
Albert.
PATCH v2 5/6 ARM: Add SPL target to arm1136
Am 14/10/2012 11:17, schrieb Albert ARIBAUD:
Quoted 2 lines
Hi Stefano,
Hi Albert,
Quoted 2 lines
Nitpick: this patch also removes SPL build files in the clobber rule, but the commit message does not say so. Can you just update the comment?
Right, I fix it in V3, thanks.
Stefano
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================
PATCH v3 5/6 ARM: Add SPL target to arm1136
In reply to Stefano BabicThe patch adds SPL for the arm1136 architecture and inserts SPL (the produced binary) to clobber target in the main Makefile.
---
Changes in v3:
- Fix commit message
Makefile | 1 + arch/arm/cpu/arm1136/config.mk | 3 +++ 2 files changed, 4 insertions(+)
Makefile +1 -0
@@ -819,6 +819,7 @@ clobber: tidy @rm -f $(obj)nand_spl/{u-boot.lds,u-boot-nand_spl.lds,u-boot-spl,u-boot-spl.map,System.map} @rm -f $(obj)spl/{u-boot-spl,u-boot-spl.bin,u-boot-spl.lds,u-boot-spl.map} @rm -f $(obj)MLO + @rm -f $(obj)SPL @rm -f $(obj)tools/xway-swap-bytes @rm -f $(obj)arch/powerpc/cpu/mpc824x/bedbug_603e.c @rm -f $(obj)arch/powerpc/cpu/mpc83xx/ddr-gen?.c
arch/arm/cpu/arm1136/config.mk +3 -0
@@ -31,3 +31,6 @@ PLATFORM_CPPFLAGS += -march=armv5 # ========================================================================= PF_RELFLAGS_SLB_AT := $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) PLATFORM_RELFLAGS += $(PF_RELFLAGS_SLB_AT) +ifdef CONFIG_SPL_BUILD +ALL-y += $(OBJTREE)/SPL +endif
Signature · 1 line
1.7.9.5
PATCH v2 6/6 MX35: add support for woodburn board
In reply to Stefano BabicThe woodburn board is based on the MX35 SOC. Support for both external (NOR) and internal (SD Card) boot mode are added. It uses the generic SPL framework to implement the internal boot mode.
The following peripherals are supported:
- Ethernet (FEC)
- SD Card
- NAND (512 MB)
- NOR Flash
In the internal boot mode, a simple imximage header is generated to set the address in internal RAM where the SOC must copy the SPL code. The initial setup is then demanded to the SPL itself.
---
Changes in v2:
- fix MX35 boot mode (Eric Benard)
- uses SPL as binary instead of MLO (Thomas Petazzoni, Tom Rini)
- NAND: the harware manufacturer decided for a different chip. Patches / issues related to NAND are dropped.
- use board_init_f in SPL for setting SDRAM controller
MAINTAINERS | 1 + arch/arm/cpu/arm1136/mx35/Makefile | 1 + arch/arm/cpu/arm1136/mx35/mx35_sdram.c | 137 ++++++++++++ arch/arm/include/asm/arch-mx35/sys_proto.h | 2 + board/woodburn/Makefile | 43 ++++ board/woodburn/imximage.cfg | 4 + board/woodburn/lowlevel_init.S | 38 ++++ board/woodburn/woodburn.c | 261 +++++++++++++++++++++++ boards.cfg | 2 + include/configs/woodburn.h | 34 +++ include/configs/woodburn_common.h | 313 ++++++++++++++++++++++++++++ include/configs/woodburn_sd.h | 60 ++++++ 12 files changed, 896 insertions(+) create mode 100644 arch/arm/cpu/arm1136/mx35/mx35_sdram.c create mode 100644 board/woodburn/Makefile create mode 100644 board/woodburn/imximage.cfg create mode 100644 board/woodburn/lowlevel_init.S create mode 100644 board/woodburn/woodburn.c create mode 100644 include/configs/woodburn.h create mode 100644 include/configs/woodburn_common.h create mode 100644 include/configs/woodburn_sd.h
MAINTAINERS +1 -0
@@ -588,6 +588,7 @@ Stefano Babic <[email protected]> trizepsiv xscale/pxa twister omap3 vision2 i.MX51 + woodburn i.MX35 Jason Liu <[email protected]>
arch/arm/cpu/arm1136/mx35/Makefile +1 -0
@@ -30,6 +30,7 @@ LIB = $(obj)lib$(SOC).o COBJS += generic.o COBJS += timer.o COBJS += iomux.o +COBJS += mx35_sdram.o SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
arch/arm/cpu/arm1136/mx35/mx35_sdram.c new file +137 -0
137 lines not on this page · raw message
arch/arm/include/asm/arch-mx35/sys_proto.h +2 -0
@@ -25,6 +25,8 @@#define _SYS_PROTO_H_u32 get_cpu_rev (void ); +void mx3_setup_sdram_bank (u32 start_address,u32 ddr2_config, +u32 row,u32 col,u32 dsize,u32 refresh);#define is_soc_rev (rev) ((get_cpu_rev() & 0xFF) - rev)#endif
board/woodburn/Makefile new file +43 -0
43 lines not on this page · raw message
board/woodburn/imximage.cfg new file +4 -0
@@ -0,0 +1,4 @@ +BOOT_FROM sd + +# DDR2 init +DATA 4 0xB8001010 0x00000304
board/woodburn/lowlevel_init.S new file +38 -0
@@ -0,0 +1,38 @@ +/* + * Copyright (C) 2007, Guennadi Liakhovetski <[email protected]> + * + * (C) Copyright 2008-2010 Freescale Semiconductor, Inc. + * + * Copyright (C) 2011, Stefano Babic <[email protected]> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <config.h> +#include <asm/arch/lowlevel_macro.S> + +.globl lowlevel_init +lowlevel_init: + + core_init + + init_aips + + init_max + + init_m3if + + mov pc, lr
board/woodburn/woodburn.c new file +261 -0
261 lines not on this page · raw message
boards.cfg +2 -0
@@ -50,6 +50,8 @@ tt01 arm arm1136 - hale imx31_litekit arm arm1136 - logicpd mx31 flea3 arm arm1136 - CarMediaLab mx35 mx35pdk arm arm1136 - freescale mx35 +woodburn arm arm1136 - - mx35 +woodburn_sd arm arm1136 woodburn - mx35 woodburn_sd:IMX_CONFIG=board/woodburn/imximage.cfg omap2420h4 arm arm1136 - ti omap24xx tnetv107x_evm arm arm1176 tnetv107xevm ti tnetv107x rpi_b arm arm1176 rpi_b raspberrypi bcm2835
include/configs/woodburn.h new file +34 -0
@@ -0,0 +1,34 @@ +/* +* (C) Copyright 2011, Stefano Babic <[email protected]> +* +* (C) Copyright 2008-2010 Freescale Semiconductor, Inc. +* +* Configuration for the woodburn board. +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place, Suite 330, Boston, +* MA 02111-1307 USA +*/ + +#ifndef __CONFIG_H +#define __CONFIG_H + +#include <asm/arch/imx-regs.h> +#include "woodburn_common.h" + +/* Set TEXT at the beginning of the NOR flash */ +#define CONFIG_SYS_TEXT_BASE 0xA0000000 +#define CONFIG_BOARD_EARLY_INIT_F + +#endif /* __CONFIG_H */
include/configs/woodburn_common.h new file +313 -0
313 lines not on this page · raw message
include/configs/woodburn_sd.h new file +60 -0
60 lines not on this page · raw message
Signature · 1 line
1.7.9.5
PATCH v2 6/6 MX35: add support for woodburn board
Hi Stefano,
Quoted 12 lines · Stefano Babic
The woodburn board is based on the MX35 SOC. Support for both external (NOR) and internal (SD Card) boot mode are added. It uses the generic SPL framework to implement the internal boot mode.
The following peripherals are supported:
- Ethernet (FEC)
- SD Card
- NAND (512 MB)
- NOR Flash
Quoted 6 lines
In the internal boot mode, a simple imximage header is generated to set the address in internal RAM where the SOC must copy the SPL code. The initial setup is then demanded to the SPL itself.
Signed-off-by Stefano Babic <[email protected]>
It seems this board uses the old PMIC framework, so it does not merge properly with u-boot/master which has switched to power in-between. Can you look into this?
I must say I'm not entirely sure how to handle this, but here is my
proposal: AFAIU this patch was applied initially in your imx tree, so I suggest that you merge u-boot/master into your tree (with a comment to the effect that you need this to resolve PMIC vs POWER conflicts) or into an ad hoc branch, and resolve the conflicts there, then send a pull request to me for your resolved tree or branch.
Tom, what do you think about this?
Amicalement,
Signature · 1 line
Albert.
PATCH v2 6/6 MX35: add support for woodburn board
Quoted 2 lines · Albert ARIBAUD
Hi Stefano,
Hi Albert,
Quoted 26 lines
Quoted 12 lines · Stefano Babic
The woodburn board is based on the MX35 SOC. Support for both external (NOR) and internal (SD Card) boot mode are added. It uses the generic SPL framework to implement the internal boot mode.
The following peripherals are supported:
- Ethernet (FEC)
- SD Card
- NAND (512 MB)
- NOR FlashQuoted 6 lines
In the internal boot mode, a simple imximage header is generated to set the address in internal RAM where the SOC must copy the SPL code. The initial setup is then demanded to the SPL itself.
Signed-off-by Stefano Babic <[email protected]>It seems this board uses the old PMIC framework, so it does not merge properly with u-boot/master which has switched to power in-between. Can you look into this?
Quoted 6 lines
I must say I'm not entirely sure how to handle this, but here is my
proposal: AFAIU this patch was applied initially in your imx tree, so I suggest that you merge u-boot/master into your tree (with a comment to the effect that you need this to resolve PMIC vs POWER conflicts) or into an ad hoc branch, and resolve the conflicts there, then send a pull request to me for your resolved tree or branch.
There are conflicts with three boards : mx35pdk, woodburn and mx53loco.
It seems that a couple of patches were lost in the transition from pmic to power, too:
commit 787f4f30823a15b1e45c0a0b901cfa5bd415e251
Author: Fabio Estevam <[email protected]> Date: Tue Oct 23 06:36:18 2012 +0000
pmic: Add support for mc34704
Add the register layout for the MC34704 PMIC from Freescale.
commit 4cfc6c4fa7611e79e6434e97db56b6072ad4d05c
Author: Fabio Estevam <[email protected]> Date: Tue Oct 23 06:34:50 2012 +0000
pmic_fsl: Introduce FSL_PMIC_I2C_LENGTH
I solved the conflicts in the way you suggested and I pushed a temporary branch "master_merge" on u-boot-imx.
I am unsure, too, if this is the best way to solve these conflicts, but if Tom agrees on our way to proceed, I will post a new pull request.
Best regards,
Stefano
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================
PATCH v2 6/6 MX35: add support for woodburn board
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Quoted 56 lines · Stefano Babic
Quoted 2 lines · Albert ARIBAUD
Hi Stefano,
Hi Albert,
Quoted 22 lines
Quoted 8 lines · Stefano Babic
The woodburn board is based on the MX35 SOC. Support for both external (NOR) and internal (SD Card) boot mode are added. It uses the generic SPL framework to implement the internal boot mode.
The following peripherals are supported: - Ethernet (FEC) - SD Card - NAND (512 MB) - NOR Flash
Quoted 6 lines
In the internal boot mode, a simple imximage header is generated to set the address in internal RAM where the SOC must copy the SPL code. The initial setup is then demanded to the SPL itself.
Signed-off-by Stefano Babic <[email protected]>It seems this board uses the old PMIC framework, so it does not merge properly with u-boot/master which has switched to power in-between. Can you look into this?
Quoted 7 lines
I must say I'm not entirely sure how to handle this, but here is my proposal: AFAIU this patch was applied initially in your imx tree, so I suggest that you merge u-boot/master into your tree (with a comment to the effect that you need this to resolve PMIC vs POWER conflicts) or into an ad hoc branch, and resolve the conflicts there, then send a pull request to me for your resolved tree or branch.
There are conflicts with three boards : mx35pdk, woodburn and mx53loco.
It seems that a couple of patches were lost in the transition from pmic to power, too:
commit
787f4f30823a15b1e45c0a0b901cfa5bd415e251Author: Fabio
Estevam <[email protected]> Date: Tue Oct 23 06:36:18
2012 +0000pmic: Add support for mc34704
Add the register layout for the MC34704 PMIC from Freescale.
Signed-off-by Fabio Estevam <[email protected]>commit
4cfc6c4fa7611e79e6434e97db56b6072ad4d05cAuthor: Fabio
Estevam <[email protected]> Date: Tue Oct 23 06:34:50
2012 +0000
Quoted 8 lines
pmic_fsl: IntroduceFSL_PMIC_I2C_LENGTHI solved the conflicts in the way you suggested and I pushed a temporary branch "
master_merge" on u-boot-imx.I am unsure, too, if this is the best way to solve these conflicts, but if Tom agrees on our way to proceed, I will post a new pull request.
I'm OK with this method now, so long as at the end of the day, git diff looks good.
- --
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://www.enigmail.net/
iQIcBAEBAgAGBQJQw0eSAAoJENk4IS6UOR1W/7AP/R5Jmr+oQVJ6hSpw4tPD7iTO O/ofmOAKFJ4+4fgnzIY75f06aTjiGMX0sC6sttvQDwKGGJHUJmphf6Le39WwxwRR /pVQCshsCu4s4IWnQq4lNq4I1SvinLdduu5kR+QddieB8GxsHDBB1a1SBtKzS0/2 ERkbKfI6n4lXJT2mrR+pe7ckJMSemLYO+sk8sa9JaAhhM3Ny4NhaEa8iIdmULSXx lgG8dKAZz+SrTIej5NJwPcLIyq/03E8PxGB/R8vl6GBKp4OPWJL4Wz8UXADyK0Mi sUrqfFIsSTVdmNa1NeGP1Ymj+VeQZEnk2+eXaZE+u+4k4BMgAmFINZzw6bYLc8Ar u47GEJlXFrwjsOUITkjBS3W/BH0/0EYMn8eG/gyCKNpK0HY84o3tOvt15BW9IPa8 DPPmXjUm6tf96QgitvTwCk9UHpQiIw24tBJ9ZmnmxMrYxOM0ZLnJixWuxTJXBccm HueU+ECBUPpBZMPyo3W8xcNUI7+iV7/s9s1AB+CMQMcnwm6UhMeYnrV+HRL65WKU qZ6Ynoy7GDwKK1ZAsfqHnd2q2eyGnMYGbB2ryGcSrQxnyvSqTrL/8AU3cevmoW8t jNSEW8+MPHAF+LK7SgY+QbHVdflkfTDwdD6f3+lJQLlqNq0FzJkdo8VEL4gEfyY9 ucuEsCUNIuggiKJJwxhp
=3Y25
-----END PGP SIGNATURE-----