[PATCH v2 11/14] spl: mmc: Try to clean up raw-mode options
Quentin Schulz
quentin.schulz at cherry.de
Tue Aug 6 16:53:04 CEST 2024
Hi Simon,
On 7/21/24 5:25 PM, Simon Glass wrote:
> Make the raw-mode options depend on SPL_SYS_MMCSD_RAW_MODE in a more
> direct way. This makes it easier to understand the options with
> 'make menuconfig'.
>
> There are three different ways of specifying the offset:
>
> - sector offset
> - partition number
> - partition type
>
> So make these a choice, so it is more obvious what is going on.
>
> Update existing boards to enable SPL_SYS_MMCSD_RAW_MODE where needed.
>
> Reviewed-by: Sean Anderson <seanga2 at gmail.com>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> (no changes since v1)
>
> arch/arm/mach-imx/imx8m/soc.c | 2 +
> arch/arm/mach-imx/spl_imx_romapi.c | 13 ++++-
> .../imx8mp_rsb3720a1/imx8mp_rsb3720a1.c | 4 +-
> common/spl/Kconfig | 52 +++++++++++--------
> configs/am335x_guardian_defconfig | 2 +-
> configs/am335x_pdu001_defconfig | 2 +-
> configs/am3517_evm_defconfig | 2 +-
> configs/am62ax_evm_a53_defconfig | 1 +
> configs/am62ax_evm_r5_defconfig | 1 +
> configs/am62px_evm_a53_defconfig | 1 +
> configs/am62px_evm_r5_defconfig | 1 +
> configs/am62x_beagleplay_a53_defconfig | 1 +
> configs/am62x_beagleplay_r5_defconfig | 1 +
> configs/am62x_evm_a53_defconfig | 1 +
> configs/am62x_evm_r5_defconfig | 1 +
> configs/am64x_evm_a53_defconfig | 1 +
> configs/am64x_evm_r5_defconfig | 1 +
> configs/am65x_evm_a53_defconfig | 1 +
> configs/am65x_evm_r5_defconfig | 1 +
> configs/brppt2_defconfig | 2 +-
> configs/brsmarc1_defconfig | 2 +-
> configs/cgtqmx8_defconfig | 1 +
> configs/chromebit_mickey_defconfig | 2 +-
> configs/chromebook_jerry_defconfig | 2 +-
> configs/chromebook_minnie_defconfig | 2 +-
> configs/chromebook_speedy_defconfig | 2 +-
> configs/ci20_mmc_defconfig | 1 +
> configs/da850evm_defconfig | 2 +-
> configs/da850evm_nand_defconfig | 2 +-
> configs/deneb_defconfig | 1 +
> configs/display5_defconfig | 2 +-
> configs/display5_factory_defconfig | 2 +-
> configs/draco-rastaban_defconfig | 2 +-
> configs/draco-thuban_defconfig | 2 +-
> .../gardena-smart-gateway-at91sam_defconfig | 2 +-
> configs/giedi_defconfig | 1 +
> configs/imx28_xea_defconfig | 1 +
> configs/imx28_xea_sb_defconfig | 1 +
> configs/imx6q_logic_defconfig | 2 +-
> configs/imx8mm-cl-iot-gate-optee_defconfig | 1 +
> configs/imx8mm-cl-iot-gate_defconfig | 1 +
> configs/imx8mm-icore-mx8mm-ctouch2_defconfig | 1 +
> configs/imx8mm-icore-mx8mm-edimm2.2_defconfig | 1 +
> configs/imx8mm-mx8menlo_defconfig | 1 +
> configs/imx8mm-phygate-tauri-l_defconfig | 1 +
> configs/imx8mm_beacon_defconfig | 1 +
> configs/imx8mm_beacon_fspi_defconfig | 1 +
> configs/imx8mm_data_modul_edm_sbc_defconfig | 1 +
> configs/imx8mm_evk_defconfig | 1 +
> configs/imx8mm_evk_fspi_defconfig | 1 +
> configs/imx8mm_phg_defconfig | 1 +
> configs/imx8mm_venice_defconfig | 1 +
> configs/imx8mn_beacon_2g_defconfig | 1 +
> configs/imx8mn_beacon_defconfig | 1 +
> configs/imx8mn_beacon_fspi_defconfig | 1 +
> configs/imx8mn_bsh_smm_s2_defconfig | 1 +
> configs/imx8mn_bsh_smm_s2pro_defconfig | 1 +
> configs/imx8mn_ddr4_evk_defconfig | 1 +
> configs/imx8mn_evk_defconfig | 1 +
> configs/imx8mn_var_som_defconfig | 1 +
> configs/imx8mn_venice_defconfig | 1 +
> configs/imx8mp-icore-mx8mp-edimm2.2_defconfig | 1 +
> configs/imx8mp_beacon_defconfig | 1 +
> configs/imx8mp_data_modul_edm_sbc_defconfig | 1 +
> configs/imx8mp_debix_model_a_defconfig | 1 +
> configs/imx8mp_dhcom_pdk2_defconfig | 1 +
> configs/imx8mp_dhcom_pdk3_defconfig | 1 +
> configs/imx8mp_evk_defconfig | 1 +
> configs/imx8mp_rsb3720a1_4G_defconfig | 2 +
> configs/imx8mp_rsb3720a1_6G_defconfig | 1 +
> configs/imx8mp_venice_defconfig | 1 +
> configs/imx8mq_cm_defconfig | 1 +
> configs/imx8mq_evk_defconfig | 1 +
> configs/imx8mq_phanbell_defconfig | 1 +
> configs/imx8mq_reform2_defconfig | 1 +
> configs/imx8qm_mek_defconfig | 1 +
> configs/imx8qxp_mek_defconfig | 1 +
> configs/imx8ulp_evk_defconfig | 1 +
> configs/imx93-phyboard-segin_defconfig | 1 +
> configs/imx93_11x11_evk_defconfig | 1 +
> configs/imx93_11x11_evk_ld_defconfig | 1 +
> configs/imx93_var_som_defconfig | 1 +
> configs/imxrt1020-evk_defconfig | 1 +
> configs/imxrt1050-evk_defconfig | 1 +
> configs/imxrt1050-evk_fspi_defconfig | 1 +
> configs/imxrt1170-evk_defconfig | 1 +
> configs/iot2050_defconfig | 1 +
> configs/j7200_evm_a72_defconfig | 1 +
> configs/j7200_evm_r5_defconfig | 1 +
> configs/j721e_beagleboneai64_a72_defconfig | 1 +
> configs/j721e_beagleboneai64_r5_defconfig | 1 +
> configs/j721e_evm_a72_defconfig | 1 +
> configs/j721e_evm_r5_defconfig | 1 +
> configs/j721s2_evm_a72_defconfig | 1 +
> configs/j721s2_evm_r5_defconfig | 1 +
> configs/j722s_evm_a53_defconfig | 1 +
> configs/j722s_evm_r5_defconfig | 1 +
> configs/j784s4_evm_a72_defconfig | 1 +
> configs/j784s4_evm_r5_defconfig | 1 +
> configs/kontron-sl-mx8mm_defconfig | 1 +
> configs/kontron_pitx_imx8m_defconfig | 1 +
> configs/kontron_sl28_defconfig | 1 +
> configs/librem5_defconfig | 1 +
> configs/ls1021aiot_sdcard_defconfig | 1 +
> configs/ls1021aqds_nand_defconfig | 1 +
> configs/ls1021aqds_sdcard_ifc_defconfig | 1 +
> configs/ls1021aqds_sdcard_qspi_defconfig | 1 +
> configs/ls1021atsn_sdcard_defconfig | 1 +
> ...s1021atwr_sdcard_ifc_SECURE_BOOT_defconfig | 1 +
> configs/ls1021atwr_sdcard_ifc_defconfig | 1 +
> configs/ls1021atwr_sdcard_qspi_defconfig | 1 +
> configs/msc_sm2s_imx8mp_defconfig | 1 +
> configs/omap35_logic_defconfig | 2 +-
> configs/omap35_logic_somlv_defconfig | 2 +-
> configs/omap3_logic_defconfig | 2 +-
> configs/omap3_logic_somlv_defconfig | 2 +-
> configs/phycore-imx8mm_defconfig | 1 +
> configs/phycore-imx8mp_defconfig | 1 +
> configs/phycore_am62x_a53_defconfig | 1 +
> configs/phycore_am62x_r5_defconfig | 1 +
> configs/phycore_am64x_a53_defconfig | 1 +
> configs/phycore_am64x_r5_defconfig | 1 +
> configs/pico-imx8mq_defconfig | 1 +
> configs/sama5d27_wlsom1_ek_mmc_defconfig | 2 +-
> .../sama5d27_wlsom1_ek_qspiflash_defconfig | 2 +-
> configs/sama5d2_icp_mmc_defconfig | 2 +-
> configs/sandbox_noinst_defconfig | 1 +
> configs/sniper_defconfig | 2 +-
> configs/socfpga_secu1_defconfig | 2 +-
> configs/verdin-am62_a53_defconfig | 1 +
> configs/verdin-am62_r5_defconfig | 1 +
> configs/verdin-imx8mm_defconfig | 1 +
> configs/verdin-imx8mp_defconfig | 1 +
> 133 files changed, 175 insertions(+), 52 deletions(-)
>
> diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c
> index be38ca52885..f30178ae213 100644
> --- a/arch/arm/mach-imx/imx8m/soc.c
> +++ b/arch/arm/mach-imx/imx8m/soc.c
> @@ -735,6 +735,7 @@ int boot_mode_getprisec(void)
> #endif
>
> #if defined(CONFIG_IMX8MN) || defined(CONFIG_IMX8MP)
> +#ifdef SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
> #define IMG_CNTN_SET1_OFFSET GENMASK(22, 19)
> unsigned long arch_spl_mmc_get_uboot_raw_sector(struct mmc *mmc,
> unsigned long raw_sect)
> @@ -769,6 +770,7 @@ unsigned long arch_spl_mmc_get_uboot_raw_sector(struct mmc *mmc,
>
> return raw_sect;
> }
> +#endif /* SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION */
> #endif
>
> bool is_usb_boot(void)
> diff --git a/arch/arm/mach-imx/spl_imx_romapi.c b/arch/arm/mach-imx/spl_imx_romapi.c
> index 9a86f5c133f..bdaea439d7f 100644
> --- a/arch/arm/mach-imx/spl_imx_romapi.c
> +++ b/arch/arm/mach-imx/spl_imx_romapi.c
> @@ -33,8 +33,17 @@ ulong spl_romapi_raw_seekable_read(u32 offset, u32 size, void *buf)
>
> ulong __weak spl_romapi_get_uboot_base(u32 image_offset, u32 rom_bt_dev)
> {
> - return image_offset +
> - (CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512 - 0x8000);
> + u32 sector = 0;
> +
> + /*
> + * Some boards use this value even though MMC is not enabled in SPL, for
> + * example imx8mn_bsh_smm_s2
> + */
> +#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
> + sector = CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR;
> +#endif
> +
> + return image_offset + sector * 512 - 0x8000;
> }
>
> static int is_boot_from_stream_device(u32 boot)
> diff --git a/board/advantech/imx8mp_rsb3720a1/imx8mp_rsb3720a1.c b/board/advantech/imx8mp_rsb3720a1/imx8mp_rsb3720a1.c
> index 070933fb54b..af083c3c38f 100644
> --- a/board/advantech/imx8mp_rsb3720a1/imx8mp_rsb3720a1.c
> +++ b/board/advantech/imx8mp_rsb3720a1/imx8mp_rsb3720a1.c
> @@ -190,7 +190,7 @@ int board_late_init(void)
> return 0;
> }
>
> -#ifdef CONFIG_SPL_MMC
> +#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
> #define UBOOT_RAW_SECTOR_OFFSET 0x40
> unsigned long board_spl_mmc_get_uboot_raw_sector(struct mmc *mmc,
> unsigned long raw_sector)
> @@ -204,4 +204,4 @@ unsigned long board_spl_mmc_get_uboot_raw_sector(struct mmc *mmc,
> return CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR;
> }
> }
> -#endif /* CONFIG_SPL_MMC */
> +#endif /* CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR */
> diff --git a/common/spl/Kconfig b/common/spl/Kconfig
> index af43b5f5d3c..55a42a3a7c7 100644
> --- a/common/spl/Kconfig
> +++ b/common/spl/Kconfig
> @@ -490,24 +490,45 @@ config SPL_DISPLAY_PRINT
> the board.
>
> config SPL_SYS_MMCSD_RAW_MODE
> - bool
> - help
> - Support booting from an MMC without a filesystem.
> -
> -config SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
> - bool "MMC raw mode: by sector"
> + bool "Use raw reads to locate the next boot phase"
> + depends on SPL_DM_MMC || SPL_MMC
This one is a weird one to me, we can have DM_MMC without MMC? Shouldn't
we fix it?
> default y if ARCH_SUNXI || ARCH_DAVINCI || ARCH_UNIPHIER || \
> ARCH_MX6 || ARCH_MX7 || \
> ARCH_ROCKCHIP || ARCH_MVEBU || ARCH_SOCFPGA || \
> ARCH_AT91 || ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || \
> OMAP44XX || OMAP54XX || AM33XX || AM43XX || \
> TARGET_SIFIVE_UNLEASHED || TARGET_SIFIVE_UNMATCHED
> + help
> + Support booting from an MMC without a filesystem.
> +
> +if SPL_SYS_MMCSD_RAW_MODE
> +
> +choice
> + prompt "Method for locating next phase of boot (e.g. U-Boot)"
> +
> +config SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
> + bool "MMC raw mode: by sector"
> select SPL_LOAD_BLOCK if SPL_MMC
We can remove the if SPL_MMC here as SPL_SYS_MMCSD_RAW_MODE already
depends on it and this choice is guarded by it.
> - select SPL_SYS_MMCSD_RAW_MODE if SPL_MMC
> help
> Use sector number for specifying U-Boot location on MMC/SD in
> raw mode.
>
> +config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
> + bool "MMC Raw mode: by partition"
Lower case "raw" here to match the two other choices?
> + select SPL_LOAD_BLOCK if SPL_MMC
Ditto wrt SPL_MMC that I brought up earlier.
> + help
> + Use a partition for loading U-Boot when using MMC/SD in raw mode.
> +
> +config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
> + bool "MMC raw mode: by partition type"
> + depends on DOS_PARTITION && SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
This can never be met, as SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION is
another option in the same choice.
Cheers,
Quentin
More information about the U-Boot
mailing list