Skip to contentSkip to conversation

add support for the at91 based smartweb board

PATCH Superseded Heiko Schocher 3 participants 10 messages Jun 15, 2015 – Jun 16, 2015

Subsystems (7)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

cover add support for the at91 based smartweb board

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

Quoted 1 line

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
Signature · 1 line
2.1.0
#1 lore raw

PATCH 1/4 spl, common, serial: build SPL without serial support

This patch enables building SPL without
CONFIG_SPL_SERIAL_SUPPORT support.

---

 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(-)
arch/arm/lib/interrupts.c +2 -2
index 06f4679..ec3fb77 100644
@@ -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",
arch/arm/mach-at91/arm926ejs/cpu.c +1 -1
index da1d359..990c689 100644
@@ -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",
arch/arm/mach-at91/spl_at91.c +3 -0
index a79a9dc..b19f95b 100644
@@ -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();
 
common/Makefile +4 -0
index d6c1d48..516c299 100644
@@ -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
common/cli_readline.c +1 -1
index 9a9fb35..c1476e4 100644
@@ -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
common/cli_simple.c +1 -1
index 6c65cc6..00a8d2f 100644
@@ -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);
common/image.c +6 -2
index f0f0135..eaa98d3 100644
@@ -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));
common/spl/spl.c +9 -0
index aeb0645..7f5e37f 100644
@@ -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
include/common.h +7 -0
index 8f4b2ec..bafe120 100644
@@ -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)
include/configs/apf27.h +1 -0
index 7554023..849eb1a 100644
@@ -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
include/configs/mx31pdk.h +1 -0
index 1282a6e..e01dfe6 100644
@@ -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
include/configs/mxs.h +1 -0
index 38b1e93..9d823de 100644
@@ -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 */
include/configs/tx25.h +1 -0
index 622bd53..95fcdac 100644
@@ -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
lib/display_options.c +2 -2
index 57fb974..6d9c6aa 100644
@@ -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)
Signature · 1 line
2.1.0
#2 lore raw

PATCH 1/4 spl, common, serial: build SPL without serial support

Quoted 4 lines · Heiko Schocher

This patch enables building SPL without
CONFIG_SPL_SERIAL_SUPPORT support.

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

Quoted 5 lines
 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)

Quoted 1 line
 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.

Quoted 1 line
 common/spl/spl.c                   | 9 +++++++++

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

Signature · 8 lines
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>
#3 lore raw

PATCH 1/4 spl, common, serial: build SPL without serial support

Hello Tom,

Am 15.06.2015 17:32, schrieb Tom Rini:

Quoted 9 lines · Heiko Schocher
Quoted 5 lines

This patch enables building SPL without
CONFIG_SPL_SERIAL_SUPPORT support.

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

Quoted 9 lines
Quoted 5 lines
  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?

Quoted 6 lines
Quoted 1 line
  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 ...

Quoted 4 lines
Quoted 1 line
  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

Signature · 2 lines
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
#4 lore raw

PATCH 2/4 nand, atmel: remove udelay in spl_nand_erase_one()

In reply to Heiko Schocher

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

---

 drivers/mtd/nand/atmel_nand.c | 2 --
 1 file changed, 2 deletions(-)
drivers/mtd/nand/atmel_nand.c +0 -2
index a2016e7..0d4f327 100644
@@ -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))
 		;
Signature · 1 line
2.1.0
#5 lore raw

PATCH 2/4 nand, atmel: remove udelay in spl_nand_erase_one()

Quoted 15 lines · Heiko Schocher

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

---

 drivers/mtd/nand/atmel_nand.c | 2 --
 1 file changed, 2 deletions(-)
drivers/mtd/nand/atmel_nand.c +0 -0
index a2016e7..0d4f327 100644

drivers/mtd/nand/atmel_nand.c int spl_nand_erase_one(int block, int page) · line 1384

Quoted 9 lines
drivers/mtd/nand/atmel_nand.c +0 -2
@@ -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))
              ;

-Scott

#6 lore raw

PATCH 3/4 lib/display_options: fix compiler warnings

In reply to Heiko Schocher

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

---

 lib/display_options.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)
lib/display_options.c +9 -2
index 6d9c6aa..17814c7 100644
@@ -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
Signature · 1 line
2.1.0
#7 lore raw

PATCH 3/4 lib/display_options: fix compiler warnings

Quoted 5 lines · Heiko Schocher

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

[snip]

lib/display_options.c int print_buffer(ulong addr, const void *data, uint width, uint count, · line 134

Quoted 9 lines
lib/display_options.c +1 -1
@@ -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?

Signature · 8 lines
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>
#8 lore raw

PATCH 3/4 lib/display_options: fix compiler warnings

Hello Tom,

Am 15.06.2015 16:43, schrieb Tom Rini:

Quoted 8 lines · Heiko Schocher
Quoted 6 lines

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

[snip]

Quoted 11 lines

lib/display_options.c int print_buffer(ulong addr, const void *data, uint width, uint count, · line 134

Quoted 9 lines
lib/display_options.c +1 -1
@@ -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

Signature · 2 lines
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
#9 lore raw

PATCH 4/4 arm, at91: support for sam9260 based smwartweb board

In reply to Heiko Schocher

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

Quoted 1 line

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>

---

 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
arch/arm/include/asm/mach-types.h +1 -0
index 5afe791..847da59 100644
@@ -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
arch/arm/mach-at91/Kconfig +6 -0
index bbf4228..d8d46dc 100644
@@ -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
arch/arm/mach-at91/Makefile +1 -0
index 0d3ee48..313eb47 100644
@@ -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
board/siemens/smartweb/Kconfig new file +12 -0
new file mode 100644
index 0000000..0871bcc
@@ -0,0 +1,12 @@
+if TARGET_SMARTWEB
+
+config SYS_BOARD
+	default "smartweb"
+
+config SYS_VENDOR
+	default "siemens"
+
+config SYS_CONFIG_NAME
+	default "smartweb"
+
+endif
board/siemens/smartweb/MAINTAINERS new file +6 -0
new file mode 100644
index 0000000..51298ff
@@ -0,0 +1,6 @@
+SMARTWEB_HW BOARD
+M:	Heiko Schocher <[email protected]>
+S:	Maintained
+F:	board/siemens/smartweb
+F:	include/configs/smartweb.h
+F:	configs/smartweb_defconfig
board/siemens/smartweb/Makefile new file +20 -0
new file mode 100644
index 0000000..55e7798
@@ -0,0 +1,20 @@
+#
+# (C) Copyright 2003-2008
+# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+#
+# (C) Copyright 2008
+# Stelian Pop <[email protected]>
+# Lead Tech Design <www.leadtechdesign.com>
+#
+# (C) Copyright 2012
+# Markus Hubig <[email protected]>
+# IMKO GmbH <www.imko.de>
+#
+# (C) Copyright 2014
+# Heiko Schocher <[email protected]>
+# DENX Software Engineering GmbH
+#
+# SPDX-License-Identifier:	GPL-2.0+
+#
+
+obj-y	+= smartweb.o
board/siemens/smartweb/smartweb.c new file +220 -0

220 lines not on this page · raw message

configs/smartweb_defconfig new file +6 -0
new file mode 100644
index 0000000..d4b2aca
@@ -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
include/configs/smartweb.h new file +290 -0

290 lines not on this page · raw message

Signature · 1 line
2.1.0