diff options
| author | Benjamin Szőke <[email protected]> | 2024-11-01 16:26:18 +0100 |
|---|---|---|
| committer | Fabio Estevam <[email protected]> | 2024-11-09 08:54:01 -0300 |
| commit | 6bc9d4407c354a21e2058b08f8fdb1e28d19e883 (patch) | |
| tree | e923c93207d82fc6d5d5754da2b33b10e7b8366a | |
| parent | 0bf7d6b4979835616f396337870d065543a2db4e (diff) | |
imx9: Improve boot mode autodetection
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 <[email protected]>
| -rw-r--r-- | arch/arm/mach-imx/imx9/soc.c | 12 | ||||
| -rw-r--r-- | board/freescale/imx93_evk/imx93_evk.c | 2 | ||||
| -rw-r--r-- | include/configs/imx93_evk.h | 8 |
3 files changed, 17 insertions, 5 deletions
diff --git a/arch/arm/mach-imx/imx9/soc.c b/arch/arm/mach-imx/imx9/soc.c index 7c28fa39e14..21e0e7dd1e8 100644 --- a/arch/arm/mach-imx/imx9/soc.c +++ b/arch/arm/mach-imx/imx9/soc.c @@ -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); } diff --git a/board/freescale/imx93_evk/imx93_evk.c b/board/freescale/imx93_evk/imx93_evk.c index 341831a7d30..c9171df330e 100644 --- a/board/freescale/imx93_evk/imx93_evk.c +++ b/board/freescale/imx93_evk/imx93_evk.c @@ -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 diff --git a/include/configs/imx93_evk.h b/include/configs/imx93_evk.h index 53fb8c9b1ba..260a5043d53 100644 --- a/include/configs/imx93_evk.h +++ b/include/configs/imx93_evk.h @@ -27,6 +27,12 @@ #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" \ |
