From patchwork Thu Jan 27 22:46:18 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Remy Bohmer X-Patchwork-Id: 80748 X-Patchwork-Delegate: info@emk-elektronik.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 24D79B711B for ; Fri, 28 Jan 2011 09:46:41 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D4277280B6; Thu, 27 Jan 2011 23:46:38 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id e45OlNaA2qBL; Thu, 27 Jan 2011 23:46:38 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id DB748280DD; Thu, 27 Jan 2011 23:46:34 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 3A6BF280CE for ; Thu, 27 Jan 2011 23:46:32 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Z8GLgIYgF308 for ; Thu, 27 Jan 2011 23:46:29 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail-ew0-f44.google.com (mail-ew0-f44.google.com [209.85.215.44]) by theia.denx.de (Postfix) with ESMTPS id 405A82808B for ; Thu, 27 Jan 2011 23:46:29 +0100 (CET) Received: by mail-ew0-f44.google.com with SMTP id 8so1341564ewy.3 for ; Thu, 27 Jan 2011 14:46:29 -0800 (PST) Received: by 10.213.26.70 with SMTP id d6mr3826995ebc.78.1296168388597; Thu, 27 Jan 2011 14:46:28 -0800 (PST) Received: from localhost (541EDD7F.cm-5-7d.dynamic.ziggo.nl [84.30.221.127]) by mx.google.com with ESMTPS id x54sm13288796eeh.11.2011.01.27.14.46.26 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 27 Jan 2011 14:46:27 -0800 (PST) From: Remy Bohmer To: u-boot@lists.denx.de, Alexander Stein , Reinhard Meyer Date: Thu, 27 Jan 2011 23:46:18 +0100 Message-Id: <1296168378-8399-2-git-send-email-linux@bohmer.net> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1296168378-8399-1-git-send-email-linux@bohmer.net> References: <1296168378-8399-1-git-send-email-linux@bohmer.net> Subject: [U-Boot] [PATCH 2/2] at91sam9261ek: make operational again X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.9 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de Since U-boot v2010.12 the at91sam9261ek board is broken. This is solved and tested on this board. Note: It requires that the 1st stage bootloader (like Atmel at91-bootstrap) to load U-boot at a different address compared to previous releases of U-boot due to conflicts in the BSS area during relocation. (0x23f00000 -> -0x23e00000) Derived from a patch of: Alexander Stein Signed-off-by: Remy Bohmer --- board/atmel/at91sam9261ek/Makefile | 10 +++++----- board/atmel/at91sam9261ek/at91sam9261ek.c | 7 ++++--- board/atmel/at91sam9261ek/config.mk | 1 - include/configs/at91sam9261ek.h | 25 +++++++++++++++++++++---- 4 files changed, 30 insertions(+), 13 deletions(-) delete mode 100644 board/atmel/at91sam9261ek/config.mk diff --git a/board/atmel/at91sam9261ek/Makefile b/board/atmel/at91sam9261ek/Makefile index 9d20ba0..1da810f 100644 --- a/board/atmel/at91sam9261ek/Makefile +++ b/board/atmel/at91sam9261ek/Makefile @@ -29,16 +29,16 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(BOARD).o -COBJS-y += at91sam9261ek.o +COBJS-y += $(BOARD).o COBJS-y += led.o COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o -SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) -OBJS := $(addprefix $(obj),$(COBJS-y)) -SOBJS := $(addprefix $(obj),$(SOBJS)) +SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS-y) $(SOBJS-y)) +SOBJS := $(addprefix $(obj),$(SOBJS-y)) $(LIB): $(obj).depend $(OBJS) $(SOBJS) - $(call cmd_link_o_target, $(OBJS) $(SOBJS)) + $(call cmd_link_o_target, $(OBJS)) clean: rm -f $(SOBJS) $(OBJS) diff --git a/board/atmel/at91sam9261ek/at91sam9261ek.c b/board/atmel/at91sam9261ek/at91sam9261ek.c index de5cfae..25c181e 100644 --- a/board/atmel/at91sam9261ek/at91sam9261ek.c +++ b/board/atmel/at91sam9261ek/at91sam9261ek.c @@ -246,7 +246,7 @@ int board_init(void) gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9261EK; #endif /* adress of boot parameters */ - gd->bd->bi_boot_params = PHYS_SDRAM + 0x100; + gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100; at91_serial_hw_init(); #ifdef CONFIG_CMD_NAND @@ -273,8 +273,9 @@ int board_eth_init(bd_t *bis) int dram_init(void) { - gd->bd->bi_dram[0].start = PHYS_SDRAM; - gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE; + /* dram_init must store complete ramsize in gd->ram_size */ + gd->ram_size = get_ram_size((volatile long *)CONFIG_SYS_SDRAM_BASE, + CONFIG_SYS_SDRAM_SIZE); return 0; } diff --git a/board/atmel/at91sam9261ek/config.mk b/board/atmel/at91sam9261ek/config.mk deleted file mode 100644 index e554a45..0000000 --- a/board/atmel/at91sam9261ek/config.mk +++ /dev/null @@ -1 +0,0 @@ -CONFIG_SYS_TEXT_BASE = 0x23f00000 diff --git a/include/configs/at91sam9261ek.h b/include/configs/at91sam9261ek.h index 401478b..0cffd94 100644 --- a/include/configs/at91sam9261ek.h +++ b/include/configs/at91sam9261ek.h @@ -27,6 +27,8 @@ #ifndef __CONFIG_H #define __CONFIG_H +#include + #define CONFIG_AT91_LEGACY /* ARM asynchronous clock */ @@ -39,6 +41,7 @@ #else #define CONFIG_AT91SAM9261 1 /* It's an Atmel AT91SAM9261 SoC*/ #endif +#define CONFIG_AT91FAMILY #define CONFIG_ARCH_CPU_INIT #undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */ @@ -105,11 +108,21 @@ #define CONFIG_CMD_DHCP 1 #define CONFIG_CMD_NAND 1 #define CONFIG_CMD_USB 1 +#define CONFIG_CMD_CACHE 1 /* SDRAM */ #define CONFIG_NR_DRAM_BANKS 1 -#define PHYS_SDRAM 0x20000000 -#define PHYS_SDRAM_SIZE 0x04000000 /* 64 megs */ +#define CONFIG_SYS_SDRAM_BASE 0x20000000 +#define CONFIG_SYS_SDRAM_SIZE SZ_64M /* 64 megs */ + +/* + * AT91-bootstrap expects that U-boot needs to be loaded at 0x23f00000 + * but since U-boot is now being relocated to the end of RAM which is + * almost in the same area, there will be an overlap in the BSS segment + * resulting in a lockup during boot. So, we need to tell the + * AT91-bootstrap code to load it at a lower address, namely 0x23e00000 + */ +#define CONFIG_SYS_TEXT_BASE 0x23e00000 /* DataFlash */ #define CONFIG_ATMEL_DATAFLASH_SPI @@ -168,7 +181,7 @@ #define CONFIG_SYS_LOAD_ADDR 0x22000000 /* load address */ -#define CONFIG_SYS_MEMTEST_START PHYS_SDRAM +#define CONFIG_SYS_MEMTEST_START CONFIG_SYS_SDRAM_BASE #define CONFIG_SYS_MEMTEST_END 0x23e00000 #ifdef CONFIG_SYS_USE_DATAFLASH_CS0 @@ -230,8 +243,12 @@ * Size of malloc() pool */ #define CONFIG_SYS_MALLOC_LEN ROUND(3 * CONFIG_ENV_SIZE + 128*1024, 0x1000) +/* size in bytes reserved for initial data */ + +#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + SZ_4K \ + - GENERATED_GBL_DATA_SIZE) -#define CONFIG_STACKSIZE (32*1024) /* regular stack */ +#define CONFIG_STACKSIZE (SZ_32K) /* regular stack */ #ifdef CONFIG_USE_IRQ #error CONFIG_USE_IRQ not supported