[PATCH v2 3/3] renesas: rcar3: Load the correct device tree

Detlev Casanova detlev.casanova at collabora.com
Mon Jun 12 21:51:07 CEST 2023


The Renesas R-Car Gen3 boards use different device trees than
the default one.

This commit uses the sysinfo's board id and revision
to determine which linux device tree to load:
 * H3 (Starter Kit Premier v2.0): renesas/r8a77951-ulcb.dtb
 * H3e (Starter Kit Premier v2.1): renesas/r8a779m1-ulcb.dtb

Signed-off-by: Detlev Casanova <detlev.casanova at collabora.com>
---
 board/renesas/ulcb/ulcb.c    | 59 ++++++++++++++++++++++++++++++++++++
 configs/rcar3_ulcb_defconfig |  1 +
 2 files changed, 60 insertions(+)

diff --git a/board/renesas/ulcb/ulcb.c b/board/renesas/ulcb/ulcb.c
index 1477750f921..cc78e0952b6 100644
--- a/board/renesas/ulcb/ulcb.c
+++ b/board/renesas/ulcb/ulcb.c
@@ -27,6 +27,7 @@
 #include <asm/arch/sh_sdhi.h>
 #include <i2c.h>
 #include <mmc.h>
+#include <sysinfo.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -65,6 +66,64 @@ int board_init(void)
 	return 0;
 }
 
+int misc_init_r(void)
+{
+	struct udevice *dev;
+	int board_id;
+	int rev_major, rev_minor;
+	int ret = sysinfo_get(&dev);
+
+	if (ret) {
+		debug("Cannot get sysinfo: %d\n", ret);
+		return 0;
+	}
+
+	ret = sysinfo_detect(dev);
+	if (ret) {
+		debug("Cannot detect sysinfo: %d\n", ret);
+		return 0;
+	}
+
+	ret = sysinfo_get_int(dev,
+			      SYSINFO_ID_BOARD_MODEL,
+			      &board_id);
+
+	if (ret) {
+		debug("Cannot get sysinfo int: %d\n", ret);
+		return 0;
+	}
+
+	ret = sysinfo_get_int(dev,
+			      RCAR_SYSINFO_REV_MAJOR,
+			      &rev_major);
+
+	if (ret) {
+		debug("Cannot get sysinfo int: %d\n", ret);
+		return 0;
+	}
+
+	ret = sysinfo_get_int(dev,
+			      RCAR_SYSINFO_REV_MINOR,
+			      &rev_minor);
+
+	if (ret) {
+		debug("Cannot get sysinfo int: %d\n", ret);
+		return 0;
+	}
+
+	if (board_id == BOARD_STARTER_KIT_PRE && rev_major == '2') {
+		/*
+		 * H3 and H3e boards
+		 */
+		if (rev_minor == '0')
+			env_set("fdtfile", "renesas/r8a77951-ulcb.dtb");
+		else if (rev_minor == '1')
+			env_set("fdtfile", "renesas/r8a779m1-ulcb.dtb");
+	}
+
+	return 0;
+}
+
 #ifdef CONFIG_MULTI_DTB_FIT
 int board_fit_config_name_match(const char *name)
 {
diff --git a/configs/rcar3_ulcb_defconfig b/configs/rcar3_ulcb_defconfig
index b8fdb5e3826..752d33d77ec 100644
--- a/configs/rcar3_ulcb_defconfig
+++ b/configs/rcar3_ulcb_defconfig
@@ -111,3 +111,4 @@ CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_GENERIC=y
 CONFIG_USB_STORAGE=y
+CONFIG_MISC_INIT_R=y
-- 
2.39.3



More information about the U-Boot mailing list