From: Tom Rini <trini@ti.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v7 23/29] SPL: Add NOR flash booting support
Date: Mon, 24 Sep 2012 17:31:01 -0700 [thread overview]
Message-ID: <1348533068-13038-24-git-send-email-trini@ti.com> (raw)
In-Reply-To: <1348533068-13038-1-git-send-email-trini@ti.com>
From: Stefan Roese <sr@denx.de>
SPL NOR flash booting support is quite simple. Only copying of the
images is needed.
On MPC5xxx we need to make sure to only use the standard memcpy()
implementation and not the MPC5xxx specific one. As the MPC5xxx
version has some complexity which is not needed for this SPL
booting.
Signed-off-by: Stefan Roese <sr@denx.de>
Signed-off-by: Tom Rini <trini@ti.com>
---
Changes in v5:
- Add Stefan's patch for NOR loading in SPL
- Drop mpc5xxx-specific memcpy changes, these should be handled by the Makefile logic (noticed by Daniel Schwierzeck, changed by me)
common/spl/Makefile | 1 +
common/spl/spl.c | 5 ++++
common/spl/spl_nor.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++
include/spl.h | 3 +++
4 files changed, 71 insertions(+)
create mode 100644 common/spl/spl_nor.c
diff --git a/common/spl/Makefile b/common/spl/Makefile
index b9c9fd8..7cf01ad 100644
--- a/common/spl/Makefile
+++ b/common/spl/Makefile
@@ -15,6 +15,7 @@ LIB = $(obj)libspl.o
ifdef CONFIG_SPL_BUILD
COBJS-$(CONFIG_SPL_FRAMEWORK) += spl.o
+COBJS-$(CONFIG_SPL_NOR_SUPPORT) += spl_nor.o
COBJS-$(CONFIG_SPL_YMODEM_SUPPORT) += spl_ymodem.o
COBJS-$(CONFIG_SPL_NAND_SUPPORT) += spl_nand.o
endif
diff --git a/common/spl/spl.c b/common/spl/spl.c
index 3b4fcba..3156401 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -142,6 +142,11 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
spl_nand_load_image();
break;
#endif
+#ifdef CONFIG_SPL_NOR_SUPPORT
+ case BOOT_DEVICE_NOR:
+ spl_nor_load_image();
+ break;
+#endif
#ifdef CONFIG_SPL_YMODEM_SUPPORT
case BOOT_DEVICE_UART:
spl_ymodem_load_image();
diff --git a/common/spl/spl_nor.c b/common/spl/spl_nor.c
new file mode 100644
index 0000000..976e865
--- /dev/null
+++ b/common/spl/spl_nor.c
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2012 Stefan Roese <sr@denx.de>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <common.h>
+#include <spl.h>
+
+void spl_nor_load_image(void)
+{
+ /*
+ * Loading of the payload to SDRAM is done with skipping of
+ * the mkimage header in this SPL NOR driver
+ */
+ spl_image.flags |= SPL_COPY_PAYLOAD_ONLY;
+
+ if (spl_start_uboot()) {
+ /*
+ * Load real U-Boot from its location in NOR flash to its
+ * defined location in SDRAM
+ */
+ spl_parse_image_header(
+ (const struct image_header *)CONFIG_SYS_UBOOT_BASE);
+
+ memcpy((void *)spl_image.load_addr,
+ (void *)(CONFIG_SYS_UBOOT_BASE +
+ sizeof(struct image_header)),
+ spl_image.size);
+ } else {
+ /*
+ * Load Linux from its location in NOR flash to its defined
+ * location in SDRAM
+ */
+ spl_parse_image_header(
+ (const struct image_header *)CONFIG_SYS_OS_BASE);
+
+ memcpy((void *)spl_image.load_addr,
+ (void *)(CONFIG_SYS_OS_BASE +
+ sizeof(struct image_header)),
+ spl_image.size);
+
+ /*
+ * Copy DT blob (fdt) to SDRAM. Passing pointer to flash
+ * doesn't work (16 KiB should be enough for DT)
+ */
+ memcpy((void *)CONFIG_SYS_SPL_ARGS_ADDR,
+ (void *)(CONFIG_SYS_FDT_BASE),
+ (16 << 10));
+ }
+}
diff --git a/include/spl.h b/include/spl.h
index 2923cd2..e405386 100644
--- a/include/spl.h
+++ b/include/spl.h
@@ -56,6 +56,9 @@ void spl_display_print(void);
/* NAND SPL functions */
void spl_nand_load_image(void);
+/* NOR SPL functions */
+void spl_nor_load_image(void);
+
/* MMC SPL functions */
void spl_mmc_load_image(void);
--
1.7.9.5
next prev parent reply other threads:[~2012-09-25 0:31 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-25 0:30 [U-Boot] [PATCH v7 0/29] ARM: SPL: Make more generic, merge DaVinci and OMAP Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 01/29] Makefile: Move SPL files to clobber, remove from clean Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 02/29] spl_mmc: Make FAT checks / calls guarded with CONFIG_SPL_FAT_SUPPORT Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 03/29] omap-common: SPL: Add CONFIG_SPL_DISPLAY_PRINT / spl_display_print() Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 04/29] omap-common: Fix typo in save_boot_params() in lowlevel_init.S Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 05/29] omap-common: SPL: Fix whitespace in omap-common/u-boot-spl.lds Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 06/29] ARM: SPL: Rename omap_boot_device to spl_boot_device Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 07/29] ARM: SPL: Rename omap_boot_mode to spl_boot_mode() Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 08/29] ARM: SPL: Remove NAND_MODE_HW_ECC from spl_nand.c Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 09/29] ARM: SPL: Only call mem_malloc_init if configured Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 10/29] ARM: SPL: Add <asm/spl.h> and <asm/arch/spl.h> Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 11/29] ARM: SPL: Make spl_mmc.c more generic Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 12/29] ARM: SPL: Clean up spl.c / spl_nand.c slightly Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 13/29] ARM: SPL: Start hooking in the current SPI SPL support Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 14/29] ARM: SPL: Move gpmc_init() to spl_board_init() Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 15/29] SPL: Move the omap SPL framework to common/spl Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 16/29] SPL: Create arch/arm/lib/spl.c for board_init_f and jump_to_image_linux Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 17/29] SPL: do not use fix value for u-boot size Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 18/29] SPL: Use image_get_xxx() functions to access header values Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 19/29] SPL: NAND: Move arch/arm/cpu/armv7/omap-common/spl_nand.c to common/spl Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 20/29] ARM: SPL: Convert davinci to CONFIG_SPL_FRAMEWORK Tom Rini
2012-09-27 18:20 ` Tom Rini
2012-09-25 0:30 ` [U-Boot] [PATCH v7 21/29] hawkboard: Update config file to work with common spl framework Tom Rini
2012-09-25 0:31 ` [U-Boot] [PATCH v7 22/29] da850: Add README.da850 Tom Rini
2012-09-25 0:31 ` Tom Rini [this message]
2012-09-25 0:31 ` [U-Boot] [PATCH v7 24/29] SPL: Add option to skip copying of the mkimage header Tom Rini
2012-09-25 0:31 ` [U-Boot] [PATCH v7 25/29] SPL: SPI: Enhance spi_spl_load to match the other load functions Tom Rini
2012-09-25 0:31 ` [U-Boot] [PATCH v7 26/29] SPL: Enable use of custom defined U-Boot entry point Tom Rini
2012-09-25 0:31 ` [U-Boot] [PATCH v7 27/29] SPL: Make un-supported boot device puts a debug instead Tom Rini
2012-09-25 0:31 ` [U-Boot] [PATCH v7 28/29] SPL: Rework how we inform about un-headered images Tom Rini
2012-09-25 0:31 ` [U-Boot] [PATCH v7 29/29] SPL: Add support for loading image from ram in SPL Tom Rini
2012-09-27 20:04 ` [U-Boot] [PATCH v7 0/29] ARM: SPL: Make more generic, merge DaVinci and OMAP Tom Rini
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=1348533068-13038-24-git-send-email-trini@ti.com \
--to=trini@ti.com \
--cc=u-boot@lists.denx.de \
/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