summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeiko Schocher <hs@denx.de>2014-11-18 09:41:58 +0100
committerAndreas Bießmann <andreas.devel@googlemail.com>2015-01-19 12:49:28 +0100
commita1655bb2e1e2bf8f30f40b46d1bb7a45810634be (patch)
tree2b66296e338510249024f4a959d421e15ea070a9
parent389aee89308daf67c540e80aafd1d2f1a694f0e8 (diff)
downloadu-boot-imx-a1655bb2e1e2bf8f30f40b46d1bb7a45810634be.zip
u-boot-imx-a1655bb2e1e2bf8f30f40b46d1bb7a45810634be.tar.gz
u-boot-imx-a1655bb2e1e2bf8f30f40b46d1bb7a45810634be.tar.bz2
taurus, spl: erase also spi flash if recovery button is pressed
if in SPL mode recovery button is pressed, erase also spi flash from offset 0 to CONFIG_SYS_NAND_U_BOOT_SIZE on the taurus board. Signed-off-by: Heiko Schocher <hs@denx.de>
-rw-r--r--board/siemens/taurus/taurus.c24
-rw-r--r--include/configs/taurus.h18
2 files changed, 32 insertions, 10 deletions
diff --git a/board/siemens/taurus/taurus.c b/board/siemens/taurus/taurus.c
index b8ff478..013dac2 100644
--- a/board/siemens/taurus/taurus.c
+++ b/board/siemens/taurus/taurus.c
@@ -68,6 +68,7 @@ static void taurus_nand_hw_init(void)
#if defined(CONFIG_SPL_BUILD)
#include <spl.h>
#include <nand.h>
+#include <spi_flash.h>
void matrix_init(void)
{
@@ -81,23 +82,28 @@ void matrix_init(void)
void at91_spl_board_init(void)
{
taurus_nand_hw_init();
+ at91_spi0_hw_init(TAURUS_SPI_MASK);
/* Configure recovery button PINs */
at91_set_gpio_input(AT91_PIN_PA31, 1);
/* check if button is pressed */
if (at91_get_gpio_value(AT91_PIN_PA31) == 0) {
- u32 boot_device;
+ struct spi_flash *flash;
debug("Recovery button pressed\n");
- boot_device = spl_boot_device();
- switch (boot_device) {
-#ifdef CONFIG_SPL_NAND_SUPPORT
- case BOOT_DEVICE_NAND:
- nand_init();
- spl_nand_erase_one(0, 0);
- break;
-#endif
+ nand_init();
+ spl_nand_erase_one(0, 0);
+ flash = spi_flash_probe(CONFIG_SF_DEFAULT_BUS,
+ 0,
+ CONFIG_SF_DEFAULT_SPEED,
+ SPI_MODE_3);
+ if (!flash) {
+ puts("no flash\n");
+ } else {
+ puts("erase spi flash sector 0\n");
+ spi_flash_erase(flash, 0,
+ CONFIG_SYS_NAND_U_BOOT_SIZE);
}
}
}
diff --git a/include/configs/taurus.h b/include/configs/taurus.h
index 06725cd..65468ad 100644
--- a/include/configs/taurus.h
+++ b/include/configs/taurus.h
@@ -142,6 +142,19 @@
#define TAURUS_SPI_MASK (1 << 4)
#define TAURUS_SPI_CS_PIN AT91_PIN_PA3
+#if defined(CONFIG_SPL_BUILD)
+/* SPL related */
+#undef CONFIG_SPL_OS_BOOT /* Not supported by existing map */
+#define CONFIG_SPL_SPI_SUPPORT
+#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_LOAD
+#define CONFIG_SYS_SPI_U_BOOT_OFFS 0x20000
+
+#define CONFIG_SF_DEFAULT_BUS 0
+#define CONFIG_SF_DEFAULT_SPEED 10000000
+#define CONFIG_SF_DEFAULT_MODE SPI_MODE_0
+#endif
+
/* load address */
#define CONFIG_SYS_LOAD_ADDR 0x22000000
@@ -176,8 +189,11 @@
/* Defines for SPL */
#define CONFIG_SPL_FRAMEWORK
#define CONFIG_SPL_TEXT_BASE 0x0
-#define CONFIG_SPL_MAX_SIZE (11 * 1024)
+#define CONFIG_SPL_MAX_SIZE (14 * 1024)
#define CONFIG_SPL_STACK (16 * 1024)
+#define CONFIG_SYS_SPL_MALLOC_START (CONFIG_SYS_TEXT_BASE - \
+ CONFIG_SYS_MALLOC_LEN)
+#define CONFIG_SYS_SPL_MALLOC_SIZE CONFIG_SYS_MALLOC_LEN
#define CONFIG_SPL_BSS_START_ADDR CONFIG_SPL_MAX_SIZE
#define CONFIG_SPL_BSS_MAX_SIZE (3 * 1024)