From: Jit Loon Lim <jit.loon.lim@intel.com>
To: u-boot@lists.denx.de
Cc: Jagan Teki <jagan@amarulasolutions.com>,
Vignesh R <vigneshr@ti.com>, Marek <marex@denx.de>,
Simon <simon.k.r.goldschmidt@gmail.com>,
Tien Fong <tien.fong.chee@intel.com>,
Kok Kiang <kok.kiang.hea@intel.com>,
Siew Chin <elly.siew.chin.lim@intel.com>,
Sin Hui <sin.hui.kho@intel.com>, Raaj <raaj.lokanathan@intel.com>,
Dinesh <dinesh.maniyam@intel.com>,
Boon Khai <boon.khai.ng@intel.com>,
Alif <alif.zakuan.yuslaimi@intel.com>,
Teik Heng <teik.heng.chong@intel.com>,
Hazim <muhammad.hazim.izzat.zamri@intel.com>,
Jit Loon Lim <jit.loon.lim@intel.com>,
Sieu Mun Tang <sieu.mun.tang@intel.com>
Subject: [PATCH 1/2] spl: socfpga: Getting SPL boot device from DT
Date: Fri, 16 Sep 2022 22:23:35 +0800 [thread overview]
Message-ID: <20220916142336.18907-1-jit.loon.lim@intel.com> (raw)
From: Tien Fong Chee <tien.fong.chee@intel.com>
Current SPL boot device is harcoded with MMC1, this implementation
would inhibit the support of other boot device. So, this patch is
created to get the boot device from DT, user should define the boot
device in property "u-boot,boot0". Default MMC1 would be boot device if
no boot device is defined in DT.
Signed-off-by: Tien Fong Chee <tien.fong.chee@intel.com>
Signed-off-by: Jit Loon Lim <jit.loon.lim@intel.com>
---
arch/arm/dts/socfpga_stratix10_socdk.dts | 1 +
arch/arm/mach-socfpga/spl_s10.c | 65 ++++++++++++++++++++++++
2 files changed, 66 insertions(+)
diff --git a/arch/arm/dts/socfpga_stratix10_socdk.dts b/arch/arm/dts/socfpga_stratix10_socdk.dts
index 8aa55a60ab..c8e9261f48 100755
--- a/arch/arm/dts/socfpga_stratix10_socdk.dts
+++ b/arch/arm/dts/socfpga_stratix10_socdk.dts
@@ -16,6 +16,7 @@
chosen {
stdout-path = "serial0:115200n8";
+ u-boot,boot0 = <&mmc>;
};
leds {
diff --git a/arch/arm/mach-socfpga/spl_s10.c b/arch/arm/mach-socfpga/spl_s10.c
index dad2ac5d0d..c4b82ebf14 100644
--- a/arch/arm/mach-socfpga/spl_s10.c
+++ b/arch/arm/mach-socfpga/spl_s10.c
@@ -13,6 +13,8 @@
#include <asm/utils.h>
#include <common.h>
#include <debug_uart.h>
+#include <dm.h>
+#include <dm/ofnode.h>
#include <image.h>
#include <spl.h>
#include <asm/arch/clock_manager.h>
@@ -27,6 +29,69 @@
DECLARE_GLOBAL_DATA_PTR;
+u32 spl_boot_device(void)
+{
+ int ret, size;
+ ofnode node;
+ const fdt32_t *phandle_p;
+ u32 phandle;
+ struct udevice *dev;
+
+ node = ofnode_path("/chosen");
+ if (!ofnode_valid(node)) {
+ debug("%s: /chosen node was not found.\n", __func__);
+ goto fallback;
+ }
+
+ phandle_p = ofnode_get_property(node, "u-boot,boot0", &size);
+ if (!phandle_p) {
+ debug("%s: u-boot,boot0 property was not found.\n",
+ __func__);
+ goto fallback;
+ }
+
+ phandle = fdt32_to_cpu(*phandle_p);
+
+ node = ofnode_get_by_phandle(phandle);
+
+ ret = device_get_global_by_ofnode(node, &dev);
+ if (ret) {
+ debug("%s: Boot device at not found, error: %d\n", __func__,
+ ret);
+ goto fallback;
+ }
+
+ debug("%s: Found boot device %s\n", __func__, dev->name);
+
+ switch (device_get_uclass_id(dev)) {
+ case UCLASS_SPI_FLASH:
+ return BOOT_DEVICE_SPI;
+ case UCLASS_MISC:
+ return BOOT_DEVICE_NAND;
+ case UCLASS_MMC:
+ return BOOT_DEVICE_MMC1;
+ default:
+ debug("%s: Booting from device uclass '%s' is not "
+ "supported\n", __func__,
+ dev_get_uclass_name(dev));
+ }
+
+fallback:
+ /* Return default boot device */
+ return BOOT_DEVICE_MMC1;
+}
+
+#ifdef CONFIG_SPL_MMC_SUPPORT
+u32 spl_mmc_boot_mode(const u32 boot_device)
+{
+#if defined(CONFIG_SPL_FS_FAT) || defined(CONFIG_SPL_FS_EXT4)
+ return MMCSD_MODE_FS;
+#else
+ return MMCSD_MODE_RAW;
+#endif
+}
+#endif
+
void board_init_f(ulong dummy)
{
const struct cm_config *cm_default_cfg = cm_get_default_config();
--
2.26.2
next reply other threads:[~2022-09-16 14:23 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-16 14:23 Jit Loon Lim [this message]
2022-09-16 14:23 ` [PATCH 2/2] arm: spl: create a common spl for Stratix10 and Agilex Jit Loon Lim
2022-09-16 14:31 ` [PATCH 1/2] spl: socfpga: Getting SPL boot device from DT Quentin Schulz
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=20220916142336.18907-1-jit.loon.lim@intel.com \
--to=jit.loon.lim@intel.com \
--cc=alif.zakuan.yuslaimi@intel.com \
--cc=boon.khai.ng@intel.com \
--cc=dinesh.maniyam@intel.com \
--cc=elly.siew.chin.lim@intel.com \
--cc=jagan@amarulasolutions.com \
--cc=kok.kiang.hea@intel.com \
--cc=marex@denx.de \
--cc=muhammad.hazim.izzat.zamri@intel.com \
--cc=raaj.lokanathan@intel.com \
--cc=sieu.mun.tang@intel.com \
--cc=simon.k.r.goldschmidt@gmail.com \
--cc=sin.hui.kho@intel.com \
--cc=teik.heng.chong@intel.com \
--cc=tien.fong.chee@intel.com \
--cc=u-boot@lists.denx.de \
--cc=vigneshr@ti.com \
/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