diff options
author | Ye Li | 2022-07-26 16:40:34 +0800 |
---|---|---|
committer | Stefano Babic | 2022-07-26 11:29:00 +0200 |
commit | bf43907f6e3280646116bded58e74b509f5eaed1 (patch) | |
tree | 945c3a5863411bee94cc5542ba8a78b07e725e9e /arch | |
parent | 9270cc8f3b0aeea05ee012b61b88c065c0a7785f (diff) |
imx: spl: Allow iMX7/8/8M to overwrite spl_board_boot_device
Move the default mapping of spl_boot_device to weak function of
spl_board_boot_device. So that every board of iMX7/8/8M can overwrite
this function to implement specific mapping.
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-imx/spl.c | 80 |
1 files changed, 38 insertions, 42 deletions
diff --git a/arch/arm/mach-imx/spl.c b/arch/arm/mach-imx/spl.c index e89e2277ef7..e5ad993b8d9 100644 --- a/arch/arm/mach-imx/spl.c +++ b/arch/arm/mach-imx/spl.c @@ -25,7 +25,43 @@ DECLARE_GLOBAL_DATA_PTR; __weak int spl_board_boot_device(enum boot_device boot_dev_spl) { - return 0; + switch (boot_dev_spl) { +#if defined(CONFIG_MX7) + case SD1_BOOT: + case MMC1_BOOT: + case SD2_BOOT: + case MMC2_BOOT: + case SD3_BOOT: + case MMC3_BOOT: + return BOOT_DEVICE_MMC1; +#elif defined(CONFIG_IMX8) + case MMC1_BOOT: + return BOOT_DEVICE_MMC1; + case SD2_BOOT: + return BOOT_DEVICE_MMC2_2; + case SD3_BOOT: + return BOOT_DEVICE_MMC1; + case FLEXSPI_BOOT: + return BOOT_DEVICE_SPI; +#elif defined(CONFIG_IMX8M) + case SD1_BOOT: + case MMC1_BOOT: + return BOOT_DEVICE_MMC1; + case SD2_BOOT: + case MMC2_BOOT: + return BOOT_DEVICE_MMC2; +#endif + case NAND_BOOT: + return BOOT_DEVICE_NAND; + case SPI_NOR_BOOT: + return BOOT_DEVICE_SPI; + case QSPI_BOOT: + return BOOT_DEVICE_NOR; + case USB_BOOT: + return BOOT_DEVICE_BOARD; + default: + return BOOT_DEVICE_NONE; + } } #if defined(CONFIG_MX6) @@ -140,47 +176,7 @@ u32 spl_boot_device(void) enum boot_device boot_device_spl = get_boot_device(); - if (IS_ENABLED(CONFIG_IMX8MM) || IS_ENABLED(CONFIG_IMX8MN) || - IS_ENABLED(CONFIG_IMX8MP)) - return spl_board_boot_device(boot_device_spl); - - switch (boot_device_spl) { -#if defined(CONFIG_MX7) - case SD1_BOOT: - case MMC1_BOOT: - case SD2_BOOT: - case MMC2_BOOT: - case SD3_BOOT: - case MMC3_BOOT: - return BOOT_DEVICE_MMC1; -#elif defined(CONFIG_IMX8) - case MMC1_BOOT: - return BOOT_DEVICE_MMC1; - case SD2_BOOT: - return BOOT_DEVICE_MMC2_2; - case SD3_BOOT: - return BOOT_DEVICE_MMC1; - case FLEXSPI_BOOT: - return BOOT_DEVICE_SPI; -#elif defined(CONFIG_IMX8M) - case SD1_BOOT: - case MMC1_BOOT: - return BOOT_DEVICE_MMC1; - case SD2_BOOT: - case MMC2_BOOT: - return BOOT_DEVICE_MMC2; -#endif - case NAND_BOOT: - return BOOT_DEVICE_NAND; - case SPI_NOR_BOOT: - return BOOT_DEVICE_SPI; - case QSPI_BOOT: - return BOOT_DEVICE_NOR; - case USB_BOOT: - return BOOT_DEVICE_BOARD; - default: - return BOOT_DEVICE_NONE; - } + return spl_board_boot_device(boot_device_spl); } #endif /* CONFIG_MX7 || CONFIG_IMX8M || CONFIG_IMX8 */ |