]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
imx9: Improve boot mode autodetection
authorBenjamin Szőke <egyszeregy@freemail.hu>
Fri, 1 Nov 2024 15:26:18 +0000 (16:26 +0100)
committerFabio Estevam <festevam@gmail.com>
Sat, 9 Nov 2024 11:54:01 +0000 (08:54 -0300)
Improve "mmcautodetect=yes" boot mode autodetection to able to use it
if CONFIG_ENV_IS_NOWHERE=y is used for i.MX9 SoCs and i.MX93 EVK board.

If both CONFIG_ENV_IS_IN_MMC=y and CONFIG_ENV_IS_NOWHERE=y are in the
defconfig, CONFIG_ENV_IS_IN_MMC=y will be overiden default
CONFIG_ENV_IS_NOWHERE settings.

Goal is in this patch to able to use the boot mode autodetection
if defconfig use only CONFIG_ENV_IS_NOWHERE=y option
(without CONFIG_ENV_IS_IN_MMC) for any i.MX9 SoC.

Signed-off-by: Benjamin Szőke <egyszeregy@freemail.hu>
arch/arm/mach-imx/imx9/soc.c
board/freescale/imx93_evk/imx93_evk.c
include/configs/imx93_evk.h

index 7c28fa39e14e824ab6ed584d7b3b933304968036..21e0e7dd1e8064d2cda222060c8dda1d7fce2e2d 100644 (file)
@@ -42,12 +42,18 @@ DECLARE_GLOBAL_DATA_PTR;
 
 struct rom_api *g_rom_api = (struct rom_api *)0x1980;
 
-#ifdef CONFIG_ENV_IS_IN_MMC
+#if CONFIG_IS_ENABLED(ENV_IS_IN_MMC) || CONFIG_IS_ENABLED(ENV_IS_NOWHERE)
 __weak int board_mmc_get_env_dev(int devno)
 {
        return devno;
 }
 
+#ifdef CONFIG_SYS_MMC_ENV_DEV
+#define IMX9_MMC_ENV_DEV CONFIG_SYS_MMC_ENV_DEV
+#else
+#define IMX9_MMC_ENV_DEV 0
+#endif
+
 int mmc_get_env_dev(void)
 {
        int ret;
@@ -59,7 +65,7 @@ int mmc_get_env_dev(void)
 
        if (ret != ROM_API_OKAY) {
                puts("ROMAPI: failure at query_boot_info\n");
-               return CONFIG_SYS_MMC_ENV_DEV;
+               return IMX9_MMC_ENV_DEV;
        }
 
        boot_type = boot >> 16;
@@ -69,7 +75,7 @@ int mmc_get_env_dev(void)
 
        /* If not boot from sd/mmc, use default value */
        if (boot_type != BOOT_TYPE_SD && boot_type != BOOT_TYPE_MMC)
-               return env_get_ulong("mmcdev", 10, CONFIG_SYS_MMC_ENV_DEV);
+               return env_get_ulong("mmcdev", 10, IMX9_MMC_ENV_DEV);
 
        return board_mmc_get_env_dev(boot_instance);
 }
index 341831a7d30d5f7c5063a2f07a035c3b67b4340e..c9171df330e2ffe519807b5f04ec2b7bdadf84f9 100644 (file)
@@ -58,7 +58,7 @@ int board_init(void)
 
 int board_late_init(void)
 {
-#ifdef CONFIG_ENV_IS_IN_MMC
+#if CONFIG_IS_ENABLED(ENV_IS_IN_MMC) || CONFIG_IS_ENABLED(ENV_IS_NOWHERE)
        board_late_mmc_env_init();
 #endif
 
index 53fb8c9b1ba8ddbbdb6fb673071737f702321841..260a5043d5370478a6245bd4eafcf5f1c24b495a 100644 (file)
 #define BOOTENV
 #endif
 
+#ifdef CONFIG_SYS_MMC_ENV_DEV
+#define IMX93_EVK_MMC_ENV_DEV CONFIG_SYS_MMC_ENV_DEV
+#else
+#define IMX93_EVK_MMC_ENV_DEV 0
+#endif
+
 /* Initial environment variables */
 #define CFG_EXTRA_ENV_SETTINGS         \
        BOOTENV \
@@ -42,7 +48,7 @@
        "boot_fit=no\0" \
        "fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
        "bootm_size=0x10000000\0" \
-       "mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \
+       "mmcdev=" __stringify(IMX93_EVK_MMC_ENV_DEV)"\0" \
        "mmcpart=1\0" \
        "mmcroot=/dev/mmcblk1p2 rootwait rw\0" \
        "mmcautodetect=yes\0" \