[PATCH v2 11/14] spl: mmc: Try to clean up raw-mode options
Simon Glass
sjg at chromium.org
Sun Aug 11 16:50:15 CEST 2024
Hi Quentin,
On Tue, 6 Aug 2024 at 08:53, Quentin Schulz <quentin.schulz at cherry.de> wrote:
>
> 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?
My understanding is that MMC means it supports mmc without driver model.
./tools/qconfig.py -f ~SPL_MMC SPL_DM_MMC
93 matches
./tools/qconfig.py -f SPL_MMC ~SPL_DM_MMC
254 matches
so there are cases on both sides...so it looks like we need it as I have 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.
Oh that's interesting...will fix. it makes me wonder what happens with
this mode with SPL_DM_MMC??
>
> > - 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