[PATCH v1 1/2] arm: mvebu: correct SPL boot configs for SPI/MMC
Stefan Roese
sr at denx.de
Wed Apr 22 14:25:45 CEST 2020
On 17.04.20 09:19, Joel Johnson wrote:
> Update mvebu SPL boot selection mechanism for the move to driver model
> usage by ensuring that the required driver support for SPI and MMC
> booting is available in SPL when the respective boot method is
> selected.
>
> Previously, all mvebu boards selected a boot method (implicitly
> MVEBU_SPL_BOOT_DEVICE_SPI for many) even if SPL booting wasn't used.
> This changes mvebu boot method selection to depend on SPL usage which
> resolves the issue with aarch64 boards which don't use SPL getting an
> implicit boot device selection resulting in unmet dependencies. The
> 32-bit arm boards do use SPL, but I'm led to conclude that most aren't
> intentionally using the MVEBU_SPL_BOOT_DEVICE selection since none have
> SPL_DM_SPI enabled in their defconfig even though they still implicitly
> select the SPI boot method.
>
> This also results in the new addition of SPL_GPIO_SUPPORT to helios4.
> The mainline dts for helios4 includes the cd-gpios entry for sdhci with
> identical addresses as the clearfog dts. I don't have a helios4 board
> to confirm, but based on the current source conclude that the board
> itself is either wired to pull the signal low for eMMC, or the default
> MMC boot isn't fully functional in mainline. In either case, as far as
> I can tell, including the GPIO support will at least cause no
> regression.
>
> Tested on SolidRun ClearFog devices.
>
> Signed-off-by: Joel Johnson <mrjoel at lixil.net>
Reviewed-by: Stefan Roese <sr at denx.de>
Thanks,
Stefan
> ---
>
> This patch unifies two patches from a prior ClearFog specific series
> which caused issues when building for most other mvebu boards. Now
> build and config diff tested for all arm and aarch64 mvebu boards!
>
> The only substantive changes end up being the SPL dependency for boot
> selection, along with defconfig cleanups with Kconfig consolidated
> boot dependent values.
>
> The superfluous addition of SPL_MTD_SUPPORT present in the prior patch
> for SPI booting was also removed.
>
> ---
> arch/arm/mach-mvebu/Kconfig | 12 ++++++++++++
> configs/clearfog_defconfig | 3 ---
> configs/controlcenterdc_defconfig | 4 ----
> configs/db-88f6720_defconfig | 4 ----
> configs/db-88f6820-amc_defconfig | 4 ----
> configs/db-88f6820-gp_defconfig | 4 ----
> configs/db-mv784mp-gp_defconfig | 3 ---
> configs/ds414_defconfig | 3 ---
> configs/helios4_defconfig | 1 -
> configs/maxbcm_defconfig | 3 ---
> configs/theadorable_debug_defconfig | 3 ---
> configs/turris_omnia_defconfig | 4 ----
> configs/x530_defconfig | 4 ----
> include/configs/helios4.h | 5 -----
> 14 files changed, 12 insertions(+), 45 deletions(-)
>
> diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
> index 161dee937f..645990b3ef 100644
> --- a/arch/arm/mach-mvebu/Kconfig
> +++ b/arch/arm/mach-mvebu/Kconfig
> @@ -232,13 +232,25 @@ config SYS_SOC
>
> choice
> prompt "Boot method"
> + depends on SPL
>
> config MVEBU_SPL_BOOT_DEVICE_SPI
> bool "SPI NOR flash"
> + imply ENV_IS_IN_SPI_FLASH
> + select SPL_DM_SPI
> + select SPL_SPI_FLASH_SUPPORT
> + select SPL_SPI_LOAD
> + select SPL_SPI_SUPPORT
>
> config MVEBU_SPL_BOOT_DEVICE_MMC
> bool "SDIO/MMC card"
> + imply ENV_IS_IN_MMC
> + # GPIO needed for eMMC/SD card presence detection
> + select SPL_DM_GPIO
> + select SPL_DM_MMC
> + select SPL_GPIO_SUPPORT
> select SPL_LIBDISK_SUPPORT
> + select SPL_MMC_SUPPORT
>
> config MVEBU_SPL_BOOT_DEVICE_SATA
> bool "SATA"
> diff --git a/configs/clearfog_defconfig b/configs/clearfog_defconfig
> index 6db8b8acf6..ada35cb53b 100644
> --- a/configs/clearfog_defconfig
> +++ b/configs/clearfog_defconfig
> @@ -3,14 +3,12 @@ CONFIG_ARCH_CPU_INIT=y
> CONFIG_SYS_THUMB_BUILD=y
> CONFIG_ARCH_MVEBU=y
> CONFIG_SYS_TEXT_BASE=0x00800000
> -CONFIG_SPL_GPIO_SUPPORT=y
> CONFIG_SPL_LIBCOMMON_SUPPORT=y
> CONFIG_SPL_LIBGENERIC_SUPPORT=y
> CONFIG_SYS_MALLOC_F_LEN=0x2000
> CONFIG_TARGET_CLEARFOG=y
> CONFIG_MVEBU_SPL_BOOT_DEVICE_MMC=y
> CONFIG_DM_GPIO=y
> -CONFIG_SPL_MMC_SUPPORT=y
> CONFIG_SPL_SERIAL_SUPPORT=y
> CONFIG_NR_DRAM_BANKS=2
> CONFIG_SPL=y
> @@ -42,7 +40,6 @@ CONFIG_CMD_CACHE=y
> CONFIG_CMD_TIME=y
> # CONFIG_SPL_PARTITION_UUIDS is not set
> CONFIG_DEFAULT_DEVICE_TREE="armada-388-clearfog"
> -CONFIG_ENV_IS_IN_MMC=y
> CONFIG_NET_RANDOM_ETHADDR=y
> CONFIG_SPL_OF_TRANSLATE=y
> CONFIG_AHCI_MVEBU=y
> diff --git a/configs/controlcenterdc_defconfig b/configs/controlcenterdc_defconfig
> index 51126cbdc3..524dbc2b39 100644
> --- a/configs/controlcenterdc_defconfig
> +++ b/configs/controlcenterdc_defconfig
> @@ -14,8 +14,6 @@ CONFIG_NR_DRAM_BANKS=2
> CONFIG_SPL=y
> CONFIG_DEBUG_UART_BASE=0xd0012000
> CONFIG_DEBUG_UART_CLOCK=250000000
> -CONFIG_SPL_SPI_FLASH_SUPPORT=y
> -CONFIG_SPL_SPI_SUPPORT=y
> CONFIG_DEBUG_UART=y
> CONFIG_AHCI=y
> CONFIG_SPL_TEXT_BASE=0x40000030
> @@ -28,7 +26,6 @@ CONFIG_DISPLAY_BOARDINFO_LATE=y
> CONFIG_LAST_STAGE_INIT=y
> CONFIG_SPL_BOARD_INIT=y
> CONFIG_SPL_SYS_MALLOC_SIMPLE=y
> -CONFIG_SPL_SPI_LOAD=y
> CONFIG_SYS_SPI_U_BOOT_OFFS=0x30000
> CONFIG_HUSH_PARSER=y
> # CONFIG_CMD_ELF is not set
> @@ -50,7 +47,6 @@ CONFIG_CMD_EXT4=y
> CONFIG_EFI_PARTITION=y
> CONFIG_OF_BOARD_FIXUP=y
> CONFIG_DEFAULT_DEVICE_TREE="armada-38x-controlcenterdc"
> -CONFIG_ENV_IS_IN_SPI_FLASH=y
> CONFIG_USE_ENV_SPI_MAX_HZ=y
> CONFIG_ENV_SPI_MAX_HZ=50000000
> CONFIG_SYS_RELOC_GD_ENV_ADDR=y
> diff --git a/configs/db-88f6720_defconfig b/configs/db-88f6720_defconfig
> index 42c427b792..068f76bbe4 100644
> --- a/configs/db-88f6720_defconfig
> +++ b/configs/db-88f6720_defconfig
> @@ -14,8 +14,6 @@ CONFIG_NR_DRAM_BANKS=2
> CONFIG_SPL=y
> CONFIG_DEBUG_UART_BASE=0xf1012000
> CONFIG_DEBUG_UART_CLOCK=250000000
> -CONFIG_SPL_SPI_FLASH_SUPPORT=y
> -CONFIG_SPL_SPI_SUPPORT=y
> CONFIG_DEBUG_UART=y
> CONFIG_SPL_TEXT_BASE=0x40004030
> # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
> @@ -25,7 +23,6 @@ CONFIG_SYS_CONSOLE_INFO_QUIET=y
> # CONFIG_DISPLAY_BOARDINFO is not set
> CONFIG_DISPLAY_BOARDINFO_LATE=y
> CONFIG_SPL_I2C_SUPPORT=y
> -CONFIG_SPL_SPI_LOAD=y
> CONFIG_SYS_SPI_U_BOOT_OFFS=0x20000
> CONFIG_CMD_I2C=y
> CONFIG_CMD_SPI=y
> @@ -43,7 +40,6 @@ CONFIG_CMD_FAT=y
> CONFIG_CMD_FS_GENERIC=y
> # CONFIG_DOS_PARTITION is not set
> CONFIG_DEFAULT_DEVICE_TREE="armada-375-db"
> -CONFIG_ENV_IS_IN_SPI_FLASH=y
> CONFIG_USE_ENV_SPI_MAX_HZ=y
> CONFIG_ENV_SPI_MAX_HZ=50000000
> CONFIG_SYS_RELOC_GD_ENV_ADDR=y
> diff --git a/configs/db-88f6820-amc_defconfig b/configs/db-88f6820-amc_defconfig
> index 5bf9eb66ad..e231ca4673 100644
> --- a/configs/db-88f6820-amc_defconfig
> +++ b/configs/db-88f6820-amc_defconfig
> @@ -14,8 +14,6 @@ CONFIG_NR_DRAM_BANKS=2
> CONFIG_SPL=y
> CONFIG_DEBUG_UART_BASE=0xd0012000
> CONFIG_DEBUG_UART_CLOCK=200000000
> -CONFIG_SPL_SPI_FLASH_SUPPORT=y
> -CONFIG_SPL_SPI_SUPPORT=y
> CONFIG_DEBUG_UART=y
> CONFIG_SPL_TEXT_BASE=0x40000030
> CONFIG_FIT=y
> @@ -26,7 +24,6 @@ CONFIG_SYS_CONSOLE_INFO_QUIET=y
> # CONFIG_DISPLAY_BOARDINFO is not set
> CONFIG_DISPLAY_BOARDINFO_LATE=y
> CONFIG_SPL_I2C_SUPPORT=y
> -CONFIG_SPL_SPI_LOAD=y
> CONFIG_SYS_SPI_U_BOOT_OFFS=0x24000
> # CONFIG_CMD_FLASH is not set
> CONFIG_CMD_I2C=y
> @@ -48,7 +45,6 @@ CONFIG_EFI_PARTITION=y
> # CONFIG_PARTITION_UUIDS is not set
> # CONFIG_SPL_PARTITION_UUIDS is not set
> CONFIG_DEFAULT_DEVICE_TREE="armada-385-db-88f6820-amc"
> -CONFIG_ENV_IS_IN_SPI_FLASH=y
> CONFIG_USE_ENV_SPI_MAX_HZ=y
> CONFIG_ENV_SPI_MAX_HZ=50000000
> CONFIG_SYS_RELOC_GD_ENV_ADDR=y
> diff --git a/configs/db-88f6820-gp_defconfig b/configs/db-88f6820-gp_defconfig
> index 7e3ee5ec1c..c866131025 100644
> --- a/configs/db-88f6820-gp_defconfig
> +++ b/configs/db-88f6820-gp_defconfig
> @@ -14,8 +14,6 @@ CONFIG_NR_DRAM_BANKS=2
> CONFIG_SPL=y
> CONFIG_DEBUG_UART_BASE=0xd0012000
> CONFIG_DEBUG_UART_CLOCK=250000000
> -CONFIG_SPL_SPI_FLASH_SUPPORT=y
> -CONFIG_SPL_SPI_SUPPORT=y
> CONFIG_DEBUG_UART=y
> CONFIG_AHCI=y
> CONFIG_SPL_TEXT_BASE=0x40000030
> @@ -26,7 +24,6 @@ CONFIG_SYS_CONSOLE_INFO_QUIET=y
> CONFIG_DISPLAY_BOARDINFO_LATE=y
> CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y
> CONFIG_SPL_I2C_SUPPORT=y
> -CONFIG_SPL_SPI_LOAD=y
> CONFIG_SYS_SPI_U_BOOT_OFFS=0x24000
> CONFIG_CMD_I2C=y
> CONFIG_CMD_MMC=y
> @@ -48,7 +45,6 @@ CONFIG_EFI_PARTITION=y
> # CONFIG_PARTITION_UUIDS is not set
> # CONFIG_SPL_PARTITION_UUIDS is not set
> CONFIG_DEFAULT_DEVICE_TREE="armada-388-gp"
> -CONFIG_ENV_IS_IN_SPI_FLASH=y
> CONFIG_USE_ENV_SPI_MAX_HZ=y
> CONFIG_ENV_SPI_MAX_HZ=50000000
> CONFIG_SYS_RELOC_GD_ENV_ADDR=y
> diff --git a/configs/db-mv784mp-gp_defconfig b/configs/db-mv784mp-gp_defconfig
> index d3a0d0020a..012149a860 100644
> --- a/configs/db-mv784mp-gp_defconfig
> +++ b/configs/db-mv784mp-gp_defconfig
> @@ -14,8 +14,6 @@ CONFIG_NR_DRAM_BANKS=2
> CONFIG_SPL=y
> CONFIG_DEBUG_UART_BASE=0xd0012000
> CONFIG_DEBUG_UART_CLOCK=250000000
> -CONFIG_SPL_SPI_FLASH_SUPPORT=y
> -CONFIG_SPL_SPI_SUPPORT=y
> CONFIG_DEBUG_UART=y
> CONFIG_SPL_TEXT_BASE=0x40004030
> # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
> @@ -25,7 +23,6 @@ CONFIG_SYS_CONSOLE_INFO_QUIET=y
> # CONFIG_DISPLAY_BOARDINFO is not set
> CONFIG_DISPLAY_BOARDINFO_LATE=y
> CONFIG_SPL_I2C_SUPPORT=y
> -CONFIG_SPL_SPI_LOAD=y
> CONFIG_SYS_SPI_U_BOOT_OFFS=0x20000
> # CONFIG_CMD_FLASH is not set
> CONFIG_CMD_I2C=y
> diff --git a/configs/ds414_defconfig b/configs/ds414_defconfig
> index 435c896e41..01a3909c8c 100644
> --- a/configs/ds414_defconfig
> +++ b/configs/ds414_defconfig
> @@ -14,8 +14,6 @@ CONFIG_NR_DRAM_BANKS=2
> CONFIG_SPL=y
> CONFIG_DEBUG_UART_BASE=0xd0012000
> CONFIG_DEBUG_UART_CLOCK=250000000
> -CONFIG_SPL_SPI_FLASH_SUPPORT=y
> -CONFIG_SPL_SPI_SUPPORT=y
> CONFIG_DEBUG_UART=y
> CONFIG_SPL_TEXT_BASE=0x40004030
> CONFIG_BOOTDELAY=3
> @@ -26,7 +24,6 @@ CONFIG_PREBOOT="usb start; sf probe"
> # CONFIG_DISPLAY_BOARDINFO is not set
> CONFIG_DISPLAY_BOARDINFO_LATE=y
> CONFIG_SPL_I2C_SUPPORT=y
> -CONFIG_SPL_SPI_LOAD=y
> CONFIG_SYS_SPI_U_BOOT_OFFS=0x24000
> # CONFIG_CMD_FLASH is not set
> CONFIG_CMD_I2C=y
> diff --git a/configs/helios4_defconfig b/configs/helios4_defconfig
> index 1b8d130ebc..0fe8559507 100644
> --- a/configs/helios4_defconfig
> +++ b/configs/helios4_defconfig
> @@ -38,7 +38,6 @@ CONFIG_CMD_CACHE=y
> CONFIG_CMD_TIME=y
> # CONFIG_SPL_PARTITION_UUIDS is not set
> CONFIG_DEFAULT_DEVICE_TREE="armada-388-helios4"
> -CONFIG_ENV_IS_IN_MMC=y
> CONFIG_NET_RANDOM_ETHADDR=y
> CONFIG_SPL_OF_TRANSLATE=y
> CONFIG_SCSI_AHCI=y
> diff --git a/configs/maxbcm_defconfig b/configs/maxbcm_defconfig
> index 60a87edac0..9cc9d66393 100644
> --- a/configs/maxbcm_defconfig
> +++ b/configs/maxbcm_defconfig
> @@ -14,8 +14,6 @@ CONFIG_NR_DRAM_BANKS=2
> CONFIG_SPL=y
> CONFIG_DEBUG_UART_BASE=0xd0012000
> CONFIG_DEBUG_UART_CLOCK=250000000
> -CONFIG_SPL_SPI_FLASH_SUPPORT=y
> -CONFIG_SPL_SPI_SUPPORT=y
> CONFIG_DEBUG_UART=y
> CONFIG_SPL_TEXT_BASE=0x40004030
> CONFIG_BOOTDELAY=3
> @@ -24,7 +22,6 @@ CONFIG_SYS_CONSOLE_INFO_QUIET=y
> # CONFIG_DISPLAY_BOARDINFO is not set
> CONFIG_DISPLAY_BOARDINFO_LATE=y
> CONFIG_SPL_I2C_SUPPORT=y
> -CONFIG_SPL_SPI_LOAD=y
> CONFIG_SYS_SPI_U_BOOT_OFFS=0x20000
> CONFIG_CMD_I2C=y
> CONFIG_CMD_SPI=y
> diff --git a/configs/theadorable_debug_defconfig b/configs/theadorable_debug_defconfig
> index fb12e841cb..616c07ab54 100644
> --- a/configs/theadorable_debug_defconfig
> +++ b/configs/theadorable_debug_defconfig
> @@ -15,8 +15,6 @@ CONFIG_NR_DRAM_BANKS=2
> CONFIG_SPL=y
> CONFIG_DEBUG_UART_BASE=0xd0012000
> CONFIG_DEBUG_UART_CLOCK=250000000
> -CONFIG_SPL_SPI_FLASH_SUPPORT=y
> -CONFIG_SPL_SPI_SUPPORT=y
> CONFIG_DEBUG_UART=y
> CONFIG_SPL_TEXT_BASE=0x40004030
> # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
> @@ -28,7 +26,6 @@ CONFIG_SYS_CONSOLE_INFO_QUIET=y
> # CONFIG_DISPLAY_BOARDINFO is not set
> CONFIG_DISPLAY_BOARDINFO_LATE=y
> CONFIG_SPL_I2C_SUPPORT=y
> -CONFIG_SPL_SPI_LOAD=y
> CONFIG_SYS_SPI_U_BOOT_OFFS=0x1a000
> CONFIG_HUSH_PARSER=y
> CONFIG_CMD_BOOTZ=y
> diff --git a/configs/turris_omnia_defconfig b/configs/turris_omnia_defconfig
> index f3ed9917d5..29c49686e2 100644
> --- a/configs/turris_omnia_defconfig
> +++ b/configs/turris_omnia_defconfig
> @@ -17,8 +17,6 @@ CONFIG_NR_DRAM_BANKS=2
> CONFIG_SPL=y
> CONFIG_DEBUG_UART_BASE=0xd0012000
> CONFIG_DEBUG_UART_CLOCK=250000000
> -CONFIG_SPL_SPI_FLASH_SUPPORT=y
> -CONFIG_SPL_SPI_SUPPORT=y
> CONFIG_DEBUG_UART=y
> CONFIG_AHCI=y
> CONFIG_SPL_TEXT_BASE=0x40000030
> @@ -32,7 +30,6 @@ CONFIG_MISC_INIT_R=y
> # CONFIG_DISPLAY_BOARDINFO is not set
> CONFIG_DISPLAY_BOARDINFO_LATE=y
> CONFIG_SPL_I2C_SUPPORT=y
> -CONFIG_SPL_SPI_LOAD=y
> CONFIG_SYS_SPI_U_BOOT_OFFS=0x24000
> CONFIG_CMD_MEMTEST=y
> CONFIG_SYS_ALT_MEMTEST=y
> @@ -53,7 +50,6 @@ CONFIG_CMD_HASH=y
> CONFIG_CMD_BTRFS=y
> # CONFIG_SPL_PARTITION_UUIDS is not set
> CONFIG_DEFAULT_DEVICE_TREE="armada-385-turris-omnia"
> -CONFIG_ENV_IS_IN_SPI_FLASH=y
> CONFIG_USE_ENV_SPI_MAX_HZ=y
> CONFIG_ENV_SPI_MAX_HZ=50000000
> CONFIG_SYS_RELOC_GD_ENV_ADDR=y
> diff --git a/configs/x530_defconfig b/configs/x530_defconfig
> index a15b0b46b4..c49211df95 100644
> --- a/configs/x530_defconfig
> +++ b/configs/x530_defconfig
> @@ -15,8 +15,6 @@ CONFIG_NR_DRAM_BANKS=2
> CONFIG_SPL=y
> CONFIG_DEBUG_UART_BASE=0xd0012000
> CONFIG_DEBUG_UART_CLOCK=250000000
> -CONFIG_SPL_SPI_FLASH_SUPPORT=y
> -CONFIG_SPL_SPI_SUPPORT=y
> CONFIG_DEBUG_UART=y
> CONFIG_SPL_TEXT_BASE=0x40000030
> CONFIG_FIT=y
> @@ -26,7 +24,6 @@ CONFIG_SILENT_U_BOOT_ONLY=y
> CONFIG_SILENT_CONSOLE_UPDATE_ON_RELOC=y
> CONFIG_MISC_INIT_R=y
> CONFIG_SPL_BOARD_INIT=y
> -CONFIG_SPL_SPI_LOAD=y
> CONFIG_SYS_SPI_U_BOOT_OFFS=0x24000
> CONFIG_SPL_WATCHDOG_SUPPORT=y
> CONFIG_CMD_MEMINFO=y
> @@ -47,7 +44,6 @@ CONFIG_CMD_EXT4=y
> CONFIG_CMD_FAT=y
> CONFIG_CMD_FS_GENERIC=y
> CONFIG_DEFAULT_DEVICE_TREE="armada-385-atl-x530"
> -CONFIG_ENV_IS_IN_SPI_FLASH=y
> CONFIG_ENV_ADDR=0x100000
> CONFIG_SPL_OF_TRANSLATE=y
> CONFIG_BLK=y
> diff --git a/include/configs/helios4.h b/include/configs/helios4.h
> index 5a4c9ae066..af595bc7bc 100644
> --- a/include/configs/helios4.h
> +++ b/include/configs/helios4.h
> @@ -93,16 +93,11 @@
> #define CONFIG_SPL_BOOTROM_SAVE (CONFIG_SPL_STACK + 4)
>
> #if CONFIG_SPL_BOOT_DEVICE == SPL_BOOT_SPI_NOR_FLASH
> -/* SPL related SPI defines */
> -#define CONFIG_SPL_SPI_FLASH_SUPPORT
> -#define CONFIG_SPL_SPI_LOAD
> -#define CONFIG_SPL_SPI_SUPPORT
> #define CONFIG_SYS_U_BOOT_OFFS CONFIG_SYS_SPI_U_BOOT_OFFS
> #endif
>
> #if CONFIG_SPL_BOOT_DEVICE == SPL_BOOT_SDIO_MMC_CARD
> /* SPL related MMC defines */
> -#define CONFIG_SPL_MMC_SUPPORT
> #define CONFIG_SYS_MMC_U_BOOT_OFFS (160 << 10)
> #define CONFIG_SYS_U_BOOT_OFFS CONFIG_SYS_MMC_U_BOOT_OFFS
> #ifdef CONFIG_SPL_BUILD
>
Viele Grüße,
Stefan
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de
More information about the U-Boot
mailing list