summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2008-11-27 16:50:32 -0500
committerMike Frysinger <vapier@gentoo.org>2009-06-14 20:01:04 -0400
commitdd14af7640f7d48d8e9768eeeb09592e6f94ed38 (patch)
treee669594e05417206d374d9843b4f594c8aa11319 /common
parent67c2829b646bb5b859088b36fbc89e971b9c1960 (diff)
downloadu-boot-imx-dd14af7640f7d48d8e9768eeeb09592e6f94ed38.zip
u-boot-imx-dd14af7640f7d48d8e9768eeeb09592e6f94ed38.tar.gz
u-boot-imx-dd14af7640f7d48d8e9768eeeb09592e6f94ed38.tar.bz2
Blackfin: new spibootldr command
Newer Blackfin parts can an on-chip ROM that can boot LDRs over SPI flashes, so add a new 'spibootldr' command to take advantage of it. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'common')
-rw-r--r--common/Makefile1
-rw-r--r--common/cmd_spibootldr.c36
2 files changed, 37 insertions, 0 deletions
diff --git a/common/Makefile b/common/Makefile
index ee0cb33..c8e5d26 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -133,6 +133,7 @@ COBJS-$(CONFIG_CMD_SF) += cmd_sf.o
COBJS-$(CONFIG_CMD_SCSI) += cmd_scsi.o
COBJS-$(CONFIG_CMD_SETEXPR) += cmd_setexpr.o
COBJS-$(CONFIG_CMD_SPI) += cmd_spi.o
+COBJS-$(CONFIG_CMD_SPIBOOTLDR) += cmd_spibootldr.o
COBJS-$(CONFIG_CMD_STRINGS) += cmd_strings.o
COBJS-$(CONFIG_CMD_TERMINAL) += cmd_terminal.o
COBJS-$(CONFIG_CMD_UBI) += cmd_ubi.o
diff --git a/common/cmd_spibootldr.c b/common/cmd_spibootldr.c
new file mode 100644
index 0000000..d29ed2b
--- /dev/null
+++ b/common/cmd_spibootldr.c
@@ -0,0 +1,36 @@
+/*
+ * U-boot - spibootldr.c
+ *
+ * Copyright (c) 2005-2008 Analog Devices Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * Licensed under the GPL-2 or later.
+ */
+
+#include <common.h>
+#include <command.h>
+
+#include <asm/blackfin.h>
+#include <asm/mach-common/bits/bootrom.h>
+
+int do_spibootldr(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+ s32 addr;
+
+ /* Get the address */
+ if (argc < 2)
+ addr = 0;
+ else
+ addr = simple_strtoul(argv[1], NULL, 16);
+
+ printf("## Booting ldr image at SPI offset 0x%x ...\n", addr);
+
+ return bfrom_SpiBoot(addr, BFLAG_PERIPHERAL | 4, 0, NULL);
+}
+
+U_BOOT_CMD(spibootldr, 2, 0, do_spibootldr,
+ "boot ldr image from spi",
+ "[offset]\n"
+ " - boot ldr image stored at offset into spi\n");