Skip to contentSkip to conversation

Added SPL for MX35 boards

PATCH Superseded Stefano Babic 4 participants 16 messages Oct 11, 2012 – Dec 8, 2012

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

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
#1 lore raw

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
index 2483c63..93f5e11 100644
@@ -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
#2 lore raw

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
index 3752af9..5d3b4c2 100644
@@ -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
index 79eb7ac..91ffdbe 100644
@@ -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
index d2b08f6..a130a1f 100644
@@ -52,6 +52,8 @@ SECTIONS
 
 	. = ALIGN(4);
 
+	__image_copy_end = .;
+
 	.rel.dyn : {
 		__rel_dyn_start = .;
 		*(.rel*)
Signature · 1 line
1.7.9.5
reviewer
#3 lore raw

PATCH v3 1/6 ARM: Fix start.S when used with SPL in arm1136

Hi Stefano,

Quoted 10 lines · Stefano Babic

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.

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

#4 lore raw

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.S for the arm1136 to make it conform to start.S in armv7 architecture, to make it usable if the SPL framework is used.

---

Quoted 7 lines
Quoted 3 lines

Changes:
- Previous patch breaks legacy nand_spl boards
due to local u-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
=====================================================================
#5 lore raw

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
index 7b09809..7b6475a 100644
@@ -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
#6 lore raw

PATCH v2 3/6 MX35: Add soc_boot_mode and soc_boot_device to MX35

In reply to Stefano Babic

The 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
index 41e9639..98aa4d1 100644
@@ -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
new file mode 100644
index 0000000..775b955
@@ -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
new file mode 100644
index 0000000..91d11ae
@@ -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
#7 lore raw

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
index d9b1c2f..fab953a 100644
@@ -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
#8 lore raw

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
index a40d4cc..072bf66 100644
@@ -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
index efee0d1..9092d91 100644
@@ -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
#9 lore raw

PATCH v2 5/6 ARM: Add SPL target to arm1136

Hi Stefano,

Quoted 24 lines · Stefano Babic

---

 Makefile                       |    1 +
 arch/arm/cpu/arm1136/config.mk |    3 +++
 2 files changed, 4 insertions(+)
Makefile +1 -0
index a40d4cc..072bf66 100644
@@ -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 +0 -0
index efee0d1..9092d91 100644

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.
#10 lore raw

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
=====================================================================
#11 lore raw

PATCH v3 5/6 ARM: Add SPL target to arm1136

In reply to Stefano Babic

The 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
index a40d4cc..072bf66 100644
@@ -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
index efee0d1..9092d91 100644
@@ -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
#12 lore raw

PATCH v2 6/6 MX35: add support for woodburn board

In reply to 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

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
index bf353aa..1d587c7 100644
@@ -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
index 469397c..f4ababb 100644
@@ -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
index 9c0d513..aa3549c 100644
@@ -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
new file mode 100644
index 0000000..b4cc8ec
@@ -0,0 +1,4 @@
+BOOT_FROM      sd
+
+# DDR2 init
+DATA 4 0xB8001010 0x00000304
board/woodburn/lowlevel_init.S new file +38 -0
new file mode 100644
index 0000000..57fb1b1
@@ -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
index e9e073e..99f159b 100644
@@ -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
new file mode 100644
index 0000000..95a71c4
@@ -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
#13 lore raw

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.

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.
#14 lore raw

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 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.

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
=====================================================================
#15 lore raw

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.

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 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

Quoted 8 lines

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.

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-----