[PATCH RFC 1/2] board: visionfive2: Select fdtfile based on revision

Jami Kettunen jamipkettunen at gmail.com
Mon Sep 11 17:32:35 CEST 2023


From: Jami Kettunen <jami.kettunen at protonmail.com>

Linux mainline kernel device tree files[1] are named:
- jh7110-starfive-visionfive-2-v1.2a
- jh7110-starfive-visionfive-2-v1.3b

which should be selected accordingly by U-Boot to have a proper extlinux
experience with fdtdir set by the distribution.

[1] https://github.com/torvalds/linux/tree/master/arch/riscv/boot/dts/starfive

Signed-off-by: Jami Kettunen <jami.kettunen at protonmail.com>
---
 .../visionfive2/starfive_visionfive2.c        | 25 +++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/board/starfive/visionfive2/starfive_visionfive2.c b/board/starfive/visionfive2/starfive_visionfive2.c
index d609262b67..9244d4654b 100644
--- a/board/starfive/visionfive2/starfive_visionfive2.c
+++ b/board/starfive/visionfive2/starfive_visionfive2.c
@@ -10,6 +10,8 @@
 #include <cpu_func.h>
 #include <dm.h>
 #include <linux/bitops.h>
+#include <asm/arch-jh7110/eeprom.h>
+#include <env.h>
 
 #define JH7110_L2_PREFETCHER_BASE_ADDR		0x2030000
 #define JH7110_L2_PREFETCHER_HART_OFFSET	0x2000
@@ -41,6 +43,29 @@ int board_init(void)
 	return 0;
 }
 
+int misc_init_r(void)
+{
+	u8 rev;
+	const char *linux_dtb_file;
+
+	rev = get_pcb_revision_from_eeprom();
+	switch (rev) {
+	case 'a':
+	case 'A':
+		linux_dtb_file = "starfive/jh7110-starfive-visionfive-2-v1.2a.dtb";
+		break;
+
+	case 'b':
+	case 'B':
+	default:
+		linux_dtb_file = "starfive/jh7110-starfive-visionfive-2-v1.3b.dtb";
+		break;
+	};
+
+	env_set("fdtfile", linux_dtb_file);
+	return 0;
+}
+
 void *board_fdt_blob_setup(int *err)
 {
 	*err = 0;
-- 
2.42.0



More information about the U-Boot mailing list