stm32mp1: add runtime information in environment
authorPatrick Delaunay <patrick.delaunay@st.com>
Wed, 27 Feb 2019 16:01:11 +0000 (17:01 +0100)
committerPatrick Delaunay <patrick.delaunay@st.com>
Fri, 12 Apr 2019 14:09:13 +0000 (16:09 +0200)
Set board name with the first dts compatible found in DT
code under CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG

The result with DEVICE_TREE=stm32mp157c-ev1 is:
    STM32MP> env print
     board=stm32mp1
     board_name=stm32mp157c-ev1

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
arch/arm/Kconfig
board/st/stm32mp1/stm32mp1.c

index 764547091c9b58b13205da9db40b4042db57b2b4..33628b86d45b4798d9b1045d44de6917e9e786b9 100644 (file)
@@ -1403,6 +1403,7 @@ config ARCH_STM32MP
        select SYSRESET
        select SYS_THUMB_BUILD
        imply CMD_DM
+       imply ENV_VARS_UBOOT_RUNTIME_CONFIG
        help
          Support for STM32MP SoC family developed by STMicroelectronics,
          MPUs based on ARM cortex A core
index 07d1addb2a83aa16628bd19d5647dddaa1be7c65..48da4599abb6da7554953d82789c0dc321593d86 100644 (file)
@@ -220,11 +220,6 @@ int board_usb_cleanup(int index, enum usb_init_type init)
        return 0;
 }
 
-int board_late_init(void)
-{
-       return 0;
-}
-
 /* board dependent setup after realloc */
 int board_init(void)
 {
@@ -236,3 +231,22 @@ int board_init(void)
 
        return 0;
 }
+
+int board_late_init(void)
+{
+#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+       const void *fdt_compat;
+       int fdt_compat_len;
+
+       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)
+                       env_set("board_name", fdt_compat);
+               else
+                       env_set("board_name", fdt_compat + 3);
+       }
+#endif
+
+       return 0;
+}