ARM: imx: cm_fx6: export board and soc info to env
authorChristopher Spinrath <christopher.spinrath@rwth-aachen.de>
Tue, 9 Jan 2018 21:01:35 +0000 (22:01 +0100)
committerStefano Babic <sbabic@denx.de>
Fri, 12 Jan 2018 13:28:04 +0000 (14:28 +0100)
Like many other i.MX6 based boards, there are multiple variants of
the cm-fx6 module featuring different SoC variants. Furthermore, the
module can be paired with multiple baseboards.

At the same time modern distribution like Fedora require U-Boot to
select a proper devicetree which depends on the SoC variant and the
baseboard.

Thus, export the SoC variant and the actual board to the environment
following the conventions of other i.MX6 devices (e.g. the NXP boards)
such that the environment can select a devicetree file to load.

For now, we only know for sure that the cm-fx6 module and the SB-fx6m
baseboard amount to a Utilite Computer variant (depending on the SoC).
Further combinations may be added in the future; e.g. CompuLab's
evaluation board once someone can verify the identification string
stored in its eeprom.

Signed-off-by: Christopher Spinrath <christopher.spinrath@rwth-aachen.de>
Reviewed-by: Stefano Babic <sbabic@denx.de>
arch/arm/mach-imx/mx6/Kconfig
board/compulab/cm_fx6/cm_fx6.c
include/configs/cm_fx6.h

index c11c02c87b9d8100b2479e2ba9ec1458ec22cb68..2f3e52d6240ccc4363881125bc5c824c1e4c8a4f 100644 (file)
@@ -130,6 +130,7 @@ config TARGET_CM_FX6
        bool "CM-FX6"
        select SUPPORT_SPL
        select MX6QDL
+       select BOARD_LATE_INIT
        select DM
        select DM_SERIAL
        select DM_GPIO
index 620c3f2d0df18c6798942a55d5b83398737968ee..673de030714ff0b3f8ebe80816815ce49328bced 100644 (file)
@@ -621,6 +621,27 @@ int board_init(void)
        return 0;
 }
 
+int board_late_init(void)
+{
+#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+       char baseboard_name[16];
+       int err;
+
+       if (is_mx6dq())
+               env_set("board_rev", "MX6Q");
+       else if (is_mx6dl())
+               env_set("board_rev", "MX6DL");
+
+       err = cl_eeprom_get_product_name((uchar *)baseboard_name, 0);
+       if (err)
+               return 0;
+
+       if (!strncmp("SB-FX6m", baseboard_name, 7))
+               env_set("board_name", "Utilite");
+#endif
+       return 0;
+}
+
 int checkboard(void)
 {
        puts("Board: CM-FX6\n");
index ec3e6e6ca52a1d69f75b3a177ae4c5ceeb9c743b..cb71ea88116ced9565f24719922e86dce5701ef2 100644 (file)
@@ -67,6 +67,7 @@
 #define CONFIG_ENV_OFFSET              (768 * 1024)
 
 #ifndef CONFIG_SPL_BUILD
+#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
 #define CONFIG_EXTRA_ENV_SETTINGS \
        "fdt_high=0xffffffff\0" \
        "initrd_high=0xffffffff\0" \