From: Sascha Hauer <s.hauer@pengutronix.de>
To: barebox@lists.infradead.org
Subject: [PATCH 02/28] ARM at91sam926x: provide reset function for boards with lowlevel init
Date: Wed, 17 Oct 2012 23:03:11 +0200 [thread overview]
Message-ID: <1350507817-7819-3-git-send-email-s.hauer@pengutronix.de> (raw)
In-Reply-To: <1350507817-7819-1-git-send-email-s.hauer@pengutronix.de>
Some Atmel boards use a reset() function provided by the architecture.
Add a reset function for the board instead and call the architecture
specific init function from there. While at it, test if we are running
from SDRAM and skip the init function in this case. This makes the configs
safe for both first and second stage.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
arch/arm/boards/at91sam9263ek/Makefile | 2 ++
arch/arm/boards/at91sam9263ek/lowlevel.c | 15 +++++++++++++++
arch/arm/boards/pm9261/Makefile | 2 ++
arch/arm/boards/pm9261/lowlevel.c | 14 ++++++++++++++
arch/arm/boards/pm9263/Makefile | 2 ++
arch/arm/boards/pm9263/lowlevel.c | 14 ++++++++++++++
arch/arm/mach-at91/Kconfig | 11 +++++++++++
arch/arm/mach-at91/Makefile | 4 +++-
arch/arm/mach-at91/at91sam926x_lowlevel_init.c | 9 +++++++--
arch/arm/mach-at91/include/mach/board.h | 3 +++
10 files changed, 73 insertions(+), 3 deletions(-)
create mode 100644 arch/arm/boards/at91sam9263ek/lowlevel.c
create mode 100644 arch/arm/boards/pm9261/lowlevel.c
create mode 100644 arch/arm/boards/pm9263/lowlevel.c
diff --git a/arch/arm/boards/at91sam9263ek/Makefile b/arch/arm/boards/at91sam9263ek/Makefile
index eb072c0..47ab803 100644
--- a/arch/arm/boards/at91sam9263ek/Makefile
+++ b/arch/arm/boards/at91sam9263ek/Makefile
@@ -1 +1,3 @@
obj-y += init.o
+obj-y += lowlevel.o
+pbl-y += lowlevel.o
diff --git a/arch/arm/boards/at91sam9263ek/lowlevel.c b/arch/arm/boards/at91sam9263ek/lowlevel.c
new file mode 100644
index 0000000..6050bcd
--- /dev/null
+++ b/arch/arm/boards/at91sam9263ek/lowlevel.c
@@ -0,0 +1,15 @@
+#include <common.h>
+#include <init.h>
+#include <sizes.h>
+#include <asm/barebox-arm.h>
+#include <asm/barebox-arm-head.h>
+#include <mach/hardware.h>
+#include <mach/board.h>
+#include <mach/at91sam9_sdramc.h>
+
+void __naked __bare_init reset(void)
+{
+ common_reset();
+
+ at91sam926x_entry(AT91_SDRAM_BASE, at91_get_sdram_size());
+}
diff --git a/arch/arm/boards/pm9261/Makefile b/arch/arm/boards/pm9261/Makefile
index eb072c0..47ab803 100644
--- a/arch/arm/boards/pm9261/Makefile
+++ b/arch/arm/boards/pm9261/Makefile
@@ -1 +1,3 @@
obj-y += init.o
+obj-y += lowlevel.o
+pbl-y += lowlevel.o
diff --git a/arch/arm/boards/pm9261/lowlevel.c b/arch/arm/boards/pm9261/lowlevel.c
new file mode 100644
index 0000000..b8a8728
--- /dev/null
+++ b/arch/arm/boards/pm9261/lowlevel.c
@@ -0,0 +1,14 @@
+#include <common.h>
+#include <init.h>
+#include <sizes.h>
+#include <asm/barebox-arm.h>
+#include <asm/barebox-arm-head.h>
+#include <mach/hardware.h>
+#include <mach/board.h>
+
+void __naked __bare_init reset(void)
+{
+ common_reset();
+
+ at91sam926x_entry(AT91_SDRAM_BASE, SZ_64M);
+}
diff --git a/arch/arm/boards/pm9263/Makefile b/arch/arm/boards/pm9263/Makefile
index eb072c0..47ab803 100644
--- a/arch/arm/boards/pm9263/Makefile
+++ b/arch/arm/boards/pm9263/Makefile
@@ -1 +1,3 @@
obj-y += init.o
+obj-y += lowlevel.o
+pbl-y += lowlevel.o
diff --git a/arch/arm/boards/pm9263/lowlevel.c b/arch/arm/boards/pm9263/lowlevel.c
new file mode 100644
index 0000000..b8a8728
--- /dev/null
+++ b/arch/arm/boards/pm9263/lowlevel.c
@@ -0,0 +1,14 @@
+#include <common.h>
+#include <init.h>
+#include <sizes.h>
+#include <asm/barebox-arm.h>
+#include <asm/barebox-arm-head.h>
+#include <mach/hardware.h>
+#include <mach/board.h>
+
+void __naked __bare_init reset(void)
+{
+ common_reset();
+
+ at91sam926x_entry(AT91_SDRAM_BASE, SZ_64M);
+}
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 30225fa..f962084 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -107,6 +107,9 @@ config SUPPORT_CALAO_DAB_MMX
config SUPPORT_CALAO_MOB_TNY_MD2
bool
+config HAVE_AT91SAM926X_LOWLEVEL_INIT
+ bool
+
# ----------------------------------------------------------
if ARCH_AT91RM9200
@@ -116,6 +119,7 @@ choice
prompt "AT91RM9200 Board Type"
config MACH_AT91RM9200EK
+ select HAVE_AT91RM9200_LOWLEVEL_INIT
bool "Atmel AT91RM9200-EK Evaluation Kit"
help
Select this if you are using Atmel's AT91RM9200-EK Evaluation Kit.
@@ -180,8 +184,10 @@ config MACH_AT91SAM9261EK
config MACH_PM9261
bool "Ronetix PM9261"
+ select HAVE_AT91SAM926X_LOWLEVEL_INIT
select HAS_DM9000
select MACH_HAS_LOWLEVEL_INIT
+ select MACH_DO_LOWLEVEL_INIT
help
Say y here if you are using the Ronetix PM9261 Board
@@ -258,18 +264,23 @@ choice
config MACH_AT91SAM9263EK
bool "Atmel AT91SAM9263-EK"
select MACH_HAS_LOWLEVEL_INIT
+ select MACH_DO_LOWLEVEL_INIT
select HAVE_NAND_ATMEL_BUSWIDTH_16
+ select HAVE_AT91SAM926X_LOWLEVEL_INIT
help
Say y here if you are using Atmel's AT91SAM9263-EK Evaluation board
config MACH_MMCCPU
bool "Bucyrus MMC-CPU"
+ select HAVE_AT91SAM926X_LOWLEVEL_INIT
help
Say y here if you are using the Bucyrus MMC-CPU
config MACH_PM9263
bool "Ronetix PM9263"
select MACH_HAS_LOWLEVEL_INIT
+ select MACH_DO_LOWLEVEL_INIT
+ select HAVE_AT91SAM926X_LOWLEVEL_INIT
help
Say y here if you are using the Ronetix PM9263 Board
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index 3ade725..f9cb4f1 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -1,11 +1,13 @@
obj-y += clock.o gpio.o
-lowlevel_init-y = at91sam926x_lowlevel_init.o
lowlevel_init-$(CONFIG_ARCH_AT91RM9200) = at91rm9200_lowlevel_init.o
obj-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y)
pbl-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y)
+obj-$(CONFIG_HAVE_AT91SAM926X_LOWLEVEL_INIT) += at91sam926x_lowlevel_init.o
+pbl-$(CONFIG_HAVE_AT91SAM926X_LOWLEVEL_INIT) += at91sam926x_lowlevel_init.o
+
obj-$(CONFIG_AT91SAM9_RESET) += at91sam9_reset.o
obj-$(CONFIG_AT91SAM9G45_RESET) += at91sam9g45_reset.o
diff --git a/arch/arm/mach-at91/at91sam926x_lowlevel_init.c b/arch/arm/mach-at91/at91sam926x_lowlevel_init.c
index 0ee0345..a399854 100644
--- a/arch/arm/mach-at91/at91sam926x_lowlevel_init.c
+++ b/arch/arm/mach-at91/at91sam926x_lowlevel_init.c
@@ -34,12 +34,17 @@ static void inline pmc_check_mckrdy(void)
} while (!(r & AT91_PMC_MCKRDY));
}
-void __naked __bare_init reset(void)
+void __naked __bare_init at91sam926x_entry(unsigned long sdram_base,
+ unsigned long sdram_size)
{
+ uint32_t pc;
u32 r;
int i;
- common_reset();
+ pc = get_pc();
+
+ if (pc < AT91_SDRAM_BASE || pc > AT91_SDRAM_BASE + 0x10000000)
+ goto end;
at91_sys_write(AT91_WDT_MR, CONFIG_SYS_WDTC_WDMR_VAL);
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
index 670c73d..eb71ed5 100644
--- a/arch/arm/mach-at91/include/mach/board.h
+++ b/arch/arm/mach-at91/include/mach/board.h
@@ -154,4 +154,7 @@ struct at91_spi_platform_data {
};
void at91_add_device_spi(int spi_id, struct at91_spi_platform_data *pdata);
+
+void at91sam926x_entry(unsigned long sdram_base, unsigned long sdram_size);
+
#endif
--
1.7.10.4
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
next prev parent reply other threads:[~2012-10-17 21:03 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-17 21:03 [PATCH] ARM: Make memory known to lowlevel code Sascha Hauer
2012-10-17 21:03 ` [PATCH 01/28] ARM: Make malloc available in all initcalls Sascha Hauer
2012-10-17 21:03 ` Sascha Hauer [this message]
2012-10-18 7:26 ` [PATCH 02/28] ARM at91sam926x: provide reset function for boards with lowlevel init Jean-Christophe PLAGNIOL-VILLARD
2012-10-19 15:30 ` Sascha Hauer
2012-10-17 21:03 ` [PATCH 03/28] ARM at91rm9200: " Sascha Hauer
2012-10-18 7:27 ` Jean-Christophe PLAGNIOL-VILLARD
2012-10-17 21:03 ` [PATCH 04/28] ARM: Add new entry point for barebox Sascha Hauer
2012-10-17 21:03 ` [PATCH 05/28] ARM i.MX Add functions to get sdram base and size Sascha Hauer
2012-10-17 21:03 ` [PATCH 06/28] ARM i.MX boards: switch to barebox_arm_entry Sascha Hauer
2012-10-17 21:12 ` Alexander Shiyan
2012-11-01 19:21 ` Sascha Hauer
2012-10-17 21:03 ` [PATCH 07/28] ARM AT91 " Sascha Hauer
2012-10-17 21:03 ` [PATCH 08/28] ARM i.MXs " Sascha Hauer
2012-10-17 21:03 ` [PATCH 09/28] ARM OMAP " Sascha Hauer
2012-10-17 21:03 ` [PATCH 10/28] ARM Samsung " Sascha Hauer
2012-10-17 21:03 ` [PATCH 11/28] ARM PXA " Sascha Hauer
2012-10-17 21:03 ` [PATCH 12/28] ARM ep93xx " Sascha Hauer
2012-10-17 21:03 ` [PATCH 13/28] ARM tegra " Sascha Hauer
2012-10-17 21:03 ` [PATCH 14/28] ARM nomadik " Sascha Hauer
2012-10-17 21:03 ` [PATCH 15/28] ARM versatile " Sascha Hauer
2012-10-17 21:03 ` [PATCH 16/28] ARM netx " Sascha Hauer
2012-10-17 21:03 ` [PATCH 17/28] ARM: remove now unused *_LOWLEVEL_INIT Kconfig options Sascha Hauer
2012-10-17 21:03 ` [PATCH 18/28] ARM start: remove unused board_init_lowlevel* functions Sascha Hauer
2012-10-17 21:03 ` [PATCH 19/28] ARM pbl: setup stack at end of SDRAM Sascha Hauer
2012-10-17 21:03 ` [PATCH 20/28] ARM pbl: Call uncompressed binary with arguments Sascha Hauer
2012-10-18 7:29 ` Jean-Christophe PLAGNIOL-VILLARD
2012-10-19 15:32 ` Sascha Hauer
2012-10-19 16:15 ` Sascha Hauer
2012-10-17 21:03 ` [PATCH 21/28] ARM pbl: make MMU functional again Sascha Hauer
2012-10-17 21:03 ` [PATCH 22/28] ARM start: pick up memory/boarddata arguments from pbl Sascha Hauer
2012-10-17 21:03 ` [PATCH 23/28] ARM start: Add barebox_arm_boarddata function Sascha Hauer
2012-10-17 21:03 ` [PATCH 24/28] ARM: Determine base and size of malloc space from SDRAM Sascha Hauer
2012-10-17 21:03 ` [PATCH 25/28] ARM pbl: always copy piggydata Sascha Hauer
2012-10-18 7:23 ` Jean-Christophe PLAGNIOL-VILLARD
2012-10-19 15:34 ` Sascha Hauer
2012-10-19 17:27 ` Jean-Christophe PLAGNIOL-VILLARD
2012-10-17 21:03 ` [PATCH 26/28] ARM i.MX: Use SRAM stack in lowlevel code Sascha Hauer
2012-10-17 21:03 ` [PATCH 27/28] generic memory layout: fix deps for [MALLOC|STACK]_BASE Sascha Hauer
2012-10-17 21:03 ` [PATCH 28/28] ARM: disable HAVE_CONFIGURABLE_MEMORY_LAYOUT Sascha Hauer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1350507817-7819-3-git-send-email-s.hauer@pengutronix.de \
--to=s.hauer@pengutronix.de \
--cc=barebox@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox