All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/4] add support for the at91 based smartweb board
@ 2015-06-15 12:20 Heiko Schocher
  2015-06-15 12:20 ` [U-Boot] [PATCH 1/4] spl, common, serial: build SPL without serial support Heiko Schocher
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Heiko Schocher @ 2015-06-15 12:20 UTC (permalink / raw)
  To: u-boot

add support for the at91sam9260 based board smartweb from
siemens. SPL is used without serial support, as this
SoC has only 4k sram for running SPL. Here a U-Boot
bootlog:

RomBOOT
>

U-Boot 2015.07-rc2-00109-g4ae828c (Jun 15 2015 - 09:31:16 +0200)

CPU: AT91SAM9260
Crystal frequency:   18.432 MHz
CPU clock        :  198.656 MHz
Master clock     :   99.328 MHz
       Watchdog enabled
DRAM:  64 MiB
WARNING: Caches not enabled
NAND:  256 MiB
In:    serial
Out:   serial
Err:   serial
Net:   macb0
Hit any key to stop autoboot:  0
U-Boot>

As this board is based on sam9260 SoC with 4k sram only, SPL
must be small, so SPL is compiled without serial support.
Therefore the code needs here and there some small fixes to
support SPL compile without serial support.


Heiko Schocher (4):
  spl, common, serial: build SPL without serial support
  nand, atmel: remove udelay in spl_nand_erase_one()
  lib/display_options: fix compiler warnings
  arm, at91: support for sam9260 based smwartweb board

 arch/arm/include/asm/mach-types.h  |   1 +
 arch/arm/lib/interrupts.c          |   4 +-
 arch/arm/mach-at91/Kconfig         |   6 +
 arch/arm/mach-at91/Makefile        |   1 +
 arch/arm/mach-at91/arm926ejs/cpu.c |   2 +-
 arch/arm/mach-at91/spl_at91.c      |   3 +
 board/siemens/smartweb/Kconfig     |  12 ++
 board/siemens/smartweb/MAINTAINERS |   6 +
 board/siemens/smartweb/Makefile    |  20 +++
 board/siemens/smartweb/smartweb.c  | 220 ++++++++++++++++++++++++++++
 common/Makefile                    |   4 +
 common/cli_readline.c              |   2 +-
 common/cli_simple.c                |   2 +-
 common/image.c                     |   8 +-
 common/spl/spl.c                   |   9 ++
 configs/smartweb_defconfig         |   6 +
 drivers/mtd/nand/atmel_nand.c      |   2 -
 include/common.h                   |   7 +
 include/configs/apf27.h            |   1 +
 include/configs/mx31pdk.h          |   1 +
 include/configs/mxs.h              |   1 +
 include/configs/smartweb.h         | 290 +++++++++++++++++++++++++++++++++++++
 include/configs/tx25.h             |   1 +
 lib/display_options.c              |  11 +-
 24 files changed, 609 insertions(+), 11 deletions(-)
 create mode 100644 board/siemens/smartweb/Kconfig
 create mode 100644 board/siemens/smartweb/MAINTAINERS
 create mode 100644 board/siemens/smartweb/Makefile
 create mode 100644 board/siemens/smartweb/smartweb.c
 create mode 100644 configs/smartweb_defconfig
 create mode 100644 include/configs/smartweb.h

-- 
2.1.0

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 1/4] spl, common, serial: build SPL without serial support
  2015-06-15 12:20 [U-Boot] [PATCH 0/4] add support for the at91 based smartweb board Heiko Schocher
@ 2015-06-15 12:20 ` Heiko Schocher
  2015-06-15 15:32   ` Tom Rini
  2015-06-15 12:21 ` [U-Boot] [PATCH 2/4] nand, atmel: remove udelay in spl_nand_erase_one() Heiko Schocher
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 10+ messages in thread
From: Heiko Schocher @ 2015-06-15 12:20 UTC (permalink / raw)
  To: u-boot

This patch enables building SPL without
CONFIG_SPL_SERIAL_SUPPORT support.

Signed-off-by: Heiko Schocher <hs@denx.de>
---

 arch/arm/lib/interrupts.c          | 4 ++--
 arch/arm/mach-at91/arm926ejs/cpu.c | 2 +-
 arch/arm/mach-at91/spl_at91.c      | 3 +++
 common/Makefile                    | 4 ++++
 common/cli_readline.c              | 2 +-
 common/cli_simple.c                | 2 +-
 common/image.c                     | 8 ++++++--
 common/spl/spl.c                   | 9 +++++++++
 include/common.h                   | 7 +++++++
 include/configs/apf27.h            | 1 +
 include/configs/mx31pdk.h          | 1 +
 include/configs/mxs.h              | 1 +
 include/configs/tx25.h             | 1 +
 lib/display_options.c              | 4 ++--
 14 files changed, 40 insertions(+), 9 deletions(-)

diff --git a/arch/arm/lib/interrupts.c b/arch/arm/lib/interrupts.c
index 06f4679..ec3fb77 100644
--- a/arch/arm/lib/interrupts.c
+++ b/arch/arm/lib/interrupts.c
@@ -123,8 +123,8 @@ void bad_mode (void)
 
 void show_regs (struct pt_regs *regs)
 {
-	unsigned long flags;
-	const char *processor_modes[] = {
+	unsigned long __maybe_unused flags;
+	const char __maybe_unused *processor_modes[] = {
 	"USER_26",	"FIQ_26",	"IRQ_26",	"SVC_26",
 	"UK4_26",	"UK5_26",	"UK6_26",	"UK7_26",
 	"UK8_26",	"UK9_26",	"UK10_26",	"UK11_26",
diff --git a/arch/arm/mach-at91/arm926ejs/cpu.c b/arch/arm/mach-at91/arm926ejs/cpu.c
index da1d359..990c689 100644
--- a/arch/arm/mach-at91/arm926ejs/cpu.c
+++ b/arch/arm/mach-at91/arm926ejs/cpu.c
@@ -42,7 +42,7 @@ void arch_preboot_os(void)
 #if defined(CONFIG_DISPLAY_CPUINFO)
 int print_cpuinfo(void)
 {
-	char buf[32];
+	char __maybe_unused buf[32];
 
 	printf("CPU: %s\n", ATMEL_CPU_NAME);
 	printf("Crystal frequency: %8s MHz\n",
diff --git a/arch/arm/mach-at91/spl_at91.c b/arch/arm/mach-at91/spl_at91.c
index a79a9dc..b19f95b 100644
--- a/arch/arm/mach-at91/spl_at91.c
+++ b/arch/arm/mach-at91/spl_at91.c
@@ -123,9 +123,12 @@ void board_init_f(ulong dummy)
 	at91_periph_clk_enable(ATMEL_ID_PIOB);
 	at91_periph_clk_enable(ATMEL_ID_PIOC);
 #endif
+
+#if defined(CONFIG_SPL_SERIAL_SUPPORT)
 	/* init console */
 	at91_seriald_hw_init();
 	preloader_console_init();
+#endif
 
 	mem_init();
 
diff --git a/common/Makefile b/common/Makefile
index d6c1d48..516c299 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -250,7 +250,11 @@ obj-$(CONFIG_DDR_SPD) += ddr_spd.o
 obj-$(CONFIG_SPD_EEPROM) += ddr_spd.o
 obj-$(CONFIG_HWCONFIG) += hwconfig.o
 obj-$(CONFIG_BOUNCE_BUFFER) += bouncebuf.o
+ifdef CONFIG_SPL_BUILD
+obj-$(CONFIG_SPL_SERIAL_SUPPORT) += console.o
+else
 obj-y += console.o
+endif
 obj-$(CONFIG_CROS_EC) += cros_ec.o
 obj-y += dlmalloc.o
 ifdef CONFIG_SYS_MALLOC_F_LEN
diff --git a/common/cli_readline.c b/common/cli_readline.c
index 9a9fb35..c1476e4 100644
--- a/common/cli_readline.c
+++ b/common/cli_readline.c
@@ -597,7 +597,7 @@ int cli_readline_into_buffer(const char *const prompt, char *buffer,
 					puts(tab_seq + (col & 07));
 					col += 8 - (col & 07);
 				} else {
-					char buf[2];
+					char __maybe_unused buf[2];
 
 					/*
 					 * Echo input using puts() to force an
diff --git a/common/cli_simple.c b/common/cli_simple.c
index 6c65cc6..00a8d2f 100644
--- a/common/cli_simple.c
+++ b/common/cli_simple.c
@@ -68,7 +68,7 @@ void cli_simple_process_macros(const char *input, char *output)
 	/* 1 = waiting for '(' or '{' */
 	/* 2 = waiting for ')' or '}' */
 	/* 3 = waiting for '''  */
-	char *output_start = output;
+	char __maybe_unused *output_start = output;
 
 	debug_parser("[PROCESS_MACROS] INPUT len %zd: \"%s\"\n", strlen(input),
 		     input);
diff --git a/common/image.c b/common/image.c
index f0f0135..eaa98d3 100644
--- a/common/image.c
+++ b/common/image.c
@@ -54,6 +54,10 @@ static const image_header_t *image_get_ramdisk(ulong rd_addr, uint8_t arch,
 #include <u-boot/md5.h>
 #include <time.h>
 #include <image.h>
+
+#ifndef __maybe_unused
+# define __maybe_unused		/* unimplemented */
+#endif
 #endif /* !USE_HOSTCC*/
 
 #include <u-boot/crc.h>
@@ -274,7 +278,7 @@ void image_multi_getimg(const image_header_t *hdr, ulong idx,
 
 static void image_print_type(const image_header_t *hdr)
 {
-	const char *os, *arch, *type, *comp;
+	const char __maybe_unused *os, *arch, *type, *comp;
 
 	os = genimg_get_os_name(image_get_os(hdr));
 	arch = genimg_get_arch_name(image_get_arch(hdr));
@@ -299,7 +303,7 @@ static void image_print_type(const image_header_t *hdr)
 void image_print_contents(const void *ptr)
 {
 	const image_header_t *hdr = (const image_header_t *)ptr;
-	const char *p;
+	const char __maybe_unused *p;
 
 	p = IMAGE_INDENT_STRING;
 	printf("%sImage Name:   %.*s\n", p, IH_NMLEN, image_get_name(hdr));
diff --git a/common/spl/spl.c b/common/spl/spl.c
index aeb0645..7f5e37f 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -288,6 +288,14 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
 	jump_to_image_no_args(&spl_image);
 }
 
+#if !defined(CONFIG_SPL_SERIAL_SUPPORT)
+/* we have no console ... so define some dummy functions ... */
+void preloader_console_init(void)
+{
+	gd->bd = &bdata;
+	gd->have_console = 0;
+}
+#else
 /*
  * This requires UART clocks to be enabled.  In order for this to work the
  * caller must ensure that the gd pointer is valid.
@@ -307,6 +315,7 @@ void preloader_console_init(void)
 	spl_display_print();
 #endif
 }
+#endif
 
 /**
  * spl_relocate_stack_gd() - Relocate stack ready for board_init_r() execution
diff --git a/include/common.h b/include/common.h
index 8f4b2ec..bafe120 100644
--- a/include/common.h
+++ b/include/common.h
@@ -830,11 +830,18 @@ int	getc(void);
 int	tstc(void);
 
 /* stdout */
+#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_SPL_SERIAL_SUPPORT)
+#define	putc(...) do { } while (0)
+#define puts(...) do { } while (0)
+#define printf(...) do { } while (0)
+#define vprintf(...) do { } while (0)
+#else
 void	putc(const char c);
 void	puts(const char *s);
 int	printf(const char *fmt, ...)
 		__attribute__ ((format (__printf__, 1, 2)));
 int	vprintf(const char *fmt, va_list args);
+#endif
 
 /* stderr */
 #define eputc(c)		fputc(stderr, c)
diff --git a/include/configs/apf27.h b/include/configs/apf27.h
index 7554023..849eb1a 100644
--- a/include/configs/apf27.h
+++ b/include/configs/apf27.h
@@ -40,6 +40,7 @@
 #define CONFIG_SPL_LDSCRIPT	"arch/$(ARCH)/cpu/u-boot-spl.lds"
 #define CONFIG_SPL_MAX_SIZE	2048
 #define CONFIG_SPL_TEXT_BASE    0xA0000000
+#define CONFIG_SPL_SERIAL_SUPPORT
 
 /* NAND boot config */
 #define CONFIG_SPL_NAND_SUPPORT
diff --git a/include/configs/mx31pdk.h b/include/configs/mx31pdk.h
index 1282a6e..e01dfe6 100644
--- a/include/configs/mx31pdk.h
+++ b/include/configs/mx31pdk.h
@@ -35,6 +35,7 @@
 #define CONFIG_SPL_MAX_SIZE	2048
 #define CONFIG_SPL_NAND_SUPPORT
 #define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
 
 #define CONFIG_SPL_TEXT_BASE	0x87dc0000
 #define CONFIG_SYS_TEXT_BASE	0x87e00000
diff --git a/include/configs/mxs.h b/include/configs/mxs.h
index 38b1e93..9d823de 100644
--- a/include/configs/mxs.h
+++ b/include/configs/mxs.h
@@ -55,6 +55,7 @@
 #define CONFIG_SPL_LDSCRIPT	"arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds"
 #define CONFIG_SPL_LIBCOMMON_SUPPORT
 #define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
 #define CONFIG_SPL_GPIO_SUPPORT
 
 /* Memory sizes */
diff --git a/include/configs/tx25.h b/include/configs/tx25.h
index 622bd53..95fcdac 100644
--- a/include/configs/tx25.h
+++ b/include/configs/tx25.h
@@ -26,6 +26,7 @@
 #define CONFIG_SPL_MAX_SIZE		2048
 #define CONFIG_SPL_NAND_SUPPORT
 #define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
 
 #define CONFIG_SPL_TEXT_BASE		0x810c0000
 #define CONFIG_SYS_TEXT_BASE		0x81200000
diff --git a/lib/display_options.c b/lib/display_options.c
index 57fb974..6d9c6aa 100644
--- a/lib/display_options.c
+++ b/lib/display_options.c
@@ -121,9 +121,9 @@ int print_buffer(ulong addr, const void *data, uint width, uint count,
 	} lb;
 	int i;
 #ifdef CONFIG_SYS_SUPPORT_64BIT_DATA
-	uint64_t x;
+	uint64_t __maybe_unsued x;
 #else
-	uint32_t x;
+	uint32_t __maybe_unused x;
 #endif
 
 	if (linelen*width > MAX_LINE_LENGTH_BYTES)
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 2/4] nand, atmel: remove udelay in spl_nand_erase_one()
  2015-06-15 12:20 [U-Boot] [PATCH 0/4] add support for the at91 based smartweb board Heiko Schocher
  2015-06-15 12:20 ` [U-Boot] [PATCH 1/4] spl, common, serial: build SPL without serial support Heiko Schocher
@ 2015-06-15 12:21 ` Heiko Schocher
  2015-06-15 23:41   ` Scott Wood
  2015-06-15 12:21 ` [U-Boot] [PATCH 3/4] lib/display_options: fix compiler warnings Heiko Schocher
  2015-06-15 12:21 ` [U-Boot] [PATCH 4/4] arm, at91: support for sam9260 based smwartweb board Heiko Schocher
  3 siblings, 1 reply; 10+ messages in thread
From: Heiko Schocher @ 2015-06-15 12:21 UTC (permalink / raw)
  To: u-boot

remove unneeded udelay() in this function, as we use
the dev_ready pin.

Signed-off-by: Heiko Schocher <hs@denx.de>
---

 drivers/mtd/nand/atmel_nand.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
index a2016e7..0d4f327 100644
--- a/drivers/mtd/nand/atmel_nand.c
+++ b/drivers/mtd/nand/atmel_nand.c
@@ -1378,9 +1378,7 @@ int spl_nand_erase_one(int block, int page)
 	hwctrl(&mtd, (page_addr >> 16) & 0x0f,
 	       NAND_CTRL_ALE | NAND_CTRL_CHANGE);
 #endif
-
 	hwctrl(&mtd, NAND_CMD_ERASE2, NAND_CTRL_CLE | NAND_CTRL_CHANGE);
-	udelay(2000);
 
 	while (!this->dev_ready(&mtd))
 		;
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 3/4] lib/display_options: fix compiler warnings
  2015-06-15 12:20 [U-Boot] [PATCH 0/4] add support for the at91 based smartweb board Heiko Schocher
  2015-06-15 12:20 ` [U-Boot] [PATCH 1/4] spl, common, serial: build SPL without serial support Heiko Schocher
  2015-06-15 12:21 ` [U-Boot] [PATCH 2/4] nand, atmel: remove udelay in spl_nand_erase_one() Heiko Schocher
@ 2015-06-15 12:21 ` Heiko Schocher
  2015-06-15 14:43   ` Tom Rini
  2015-06-15 12:21 ` [U-Boot] [PATCH 4/4] arm, at91: support for sam9260 based smwartweb board Heiko Schocher
  3 siblings, 1 reply; 10+ messages in thread
From: Heiko Schocher @ 2015-06-15 12:21 UTC (permalink / raw)
  To: u-boot

fix compiler warnings if compiled for SPL without
serial port support (CONFIG_SPL_SERIAL_SUPPORT is
not set).

Signed-off-by: Heiko Schocher <hs@denx.de>
---

 lib/display_options.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/lib/display_options.c b/lib/display_options.c
index 6d9c6aa..17814c7 100644
--- a/lib/display_options.c
+++ b/lib/display_options.c
@@ -25,7 +25,10 @@ int display_options (void)
 
 void print_freq(uint64_t freq, const char *s)
 {
-	unsigned long m = 0, n;
+	unsigned long m = 0;
+#if defined(CONFIG_SPL_SERIAL_SUPPORT)
+	unsigned long n;
+#endif
 	uint32_t f;
 	static const char names[] = {'G', 'M', 'K'};
 	unsigned long d = 1e9;
@@ -45,7 +48,9 @@ void print_freq(uint64_t freq, const char *s)
 	}
 
 	f = do_div(freq, d);
+#if defined(CONFIG_SPL_SERIAL_SUPPORT)
 	n = freq;
+#endif
 
 	/* If there's a remainder, show the first few digits */
 	if (f) {
@@ -58,7 +63,9 @@ void print_freq(uint64_t freq, const char *s)
 			m = (m / 10) + (m % 100 >= 50);
 	}
 
+#if defined(CONFIG_SPL_SERIAL_SUPPORT)
 	printf("%lu", n);
+#endif
 	if (m)
 		printf(".%ld", m);
 	printf(" %cHz%s", c, s);
@@ -121,7 +128,7 @@ int print_buffer(ulong addr, const void *data, uint width, uint count,
 	} lb;
 	int i;
 #ifdef CONFIG_SYS_SUPPORT_64BIT_DATA
-	uint64_t __maybe_unsued x;
+	uint64_t x;
 #else
 	uint32_t __maybe_unused x;
 #endif
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 4/4] arm, at91: support for sam9260 based smwartweb board
  2015-06-15 12:20 [U-Boot] [PATCH 0/4] add support for the at91 based smartweb board Heiko Schocher
                   ` (2 preceding siblings ...)
  2015-06-15 12:21 ` [U-Boot] [PATCH 3/4] lib/display_options: fix compiler warnings Heiko Schocher
@ 2015-06-15 12:21 ` Heiko Schocher
  3 siblings, 0 replies; 10+ messages in thread
From: Heiko Schocher @ 2015-06-15 12:21 UTC (permalink / raw)
  To: u-boot

add support for the at91sam9260 based board smartweb from
siemens. SPL is used without serial support, as this
SoC has only 4k sram for running SPL. Here a U-Boot
bootlog:

RomBOOT
>

U-Boot 2015.07-rc2-00109-g4ae828c (Jun 15 2015 - 09:31:16 +0200)

CPU: AT91SAM9260
Crystal frequency:   18.432 MHz
CPU clock        :  198.656 MHz
Master clock     :   99.328 MHz
       Watchdog enabled
DRAM:  64 MiB
WARNING: Caches not enabled
NAND:  256 MiB
In:    serial
Out:   serial
Err:   serial
Net:   macb0
Hit any key to stop autoboot:  0
U-Boot>

Signed-off-by: Heiko Schocher <hs@denx.de>

---

 arch/arm/include/asm/mach-types.h  |   1 +
 arch/arm/mach-at91/Kconfig         |   6 +
 arch/arm/mach-at91/Makefile        |   1 +
 board/siemens/smartweb/Kconfig     |  12 ++
 board/siemens/smartweb/MAINTAINERS |   6 +
 board/siemens/smartweb/Makefile    |  20 +++
 board/siemens/smartweb/smartweb.c  | 220 ++++++++++++++++++++++++++++
 configs/smartweb_defconfig         |   6 +
 include/configs/smartweb.h         | 290 +++++++++++++++++++++++++++++++++++++
 9 files changed, 562 insertions(+)
 create mode 100644 board/siemens/smartweb/Kconfig
 create mode 100644 board/siemens/smartweb/MAINTAINERS
 create mode 100644 board/siemens/smartweb/Makefile
 create mode 100644 board/siemens/smartweb/smartweb.c
 create mode 100644 configs/smartweb_defconfig
 create mode 100644 include/configs/smartweb.h

diff --git a/arch/arm/include/asm/mach-types.h b/arch/arm/include/asm/mach-types.h
index 5afe791..847da59 100644
--- a/arch/arm/include/asm/mach-types.h
+++ b/arch/arm/include/asm/mach-types.h
@@ -276,6 +276,7 @@ extern unsigned int __machine_arch_type;
 #define MACH_TYPE_TRIZEPS4WL           1649
 #define MACH_TYPE_TS78XX               1652
 #define MACH_TYPE_SFFSDR               1657
+#define MACH_TYPE_SMARTWEB             1668
 #define MACH_TYPE_PCM037               1673
 #define MACH_TYPE_DB88F6281_BP         1680
 #define MACH_TYPE_RD88F6192_NAS        1681
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index bbf4228..d8d46dc 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -124,6 +124,11 @@ config TARGET_TAURUS
 	select CPU_ARM926EJS
 	select SUPPORT_SPL
 
+config TARGET_SMARTWEB
+	bool "Support smartweb"
+	select CPU_ARM926EJS
+	select SUPPORT_SPL
+
 endchoice
 
 config SYS_SOC
@@ -155,6 +160,7 @@ source "board/ronetix/pm9263/Kconfig"
 source "board/ronetix/pm9g45/Kconfig"
 source "board/siemens/corvus/Kconfig"
 source "board/siemens/taurus/Kconfig"
+source "board/siemens/smartweb/Kconfig"
 source "board/taskit/stamp9g20/Kconfig"
 
 endif
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index 0d3ee48..313eb47 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -1,5 +1,6 @@
 obj-$(CONFIG_AT91_WANTS_COMMON_PHY) += phy.o
 ifneq ($(CONFIG_SPL_BUILD),)
+obj-$(CONFIG_AT91SAM9260) += sdram.o spl_at91.o
 obj-$(CONFIG_AT91SAM9G20) += sdram.o spl_at91.o
 obj-$(CONFIG_AT91SAM9M10G45) += mpddrc.o spl_at91.o
 obj-$(CONFIG_AT91SAM9N12) += mpddrc.o spl_at91.o
diff --git a/board/siemens/smartweb/Kconfig b/board/siemens/smartweb/Kconfig
new file mode 100644
index 0000000..0871bcc
--- /dev/null
+++ b/board/siemens/smartweb/Kconfig
@@ -0,0 +1,12 @@
+if TARGET_SMARTWEB
+
+config SYS_BOARD
+	default "smartweb"
+
+config SYS_VENDOR
+	default "siemens"
+
+config SYS_CONFIG_NAME
+	default "smartweb"
+
+endif
diff --git a/board/siemens/smartweb/MAINTAINERS b/board/siemens/smartweb/MAINTAINERS
new file mode 100644
index 0000000..51298ff
--- /dev/null
+++ b/board/siemens/smartweb/MAINTAINERS
@@ -0,0 +1,6 @@
+SMARTWEB_HW BOARD
+M:	Heiko Schocher <hs@denx.de>
+S:	Maintained
+F:	board/siemens/smartweb
+F:	include/configs/smartweb.h
+F:	configs/smartweb_defconfig
diff --git a/board/siemens/smartweb/Makefile b/board/siemens/smartweb/Makefile
new file mode 100644
index 0000000..55e7798
--- /dev/null
+++ b/board/siemens/smartweb/Makefile
@@ -0,0 +1,20 @@
+#
+# (C) Copyright 2003-2008
+# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+#
+# (C) Copyright 2008
+# Stelian Pop <stelian@popies.net>
+# Lead Tech Design <www.leadtechdesign.com>
+#
+# (C) Copyright 2012
+# Markus Hubig <mhubig@imko.de>
+# IMKO GmbH <www.imko.de>
+#
+# (C) Copyright 2014
+# Heiko Schocher <hs@denx.de>
+# DENX Software Engineering GmbH
+#
+# SPDX-License-Identifier:	GPL-2.0+
+#
+
+obj-y	+= smartweb.o
diff --git a/board/siemens/smartweb/smartweb.c b/board/siemens/smartweb/smartweb.c
new file mode 100644
index 0000000..cf8a7f5
--- /dev/null
+++ b/board/siemens/smartweb/smartweb.c
@@ -0,0 +1,220 @@
+/*
+ * (C) Copyright 2007-2008
+ * Stelian Pop <stelian@popies.net>
+ * Lead Tech Design <www.leadtechdesign.com>
+ *
+ * Achim Ehrlich <aehrlich@taskit.de>
+ * taskit GmbH <www.taskit.de>
+ *
+ * (C) Copyright 2012-
+ * Markus Hubig <mhubig@imko.de>
+ * IMKO GmbH <www.imko.de>
+ * (C) Copyright 2014
+ * Heiko Schocher <hs@denx.de>
+ * DENX Software Engineering GmbH
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/at91sam9_sdramc.h>
+#include <asm/arch/at91sam9260_matrix.h>
+#include <asm/arch/at91sam9_smc.h>
+#include <asm/arch/at91_common.h>
+#include <asm/arch/at91_pmc.h>
+#include <asm/arch/at91_spi.h>
+#include <spi.h>
+#include <asm/arch/gpio.h>
+#include <watchdog.h>
+#ifdef CONFIG_MACB
+# include <net.h>
+# include <netdev.h>
+#endif
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static void smartweb_nand_hw_init(void)
+{
+	struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
+	struct at91_matrix *matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX;
+	unsigned long csa;
+
+	/* Assign CS3 to NAND/SmartMedia Interface */
+	csa = readl(&matrix->ebicsa);
+	csa |= AT91_MATRIX_CS3A_SMC_SMARTMEDIA;
+	writel(csa, &matrix->ebicsa);
+
+	/* Configure SMC CS3 for NAND/SmartMedia */
+	writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(0) |
+		AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(0),
+		&smc->cs[3].setup);
+	writel(AT91_SMC_PULSE_NWE(3) | AT91_SMC_PULSE_NCS_WR(3) |
+		AT91_SMC_PULSE_NRD(3) | AT91_SMC_PULSE_NCS_RD(3),
+		&smc->cs[3].pulse);
+	writel(AT91_SMC_CYCLE_NWE(5) | AT91_SMC_CYCLE_NRD(5),
+	       &smc->cs[3].cycle);
+	writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
+		AT91_SMC_MODE_TDF_CYCLE(2),
+		&smc->cs[3].mode);
+
+	/* Configure RDY/BSY */
+	at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
+
+	/* Enable NandFlash */
+	at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
+}
+
+#ifdef CONFIG_MACB
+static void smartweb_macb_hw_init(void)
+{
+	struct at91_port *pioa = (struct at91_port *)ATMEL_BASE_PIOA;
+
+	/* Enable the PHY Chip via PA26 on the Stamp 2 Adaptor */
+	at91_set_gpio_output(AT91_PIN_PA26, 0);
+
+	/*
+	 * Disable pull-up on:
+	 *	RXDV (PA17) => PHY normal mode (not Test mode)
+	 *	ERX0 (PA14) => PHY ADDR0
+	 *	ERX1 (PA15) => PHY ADDR1
+	 *	ERX2 (PA25) => PHY ADDR2
+	 *	ERX3 (PA26) => PHY ADDR3
+	 *	ECRS (PA28) => PHY ADDR4  => PHYADDR = 0x0
+	 *
+	 * PHY has internal pull-down
+	 */
+	writel(pin_to_mask(AT91_PIN_PA14) |
+		pin_to_mask(AT91_PIN_PA15) |
+		pin_to_mask(AT91_PIN_PA17) |
+		pin_to_mask(AT91_PIN_PA25) |
+		pin_to_mask(AT91_PIN_PA26) |
+		pin_to_mask(AT91_PIN_PA28),
+		&pioa->pudr);
+
+	at91_phy_reset();
+
+	/* Re-enable pull-up */
+	writel(pin_to_mask(AT91_PIN_PA14) |
+		pin_to_mask(AT91_PIN_PA15) |
+		pin_to_mask(AT91_PIN_PA17) |
+		pin_to_mask(AT91_PIN_PA25) |
+		pin_to_mask(AT91_PIN_PA26) |
+		pin_to_mask(AT91_PIN_PA28),
+		&pioa->puer);
+
+	/* Initialize EMAC=MACB hardware */
+	at91_macb_hw_init();
+}
+#endif /* CONFIG_MACB */
+
+int board_early_init_f(void)
+{
+	/* enable this here, as we have SPL without serial support */
+	at91_seriald_hw_init();
+	return 0;
+}
+
+int board_init(void)
+{
+	/* Adress of boot parameters */
+	gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
+
+	smartweb_nand_hw_init();
+#ifdef CONFIG_MACB
+	smartweb_macb_hw_init();
+#endif
+	/* power LED red */
+	at91_set_gpio_output(AT91_PIN_PC6, 0);
+	at91_set_gpio_output(AT91_PIN_PC7, 1);
+	/* alarm LED off */
+	at91_set_gpio_output(AT91_PIN_PC8, 0);
+	at91_set_gpio_output(AT91_PIN_PC9, 0);
+	/* prog LED red */
+	at91_set_gpio_output(AT91_PIN_PC10, 0);
+	at91_set_gpio_output(AT91_PIN_PC11, 1);
+
+	return 0;
+}
+
+int dram_init(void)
+{
+	gd->ram_size = get_ram_size(
+		(void *)CONFIG_SYS_SDRAM_BASE,
+		CONFIG_SYS_SDRAM_SIZE);
+	return 0;
+}
+
+#ifdef CONFIG_MACB
+int board_eth_init(bd_t *bis)
+{
+	return macb_eth_initialize(0, (void *)ATMEL_BASE_EMAC0, 0x00);
+}
+#endif /* CONFIG_MACB */
+
+#if defined(CONFIG_SPL_BUILD)
+#include <spl.h>
+#include <nand.h>
+#include <spi_flash.h>
+
+void matrix_init(void)
+{
+	struct at91_matrix *mat = (struct at91_matrix *)ATMEL_BASE_MATRIX;
+
+	writel((readl(&mat->scfg[3]) & (~AT91_MATRIX_SLOT_CYCLE))
+			| AT91_MATRIX_SLOT_CYCLE_(0x40),
+			&mat->scfg[3]);
+}
+
+void spl_board_init(void)
+{
+	at91_set_gpio_output(AT91_PIN_PC6, 1);
+	at91_set_gpio_output(AT91_PIN_PC7, 1);
+	/* alarm LED orange */
+	at91_set_gpio_output(AT91_PIN_PC8, 1);
+	at91_set_gpio_output(AT91_PIN_PC9, 1);
+	/* prog LED red */
+	at91_set_gpio_output(AT91_PIN_PC10, 0);
+	at91_set_gpio_output(AT91_PIN_PC11, 1);
+
+	smartweb_nand_hw_init();
+	at91_set_gpio_input(AT91_PIN_PA28, 1);
+	at91_set_gpio_input(AT91_PIN_PA29, 1);
+
+	/* check if both  button are pressed */
+	if (at91_get_gpio_value(AT91_PIN_PA28) == 0 &&
+	    at91_get_gpio_value(AT91_PIN_PA29) == 0) {
+		debug("Recovery button pressed\n");
+		nand_init();
+		spl_nand_erase_one(0, 0);
+	}
+}
+
+#define SDRAM_BASE_CONF	(AT91_SDRAMC_NC_9 | AT91_SDRAMC_NR_13 \
+			 | AT91_SDRAMC_CAS_2 \
+			 | AT91_SDRAMC_NB_4 | AT91_SDRAMC_DBW_32 \
+			 | AT91_SDRAMC_TWR_VAL(2) | AT91_SDRAMC_TRC_VAL(7) \
+			 | AT91_SDRAMC_TRP_VAL(2) | AT91_SDRAMC_TRCD_VAL(2) \
+			 | AT91_SDRAMC_TRAS_VAL(5) | AT91_SDRAMC_TXSR_VAL(8))
+
+void mem_init(void)
+{
+	struct at91_matrix *ma = (struct at91_matrix *)ATMEL_BASE_MATRIX;
+	struct at91_port *port = (struct at91_port *)ATMEL_BASE_PIOC;
+	struct sdramc_reg setting;
+
+	setting.cr = SDRAM_BASE_CONF;
+	setting.mdr = AT91_SDRAMC_MD_SDRAM;
+	setting.tr = (CONFIG_SYS_MASTER_CLOCK * 7) / 1000000;
+
+	/*
+	 * I write here directly in this register, because this
+	 * approach is smaller than calling at91_set_a_periph() in a
+	 * for loop. This saved me 96 bytes.
+	 */
+	writel(0xffff0000, &port->pdr);
+
+	writel(readl(&ma->ebicsa) | AT91_MATRIX_CS1A_SDRAMC, &ma->ebicsa);
+	sdramc_initialize(ATMEL_BASE_CS1, &setting);
+}
+#endif
diff --git a/configs/smartweb_defconfig b/configs/smartweb_defconfig
new file mode 100644
index 0000000..d4b2aca
--- /dev/null
+++ b/configs/smartweb_defconfig
@@ -0,0 +1,6 @@
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9260"
+CONFIG_ARM=y
+CONFIG_ARCH_AT91=y
+CONFIG_TARGET_SMARTWEB=y
+CONFIG_CMD_NET=y
diff --git a/include/configs/smartweb.h b/include/configs/smartweb.h
new file mode 100644
index 0000000..9f22139
--- /dev/null
+++ b/include/configs/smartweb.h
@@ -0,0 +1,290 @@
+/*
+ * (C) Copyright 2007-2008
+ * Stelian Pop <stelian@popies.net>
+ * Lead Tech Design <www.leadtechdesign.com>
+ *
+ * (C) Copyright 2010
+ * Achim Ehrlich <aehrlich@taskit.de>
+ * taskit GmbH <www.taskit.de>
+ *
+ * (C) Copyright 2012
+ * Markus Hubig <mhubig@imko.de>
+ * IMKO GmbH <www.imko.de>
+ *
+ * (C) Copyright 2014
+ * Heiko Schocher <hs@denx.de>
+ * DENX Software Engineering GmbH
+ *
+ * Configuation settings for the smartweb.
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/*
+ * SoC must be defined first, before hardware.h is included.
+ * In this case SoC is defined in boards.cfg.
+ */
+#include <asm/hardware.h>
+
+/*
+ * Warning: changing CONFIG_SYS_TEXT_BASE requires adapting the initial boot
+ * program. Since the linker has to swallow that define, we must use a pure
+ * hex number here!
+ */
+#define CONFIG_SYS_TEXT_BASE		0x23000000
+
+/* ARM asynchronous clock */
+#define CONFIG_SYS_AT91_SLOW_CLOCK	32768		/* slow clock xtal */
+#define CONFIG_SYS_AT91_MAIN_CLOCK	18432000	/* 18.432MHz crystal */
+
+/* misc settings */
+#define CONFIG_CMDLINE_TAG		/* pass commandline to Kernel */
+#define CONFIG_SETUP_MEMORY_TAGS	/* pass memory defs to kernel */
+#define CONFIG_INITRD_TAG		/* pass initrd param to kernel */
+#define CONFIG_SKIP_LOWLEVEL_INIT	/* U-Boot is loaded by a bootloader */
+#define CONFIG_BOARD_EARLY_INIT_F	/* call board_early_init_f() */
+#define CONFIG_DISPLAY_CPUINFO		/* display CPU Info at startup */
+
+/* setting board specific options */
+# define CONFIG_MACH_TYPE		MACH_TYPE_SMARTWEB
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_AUTO_COMPLETE
+
+/* The LED PINs */
+#define CONFIG_RED_LED			AT91_PIN_PA9
+#define CONFIG_GREEN_LED		AT91_PIN_PA6
+
+/*
+ * SDRAM: 1 bank, 64 MB, base address 0x20000000
+ * Already initialized before u-boot gets started.
+ */
+#define CONFIG_NR_DRAM_BANKS		1
+#define CONFIG_SYS_SDRAM_BASE		ATMEL_BASE_CS1
+#define CONFIG_SYS_SDRAM_SIZE		(64 << 20)
+
+/*
+ * Perform a SDRAM Memtest from the start of SDRAM
+ * till the beginning of the U-Boot position in RAM.
+ */
+#define CONFIG_SYS_MEMTEST_START	CONFIG_SYS_SDRAM_BASE
+#define CONFIG_SYS_MEMTEST_END		(CONFIG_SYS_TEXT_BASE - 0x100000)
+
+/* Size of malloc() pool */
+#define CONFIG_SYS_MALLOC_LEN \
+	ROUND(3 * CONFIG_ENV_SIZE + (128 << 10), 0x1000)
+
+/* NAND flash settings */
+#define CONFIG_NAND_ATMEL
+#define CONFIG_SYS_NO_FLASH
+#define CONFIG_SYS_MAX_NAND_DEVICE	1
+#define CONFIG_SYS_NAND_BASE		ATMEL_BASE_CS3
+#define CONFIG_SYS_NAND_DBW_8
+#define CONFIG_SYS_NAND_MASK_ALE	(1 << 21)
+#define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
+#define CONFIG_SYS_NAND_ENABLE_PIN	AT91_PIN_PC14
+#define CONFIG_SYS_NAND_READY_PIN	AT91_PIN_PC13
+
+#define CONFIG_CMD_MTDPARTS
+#define CONFIG_MTD_DEVICE
+#define MTDIDS_NAME_STR		"atmel_nand"
+#define MTDIDS_DEFAULT		"nand0=" MTDIDS_NAME_STR
+#define MTDPARTS_DEFAULT	"mtdparts=" MTDIDS_NAME_STR ":" \
+					"128k(Bootstrap),"		\
+					"896k(U-Boot),"	\
+					"512k(ENV0),"	\
+					"512k(ENV1),"	\
+					"4M(Linux),"	\
+					"-(Root-FS)"
+
+/* general purpose I/O */
+#define CONFIG_ATMEL_LEGACY		/* required until (g)pio is fixed */
+#define CONFIG_AT91_GPIO		/* enable the GPIO features */
+#define CONFIG_AT91_GPIO_PULLUP	1	/* keep pullups on peripheral pins */
+
+/* serial console */
+#define CONFIG_ATMEL_USART
+#define CONFIG_USART_BASE		ATMEL_BASE_DBGU
+#define CONFIG_USART_ID			ATMEL_ID_SYS
+#define CONFIG_BAUDRATE			115200
+
+/*
+ * Ethernet configuration
+ *
+ */
+#define CONFIG_MACB
+#define CONFIG_RMII			/* use reduced MII inteface */
+#define CONFIG_NET_RETRY_COUNT	20      /* # of DHCP/BOOTP retries */
+#define CONFIG_AT91_WANTS_COMMON_PHY
+
+/* BOOTP and DHCP options */
+#define CONFIG_BOOTP_BOOTFILESIZE
+#define CONFIG_BOOTP_BOOTPATH
+#define CONFIG_BOOTP_GATEWAY
+#define CONFIG_BOOTP_HOSTNAME
+#define CONFIG_NFSBOOTCOMMAND						\
+	"setenv autoload yes; setenv autoboot yes; "			\
+	"setenv bootargs ${basicargs} ${mtdparts} "			\
+	"root=/dev/nfs ip=dhcp nfsroot=${serverip}:/srv/nfs/rootfs; "	\
+	"dhcp"
+
+/* Enable the watchdog */
+#define CONFIG_AT91SAM9_WATCHDOG
+#if !defined(CONFIG_SPL_BUILD)
+#define CONFIG_HW_WATCHDOG
+#endif
+#define CONFIG_AT91_HW_WDT_TIMEOUT	15
+
+#if !defined(CONFIG_SPL_BUILD)
+/* USB configuration */
+#define CONFIG_USB_ATMEL
+#define CONFIG_USB_ATMEL_CLK_SEL_PLLB
+#define CONFIG_USB_OHCI_NEW
+#define CONFIG_USB_STORAGE
+#define CONFIG_DOS_PARTITION
+#define CONFIG_SYS_USB_OHCI_CPU_INIT
+#define CONFIG_SYS_USB_OHCI_REGS_BASE	ATMEL_UHP_BASE
+#define CONFIG_SYS_USB_OHCI_SLOT_NAME	"at91sam9260"
+#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS	2
+#endif
+
+/* General Boot Parameter */
+#define CONFIG_BOOTDELAY		3
+#define CONFIG_BOOTCOMMAND		"run flashboot"
+#define CONFIG_SYS_PROMPT		"U-Boot> "
+#define CONFIG_SYS_CBSIZE		512
+#define CONFIG_SYS_MAXARGS		16
+#define CONFIG_SYS_PBSIZE \
+	(CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_LONGHELP
+#define CONFIG_CMDLINE_EDITING
+
+/*
+ * RAM Memory address where to put the
+ * Linux Kernel befor starting.
+ */
+#define CONFIG_SYS_LOAD_ADDR		0x22000000
+
+/*
+ * The NAND Flash partitions:
+ */
+#define CONFIG_ENV_IS_IN_NAND
+#define CONFIG_ENV_OFFSET		(0x100000)
+#define CONFIG_ENV_OFFSET_REDUND	(0x180000)
+#define CONFIG_ENV_RANGE		(0x80000)
+#define CONFIG_ENV_SIZE			(0x20000)
+
+/*
+ * Predefined environment variables.
+ * Usefull to define some easy to use boot commands.
+ */
+#define	CONFIG_EXTRA_ENV_SETTINGS					\
+									\
+	"basicargs=console=ttyS0,115200\0"				\
+									\
+	"mtdparts="MTDPARTS_DEFAULT"\0"
+
+/* Command line & features configuration */
+#include <config_cmd_default.h>
+#undef CONFIG_CMD_FPGA
+#undef CONFIG_CMD_IMI
+#undef CONFIG_CMD_IMLS
+#undef CONFIG_CMD_LOADS
+
+#define CONFIG_CMD_NAND
+#define CONFIG_CMD_USB
+#define CONFIG_CMD_FAT
+
+#ifdef CONFIG_MACB
+# define CONFIG_CMD_PING
+# define CONFIG_CMD_DHCP
+#else
+# undef CONFIG_CMD_BOOTD
+# undef CONFIG_CMD_NET
+# undef CONFIG_CMD_NFS
+#endif /* CONFIG_MACB */
+
+#if !defined(CONFIG_SPL_BUILD)
+/* Enable Device-Tree (FDT) support */
+#define CONFIG_OF_LIBFDT
+#define CONFIG_CMD_FDT
+#define CONFIG_FIT
+#endif
+
+#ifdef CONFIG_SPL_BUILD
+#define CONFIG_SYS_INIT_SP_ADDR		0x301000
+#define CONFIG_SPL_STACK_R
+#define CONFIG_SPL_STACK_R_ADDR		CONFIG_SYS_TEXT_BASE
+#else
+/*
+ * Initial stack pointer: 4k - GENERATED_GBL_DATA_SIZE in internal SRAM,
+ * leaving the correct space for initial global data structure above that
+ * address while providing maximum stack area below.
+ */
+#define CONFIG_SYS_INIT_SP_ADDR \
+	(ATMEL_BASE_SRAM1 + 0x1000 - GENERATED_GBL_DATA_SIZE)
+#endif
+
+
+/* Defines for SPL */
+#define CONFIG_SPL_FRAMEWORK
+#define CONFIG_SPL_TEXT_BASE		0x0
+#define CONFIG_SPL_MAX_SIZE		(4 * 1024)
+
+#define CONFIG_SPL_BSS_START_ADDR	CONFIG_SYS_SDRAM_BASE
+#define CONFIG_SPL_BSS_MAX_SIZE		(16 * 1024)
+#define CONFIG_SYS_SPL_MALLOC_START     (CONFIG_SPL_BSS_START_ADDR + \
+					CONFIG_SPL_BSS_MAX_SIZE)
+#define CONFIG_SYS_SPL_MALLOC_SIZE      CONFIG_SYS_MALLOC_LEN
+#define CONFIG_SPL_LDSCRIPT	arch/arm/mach-at91/arm926ejs/u-boot-spl.lds
+
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+
+#define CONFIG_SPL_BOARD_INIT
+#define CONFIG_SPL_GPIO_SUPPORT
+#define CONFIG_SYS_NAND_ENABLE_PIN_SPL	(2*32 + 14)
+#define CONFIG_SPL_NAND_SUPPORT
+#define CONFIG_SYS_USE_NANDFLASH	1
+#define CONFIG_SPL_NAND_DRIVERS
+#define CONFIG_SPL_NAND_BASE
+#define CONFIG_SPL_NAND_ECC
+#define CONFIG_SPL_NAND_RAW_ONLY
+#define CONFIG_SPL_NAND_SOFTECC
+#define CONFIG_SYS_NAND_U_BOOT_OFFS	0x20000
+#define CONFIG_SYS_NAND_U_BOOT_SIZE	0x80000
+#define	CONFIG_SYS_NAND_U_BOOT_START	CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_NAND_U_BOOT_DST	CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_NAND_5_ADDR_CYCLE
+
+#define CONFIG_SYS_NAND_SIZE		(256*1024*1024)
+#define CONFIG_SYS_NAND_PAGE_SIZE	2048
+#define CONFIG_SYS_NAND_BLOCK_SIZE	(128*1024)
+#define CONFIG_SYS_NAND_PAGE_COUNT	(CONFIG_SYS_NAND_BLOCK_SIZE / \
+					 CONFIG_SYS_NAND_PAGE_SIZE)
+#define CONFIG_SYS_NAND_BAD_BLOCK_POS	NAND_LARGE_BADBLOCK_POS
+#define CONFIG_SYS_NAND_ECCSIZE		256
+#define CONFIG_SYS_NAND_ECCBYTES	3
+#define CONFIG_SYS_NAND_OOBSIZE		64
+#define CONFIG_SYS_NAND_ECCPOS		{ 40, 41, 42, 43, 44, 45, 46, 47, \
+					  48, 49, 50, 51, 52, 53, 54, 55, \
+					  56, 57, 58, 59, 60, 61, 62, 63, }
+
+#define CONFIG_SPL_ATMEL_SIZE
+#define CONFIG_SYS_MASTER_CLOCK		(198656000/2)
+#define AT91_PLL_LOCK_TIMEOUT		1000000
+#define CONFIG_SYS_AT91_PLLA		0x2060bf09
+#define CONFIG_SYS_MCKR			0x100
+#define CONFIG_SYS_MCKR_CSS		(0x02 | CONFIG_SYS_MCKR)
+#define CONFIG_SYS_AT91_PLLB		0x10483f0e
+
+#if defined(CONFIG_SPL_BUILD)
+#define CONFIG_SYS_THUMB_BUILD
+#define CONFIG_SYS_ICACHE_OFF
+#define CONFIG_SYS_DCACHE_OFF
+#undef CONFIG_SPL_OS_BOOT		/* Not supported by existing map */
+#endif
+#endif /* __CONFIG_H */
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 3/4] lib/display_options: fix compiler warnings
  2015-06-15 12:21 ` [U-Boot] [PATCH 3/4] lib/display_options: fix compiler warnings Heiko Schocher
@ 2015-06-15 14:43   ` Tom Rini
  2015-06-16  4:44     ` Heiko Schocher
  0 siblings, 1 reply; 10+ messages in thread
From: Tom Rini @ 2015-06-15 14:43 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 15, 2015 at 02:21:01PM +0200, Heiko Schocher wrote:

> fix compiler warnings if compiled for SPL without
> serial port support (CONFIG_SPL_SERIAL_SUPPORT is
> not set).
> 
> Signed-off-by: Heiko Schocher <hs@denx.de>
[snip]
> @@ -121,7 +128,7 @@ int print_buffer(ulong addr, const void *data, uint width, uint count,
>  	} lb;
>  	int i;
>  #ifdef CONFIG_SYS_SUPPORT_64BIT_DATA
> -	uint64_t __maybe_unsued x;
> +	uint64_t x;
>  #else
>  	uint32_t __maybe_unused x;
>  #endif

Wait, why do we need this?

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150615/0539d9f5/attachment.sig>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 1/4] spl, common, serial: build SPL without serial support
  2015-06-15 12:20 ` [U-Boot] [PATCH 1/4] spl, common, serial: build SPL without serial support Heiko Schocher
@ 2015-06-15 15:32   ` Tom Rini
  2015-06-16  5:21     ` Heiko Schocher
  0 siblings, 1 reply; 10+ messages in thread
From: Tom Rini @ 2015-06-15 15:32 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 15, 2015 at 02:20:59PM +0200, Heiko Schocher wrote:

> This patch enables building SPL without
> CONFIG_SPL_SERIAL_SUPPORT support.
> 
> Signed-off-by: Heiko Schocher <hs@denx.de>

I like that we're starting down this path.  But can you explain why we
need each of these changes:

>  arch/arm/lib/interrupts.c          | 4 ++--
>  arch/arm/mach-at91/arm926ejs/cpu.c | 2 +-
>  common/cli_readline.c              | 2 +-
>  common/cli_simple.c                | 2 +-
>  lib/display_options.c              | 4 ++--

Having gone down the path of disabling output in SPL before due to size
constraints I didn't need to modify those files (but it was on an older
version)

>  common/image.c                     | 8 ++++++--

In this case I just said we only need those functions (and their
strings!) when we have SPL_SERIAL available.  It may be worth
re-checking what parts of this file we really need available in SPL
even.

>  common/spl/spl.c                   | 9 +++++++++

We should be able to be fine without a preloader_console_init() func I
think.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150615/f355e9fd/attachment.sig>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 2/4] nand, atmel: remove udelay in spl_nand_erase_one()
  2015-06-15 12:21 ` [U-Boot] [PATCH 2/4] nand, atmel: remove udelay in spl_nand_erase_one() Heiko Schocher
@ 2015-06-15 23:41   ` Scott Wood
  0 siblings, 0 replies; 10+ messages in thread
From: Scott Wood @ 2015-06-15 23:41 UTC (permalink / raw)
  To: u-boot

On Mon, 2015-06-15 at 14:21 +0200, Heiko Schocher wrote:
> remove unneeded udelay() in this function, as we use
> the dev_ready pin.
> 
> Signed-off-by: Heiko Schocher <hs@denx.de>
> ---
> 
>  drivers/mtd/nand/atmel_nand.c | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/drivers/mtd/nand/atmel_nand.c 
> b/drivers/mtd/nand/atmel_nand.c
> index a2016e7..0d4f327 100644
> --- a/drivers/mtd/nand/atmel_nand.c
> +++ b/drivers/mtd/nand/atmel_nand.c
> @@ -1378,9 +1378,7 @@ int spl_nand_erase_one(int block, int page)
>       hwctrl(&mtd, (page_addr >> 16) & 0x0f,
>              NAND_CTRL_ALE | NAND_CTRL_CHANGE);
>  #endif
> -
>       hwctrl(&mtd, NAND_CMD_ERASE2, NAND_CTRL_CLE | NAND_CTRL_CHANGE);
> -     udelay(2000);
>  
>       while (!this->dev_ready(&mtd))
>               ;

Acked-by: Scott Wood <scottwood@freescale.com>

-Scott

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 3/4] lib/display_options: fix compiler warnings
  2015-06-15 14:43   ` Tom Rini
@ 2015-06-16  4:44     ` Heiko Schocher
  0 siblings, 0 replies; 10+ messages in thread
From: Heiko Schocher @ 2015-06-16  4:44 UTC (permalink / raw)
  To: u-boot

Hello Tom,

Am 15.06.2015 16:43, schrieb Tom Rini:
> On Mon, Jun 15, 2015 at 02:21:01PM +0200, Heiko Schocher wrote:
>
>> fix compiler warnings if compiled for SPL without
>> serial port support (CONFIG_SPL_SERIAL_SUPPORT is
>> not set).
>>
>> Signed-off-by: Heiko Schocher <hs@denx.de>
> [snip]
>> @@ -121,7 +128,7 @@ int print_buffer(ulong addr, const void *data, uint width, uint count,
>>   	} lb;
>>   	int i;
>>   #ifdef CONFIG_SYS_SUPPORT_64BIT_DATA
>> -	uint64_t __maybe_unsued x;
>> +	uint64_t x;
>>   #else
>>   	uint32_t __maybe_unused x;
>>   #endif
>
> Wait, why do we need this?

Hmm... good question ... this seems to make no sense ... I removed
this junk and started a new build for all boards ...

bye,
Heiko
-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 1/4] spl, common, serial: build SPL without serial support
  2015-06-15 15:32   ` Tom Rini
@ 2015-06-16  5:21     ` Heiko Schocher
  0 siblings, 0 replies; 10+ messages in thread
From: Heiko Schocher @ 2015-06-16  5:21 UTC (permalink / raw)
  To: u-boot

Hello Tom,

Am 15.06.2015 17:32, schrieb Tom Rini:
> On Mon, Jun 15, 2015 at 02:20:59PM +0200, Heiko Schocher wrote:
>
>> This patch enables building SPL without
>> CONFIG_SPL_SERIAL_SUPPORT support.
>>
>> Signed-off-by: Heiko Schocher <hs@denx.de>
>
> I like that we're starting down this path.  But can you explain why we
> need each of these changes:

I try it ...

The determining change is in "include/common.h", which twist the
putc, puts, printf and vprintf functions to /dev/null ... so the
compiler/linker can drop all them ... all other changes are only
fixing compiler warnings, as for example vars no longer used ...

>>   arch/arm/lib/interrupts.c          | 4 ++--
>>   arch/arm/mach-at91/arm926ejs/cpu.c | 2 +-
>>   common/cli_readline.c              | 2 +-
>>   common/cli_simple.c                | 2 +-
>>   lib/display_options.c              | 4 ++--
>
> Having gone down the path of disabling output in SPL before due to size
> constraints I didn't need to modify those files (but it was on an older
> version)

Do you have a patch?

>>   common/image.c                     | 8 ++++++--
>
> In this case I just said we only need those functions (and their
> strings!) when we have SPL_SERIAL available.  It may be worth
> re-checking what parts of this file we really need available in SPL
> even.

Hmm... my change is only to get rid of compiler warning "var defined
but not used" with marking this vars with "__maybe_unused" ... so it
is the less intrusive way ...

If we have a header before the kernel image, we need functions from
here in SPL, and maybe FIT is sometime supported/used in SPL ...
maybe someone wants to print header info in SPL before booting it ...
so I do not know if this would be an easy job ...

>>   common/spl/spl.c                   | 9 +++++++++
>
> We should be able to be fine without a preloader_console_init() func I
> think.

I just defined a version for the non serial case, at this place
there is already this function ...

I only set:

         gd->bd = &bdata;
         gd->have_console = 0;

which seems not to bad to me ... ok, "gd->have_console" should be 0.
And why is in preloader_console_init() "gd->bd = &bdata;" ... this
seems not the right place to me, as it has nothing to do with
"console init" ... so maybe we really can drop it, but it gets called
from:

$ grep -lr preloader_console_init .
./arch/microblaze/cpu/spl.c
./arch/powerpc/cpu/ppc4xx/spl_boot.c
./arch/powerpc/cpu/mpc5xxx/spl_boot.c
./arch/arm/mach-davinci/spl.c
./arch/arm/mach-uniphier/spl.c
./arch/arm/mach-mvebu/spl.c
./arch/arm/mach-at91/spl_at91.c
./arch/arm/mach-at91/spl_atmel.c
./arch/arm/mach-tegra/spl.c
./arch/arm/mach-zynq/spl.c
./arch/arm/cpu/armv7/omap-common/boot-common.c
./arch/arm/cpu/armv7/omap-common/boot-common.c.orig
./arch/arm/cpu/armv7/sunxi/board.c
./arch/arm/cpu/armv7/omap3/board.c
./arch/arm/mach-socfpga/spl.c
./20150615/0004-spl-common-serial-build-SPL-without-serial-support.patch
./board/compulab/cm_fx6/spl.c
./board/gateworks/gw_ventana/gw_ventana_spl.c
./board/solidrun/mx6cuboxi/mx6cuboxi.c
./board/barco/platinum/spl_titanium.c
./board/barco/platinum/spl_picon.c
./board/kosagi/novena/novena_spl.c
./board/ti/ks2_evm/board.c
./board/LaCie/edminiv2/edminiv2.c
./board/wandboard/spl.c
./board/freescale/mx6sxsabresd/mx6sxsabresd.c
./board/freescale/ls1021aqds/ls1021aqds.c
./board/freescale/ls1021atwr/ls1021atwr.c
./board/freescale/mx6sabresd/mx6sabresd.c
./board/bachmann/ot1200/ot1200_spl.c
./board/work-microwave/work_92105/work_92105_spl.c
./board/woodburn/woodburn.c

so ... we need a dummy function ... or?

Thanks for your comments!

bye,
Heiko
-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-06-16  5:21 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-15 12:20 [U-Boot] [PATCH 0/4] add support for the at91 based smartweb board Heiko Schocher
2015-06-15 12:20 ` [U-Boot] [PATCH 1/4] spl, common, serial: build SPL without serial support Heiko Schocher
2015-06-15 15:32   ` Tom Rini
2015-06-16  5:21     ` Heiko Schocher
2015-06-15 12:21 ` [U-Boot] [PATCH 2/4] nand, atmel: remove udelay in spl_nand_erase_one() Heiko Schocher
2015-06-15 23:41   ` Scott Wood
2015-06-15 12:21 ` [U-Boot] [PATCH 3/4] lib/display_options: fix compiler warnings Heiko Schocher
2015-06-15 14:43   ` Tom Rini
2015-06-16  4:44     ` Heiko Schocher
2015-06-15 12:21 ` [U-Boot] [PATCH 4/4] arm, at91: support for sam9260 based smwartweb board Heiko Schocher

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.