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