board: stm32mp1: set environment variable fdtfile
authorPatrick Delaunay <patrick.delaunay@st.com>
Wed, 22 Apr 2020 12:29:14 +0000 (14:29 +0200)
committerPatrick Delaunay <patrick.delaunay@st.com>
Thu, 14 May 2020 07:02:12 +0000 (09:02 +0200)
For booting Linux in the generic distro mechanism and support of
FDTDIR in extlinux.conf , cmd/pxe.c retrieves the FDT file name
from "fdtfile" environment variable.

Dynamically build this variable with compatible of STMicroelectronics
boards.

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Reviewed-by: Patrice Chotard <patrice.chotard@st.com>
board/st/stm32mp1/stm32mp1.c

index 62b648f6e47eb03e3b3e1848911f12798a8b39ce..c64f20ab08670fbb09503ff9bb9050b67575cc89 100644 (file)
@@ -699,10 +699,19 @@ int board_late_init(void)
        fdt_compat = fdt_getprop(gd->fdt_blob, 0, "compatible",
                                 &fdt_compat_len);
        if (fdt_compat && fdt_compat_len) {
-               if (strncmp(fdt_compat, "st,", 3) != 0)
+               if (strncmp(fdt_compat, "st,", 3) != 0) {
                        env_set("board_name", fdt_compat);
-               else
+               } else {
+                       char dtb_name[256];
+                       int buf_len = sizeof(dtb_name);
+
                        env_set("board_name", fdt_compat + 3);
+
+                       strncpy(dtb_name, fdt_compat + 3, buf_len);
+                       buf_len -= strlen(fdt_compat + 3);
+                       strncat(dtb_name, ".dtb", buf_len);
+                       env_set("fdtfile", dtb_name);
+               }
        }
        ret = uclass_get_device_by_driver(UCLASS_MISC,
                                          DM_GET_DRIVER(stm32mp_bsec),