mirror of
https://github.com/LiBwrt-op/openwrt-6.x.git
synced 2025-12-16 16:57:28 +00:00
Build the (upstream) configuration for the MT7987 reference board, and enable support for DT-overlay application which will be necessary to use the image for the MT7987 RFB generated in OpenWrt. Adapt our downstream patches (generic reset button, rootdisk selection) for MT7987 to prepare for real-world boards. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
68 lines
1.5 KiB
Diff
68 lines
1.5 KiB
Diff
--- a/board/mediatek/mt7987/mt7987_rfb.c
|
|
+++ b/board/mediatek/mt7987/mt7987_rfb.c
|
|
@@ -10,7 +10,9 @@
|
|
#include <env.h>
|
|
#include <init.h>
|
|
#include <asm/global_data.h>
|
|
+#include <asm/io.h>
|
|
#include <linux/delay.h>
|
|
+#include <linux/libfdt.h>
|
|
|
|
#ifndef CONFIG_RESET_BUTTON_LABEL
|
|
#define CONFIG_RESET_BUTTON_LABEL "reset"
|
|
@@ -38,3 +40,54 @@ int board_late_init(void)
|
|
env_relocate();
|
|
return 0;
|
|
}
|
|
+
|
|
+#define MT7987_BOOT_SD 0
|
|
+#define MT7987_BOOT_NOR 1
|
|
+#define MT7987_BOOT_SPIM_NAND 2
|
|
+#define MT7987_BOOT_EMMC 3
|
|
+
|
|
+int mtk_ft_system_setup(void *blob, struct bd_info *bd)
|
|
+{
|
|
+ const u32 *media_handle_p;
|
|
+ int chosen, len, ret;
|
|
+ const char *media;
|
|
+ u32 media_handle;
|
|
+
|
|
+ switch ((readl(0x1001f6f0) & 0xc0) >> 6) {
|
|
+ case MT7987_BOOT_SD:
|
|
+ media = "rootdisk-sd";
|
|
+ break
|
|
+ ;;
|
|
+ case MT7987_BOOT_NOR:
|
|
+ media = "rootdisk-nor";
|
|
+ break
|
|
+ ;;
|
|
+ case MT7987_BOOT_SPIM_NAND:
|
|
+ media = "rootdisk-spim-nand";
|
|
+ break
|
|
+ ;;
|
|
+ case MT7987_BOOT_EMMC:
|
|
+ media = "rootdisk-emmc";
|
|
+ break
|
|
+ ;;
|
|
+ }
|
|
+
|
|
+ chosen = fdt_path_offset(blob, "/chosen");
|
|
+ if (chosen <= 0)
|
|
+ return 0;
|
|
+
|
|
+ media_handle_p = fdt_getprop(blob, chosen, media, &len);
|
|
+ if (media_handle_p <= 0 || len != 4)
|
|
+ return 0;
|
|
+
|
|
+ media_handle = *media_handle_p;
|
|
+ ret = fdt_setprop(blob, chosen, "rootdisk", &media_handle, sizeof(media_handle));
|
|
+ if (ret) {
|
|
+ printf("cannot set media phandle %s as rootdisk /chosen node\n", media);
|
|
+ return ret;
|
|
+ }
|
|
+
|
|
+ printf("set /chosen/rootdisk to bootrom media: %s (phandle 0x%08x)\n", media, fdt32_to_cpu(media_handle));
|
|
+
|
|
+ return 0;
|
|
+}
|