[PATCH u-boot-mvebu v2 35/41] arm: mvebu: Load main U-Boot binary in SPL code based on kwbimage header

Stefan Roese sr at denx.de
Thu Jul 22 10:51:42 CEST 2021


On 19.07.21 14:20, Marek Behún wrote:
> From: Pali Rohár <pali at kernel.org>
> 
> Now that proper load and execution addresses are set in v1 kwbimage we
> can use it for loading and booting main U-Boot binary.
> 
> Use the new spl_parse_board_header() function to implement parsing the
> kwbimage v1 header. Use information from this header to locate offset and
> size of the main U-Boot binary, instead of using the legacy U-Boot header
> which is prepended to the main U-Boot binary stored at fixed offset. This
> has the advantage that we do not need to relay on legacy U-Boot header
> anymore and therefore main U-Boot binary can be stored at any offset, as
> is the case when loading & booting main U-Boot binary by BootROM.
> The CONFIG_SYS_U_BOOT_OFFS option is therefore not used by SPL code
> anymore.
> 
> Also allow to compile U-Boot SPL without CONFIG_SPL_SPI_FLASH_SUPPORT,
> CONFIG_SPL_MMC_SUPPORT or CONFIG_SPL_SATA_SUPPORT set. In this case
> BootROM is used for loading and executing main U-Boot binary. This
> reduces the size of U-Boot's SPL image. By default these config options
> are enabled and so BootROM loading is not used. In some cases BootROM
> reads from SPI NOR at lower speed than U-Boot SPL. So people can decide
> whether they want to have smaller SPL binary at the cost of slower boot.
> 
> Therefore dependency on CONFIG_SPL_DM_SPI, CONFIG_SPL_SPI_FLASH_SUPPORT,
> CONFIG_SPL_SPI_LOAD, CONFIG_SPL_SPI_SUPPORT, CONFIG_SPL_DM_GPIO,
> CONFIG_SPL_DM_MMC, CONFIG_SPL_GPIO_SUPPORT, CONFIG_SPL_LIBDISK_SUPPORT,
> CONFIG_SPL_MMC_SUPPORT, CONFIG_SPL_SATA_SUPPORT and
> CONFIG_SPL_LIBDISK_SUPPORT is changed from strict to related "imply"
> (which can be selectivelly turned off and causes booting via BootROM).
> 
> Options CONFIG_SYS_SPI_U_BOOT_OFFS,
> CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR and
> CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET have to to be set to
> zero as they define the location where kwbimage header starts. It is the
> location where BootROM expects start of the kwbimage from which it reads,
> parses and executes SPL part. The same applies to option
> CONFIG_SPL_SATA_RAW_U_BOOT_SECTOR, which has to be set to one.
> 
> Update all config files to set correct values of these options and set
> CONFIG_SYS_U_BOOT_OFFS to the correct value - the offset where main
> U-Boot binary starts.
> 
> Signed-off-by: Pali Rohár <pali at kernel.org>
> Reviewed-by: Marek Behún <marek.behun at nic.cz>

Reviewed-by: Stefan Roese <sr at denx.de>

Thanks,
Stefan

> ---
>   arch/arm/mach-mvebu/Kconfig         |  22 +--
>   arch/arm/mach-mvebu/spl.c           | 205 ++++++++++++++++++++++++++--
>   board/kobol/helios4/Kconfig         |   5 -
>   board/solidrun/clearfog/Kconfig     |   5 -
>   common/spl/Kconfig                  |   4 +-
>   configs/clearfog_defconfig          |   1 -
>   configs/controlcenterdc_defconfig   |   1 -
>   configs/db-88f6720_defconfig        |   1 -
>   configs/db-88f6820-amc_defconfig    |   1 -
>   configs/db-88f6820-gp_defconfig     |   2 -
>   configs/db-mv784mp-gp_defconfig     |   1 -
>   configs/ds414_defconfig             |   1 -
>   configs/helios4_defconfig           |   1 -
>   configs/maxbcm_defconfig            |   1 -
>   configs/theadorable_debug_defconfig |   1 -
>   configs/turris_omnia_defconfig      |   1 -
>   configs/x530_defconfig              |   1 -
>   include/configs/clearfog.h          |   5 +-
>   include/configs/controlcenterdc.h   |   7 +-
>   include/configs/db-88f6720.h        |   2 +-
>   include/configs/db-88f6820-amc.h    |   2 +-
>   include/configs/db-88f6820-gp.h     |   5 +-
>   include/configs/db-mv784mp-gp.h     |   2 +-
>   include/configs/ds414.h             |   2 +-
>   include/configs/helios4.h           |   5 +-
>   include/configs/theadorable.h       |   2 +-
>   include/configs/turris_omnia.h      |   5 +-
>   include/configs/x530.h              |   2 +-
>   28 files changed, 224 insertions(+), 69 deletions(-)
> 
> diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
> index 2133d9a172..140c4199a2 100644
> --- a/arch/arm/mach-mvebu/Kconfig
> +++ b/arch/arm/mach-mvebu/Kconfig
> @@ -253,27 +253,27 @@ choice
>   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
> +	imply SPL_DM_SPI
> +	imply SPL_SPI_FLASH_SUPPORT
> +	imply SPL_SPI_LOAD
> +	imply SPL_SPI_SUPPORT
>   	select SPL_BOOTROM_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
> +	imply SPL_DM_GPIO
> +	imply SPL_DM_MMC
> +	imply SPL_GPIO_SUPPORT
> +	imply SPL_LIBDISK_SUPPORT
> +	imply SPL_MMC_SUPPORT
>   	select SPL_BOOTROM_SUPPORT
>   
>   config MVEBU_SPL_BOOT_DEVICE_SATA
>   	bool "SATA"
> -	select SPL_SATA_SUPPORT
> -	select SPL_LIBDISK_SUPPORT
> +	imply SPL_SATA_SUPPORT
> +	imply SPL_LIBDISK_SUPPORT
>   	select SPL_BOOTROM_SUPPORT
>   
>   config MVEBU_SPL_BOOT_DEVICE_UART
> diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c
> index 5c3d959bff..c2606bc8fb 100644
> --- a/arch/arm/mach-mvebu/spl.c
> +++ b/arch/arm/mach-mvebu/spl.c
> @@ -8,6 +8,7 @@
>   #include <debug_uart.h>
>   #include <fdtdec.h>
>   #include <hang.h>
> +#include <image.h>
>   #include <init.h>
>   #include <log.h>
>   #include <spl.h>
> @@ -16,6 +17,160 @@
>   #include <asm/arch/cpu.h>
>   #include <asm/arch/soc.h>
>   
> +#if defined(CONFIG_SPL_SPI_FLASH_SUPPORT) || defined(CONFIG_SPL_MMC_SUPPORT) || defined(CONFIG_SPL_SATA_SUPPORT)
> +
> +/*
> + * When loading U-Boot via SPL from SPI NOR, CONFIG_SYS_SPI_U_BOOT_OFFS must
> + * point to the offset of kwbimage main header which is always at offset zero
> + * (defined by BootROM). Therefore other values of CONFIG_SYS_SPI_U_BOOT_OFFS
> + * makes U-Boot non-bootable.
> + */
> +#ifdef CONFIG_SPL_SPI_FLASH_SUPPORT
> +#if defined(CONFIG_SYS_SPI_U_BOOT_OFFS) && CONFIG_SYS_SPI_U_BOOT_OFFS != 0
> +#error CONFIG_SYS_SPI_U_BOOT_OFFS must be set to 0
> +#endif
> +#endif
> +
> +/*
> + * When loading U-Boot via SPL from eMMC (in Marvell terminology SDIO), the
> + * kwbimage main header is stored at sector 0. U-Boot SPL needs to parse this
> + * header and figure out at which sector the main U-Boot binary is stored.
> + * Partition booting is therefore not supported and CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
> + * and CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET need to point to the
> + * kwbimage main header.
> + */
> +#ifdef CONFIG_SPL_MMC_SUPPORT
> +#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
> +#error CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION is unsupported
> +#endif
> +#if defined(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR) && CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR != 0
> +#error CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR must be set to 0
> +#endif
> +#if defined(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET) && CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET != 0
> +#error CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET must be set to 0
> +#endif
> +#endif
> +
> +/*
> + * When loading U-Boot via SPL from SATA disk, the kwbimage main header is
> + * stored at sector 1. Therefore CONFIG_SPL_SATA_RAW_U_BOOT_SECTOR must be
> + * set to 1. Otherwise U-Boot SPL would not be able to load main U-Boot binary.
> + */
> +#ifdef CONFIG_SPL_SATA_SUPPORT
> +#if !defined(CONFIG_SPL_SATA_RAW_U_BOOT_USE_SECTOR) || !defined(CONFIG_SPL_SATA_RAW_U_BOOT_SECTOR) || CONFIG_SPL_SATA_RAW_U_BOOT_SECTOR != 1
> +#error CONFIG_SPL_SATA_RAW_U_BOOT_SECTOR must be set to 1
> +#endif
> +#endif
> +
> +/* Boot Type - block ID */
> +#define IBR_HDR_I2C_ID			0x4D
> +#define IBR_HDR_SPI_ID			0x5A
> +#define IBR_HDR_NAND_ID			0x8B
> +#define IBR_HDR_SATA_ID			0x78
> +#define IBR_HDR_PEX_ID			0x9C
> +#define IBR_HDR_UART_ID			0x69
> +#define IBR_HDR_SDIO_ID			0xAE
> +
> +/* Structure of the main header, version 1 (Armada 370/38x/XP) */
> +struct kwbimage_main_hdr_v1 {
> +	uint8_t  blockid;               /* 0x0       */
> +	uint8_t  flags;                 /* 0x1       */
> +	uint16_t reserved2;             /* 0x2-0x3   */
> +	uint32_t blocksize;             /* 0x4-0x7   */
> +	uint8_t  version;               /* 0x8       */
> +	uint8_t  headersz_msb;          /* 0x9       */
> +	uint16_t headersz_lsb;          /* 0xA-0xB   */
> +	uint32_t srcaddr;               /* 0xC-0xF   */
> +	uint32_t destaddr;              /* 0x10-0x13 */
> +	uint32_t execaddr;              /* 0x14-0x17 */
> +	uint8_t  options;               /* 0x18      */
> +	uint8_t  nandblocksize;         /* 0x19      */
> +	uint8_t  nandbadblklocation;    /* 0x1A      */
> +	uint8_t  reserved4;             /* 0x1B      */
> +	uint16_t reserved5;             /* 0x1C-0x1D */
> +	uint8_t  ext;                   /* 0x1E      */
> +	uint8_t  checksum;              /* 0x1F      */
> +} __packed;
> +
> +#ifdef CONFIG_SPL_MMC_SUPPORT
> +u32 spl_mmc_boot_mode(const u32 boot_device)
> +{
> +	return MMCSD_MODE_RAW;
> +}
> +#endif
> +
> +int spl_parse_board_header(struct spl_image_info *spl_image,
> +			   const void *image_header, size_t size)
> +{
> +	const struct kwbimage_main_hdr_v1 *mhdr = image_header;
> +
> +	if (size < sizeof(*mhdr)) {
> +		/* This should be compile time assert */
> +		printf("FATAL ERROR: Image header size is too small\n");
> +		hang();
> +	}
> +
> +	/*
> +	 * Very basic check for image validity. We cannot check mhdr->checksum
> +	 * as it is calculated also from variable length extended headers
> +	 * (including SPL content) which is not included in U-Boot image_header.
> +	 */
> +	if (mhdr->version != 1 ||
> +	    ((mhdr->headersz_msb << 16) | mhdr->headersz_lsb) < sizeof(*mhdr) ||
> +	    (
> +#ifdef CONFIG_SPL_SPI_FLASH_SUPPORT
> +	     mhdr->blockid != IBR_HDR_SPI_ID &&
> +#endif
> +#ifdef CONFIG_SPL_SATA_SUPPORT
> +	     mhdr->blockid != IBR_HDR_SATA_ID &&
> +#endif
> +#ifdef CONFIG_SPL_MMC_SUPPORT
> +	     mhdr->blockid != IBR_HDR_SDIO_ID &&
> +#endif
> +	     1
> +	    )) {
> +		printf("ERROR: Not valid SPI/NAND/SATA/SDIO kwbimage v1\n");
> +		return -EINVAL;
> +	}
> +
> +	spl_image->offset = mhdr->srcaddr;
> +
> +#ifdef CONFIG_SPL_SATA_SUPPORT
> +	/*
> +	 * For SATA srcaddr is specified in number of sectors.
> +	 * The main header is must be stored at sector number 1.
> +	 * This expects that sector size is 512 bytes and recalculates
> +	 * data offset to bytes relative to the main header.
> +	 */
> +	if (mhdr->blockid == IBR_HDR_SATA_ID) {
> +		if (spl_image->offset < 1) {
> +			printf("ERROR: Wrong SATA srcaddr in kwbimage\n");
> +			return -EINVAL;
> +		}
> +		spl_image->offset -= 1;
> +		spl_image->offset *= 512;
> +	}
> +#endif
> +
> +#ifdef CONFIG_SPL_MMC_SUPPORT
> +	/*
> +	 * For SDIO (eMMC) srcaddr is specified in number of sectors.
> +	 * This expects that sector size is 512 bytes and recalculates
> +	 * data offset to bytes.
> +	 */
> +	if (mhdr->blockid == IBR_HDR_SDIO_ID)
> +		spl_image->offset *= 512;
> +#endif
> +
> +	spl_image->size = mhdr->blocksize;
> +	spl_image->entry_point = mhdr->execaddr;
> +	spl_image->load_addr = mhdr->destaddr;
> +	spl_image->os = IH_OS_U_BOOT;
> +	spl_image->name = "U-Boot";
> +
> +	return 0;
> +}
> +
>   static u32 get_boot_device(void)
>   {
>   	u32 val;
> @@ -49,11 +204,11 @@ static u32 get_boot_device(void)
>   	boot_device = (val & BOOT_DEV_SEL_MASK) >> BOOT_DEV_SEL_OFFS;
>   	debug("SAR_REG=0x%08x boot_device=0x%x\n", val, boot_device);
>   	switch (boot_device) {
> -#if defined(CONFIG_ARMADA_38X)
> +#ifdef BOOT_FROM_NAND
>   	case BOOT_FROM_NAND:
>   		return BOOT_DEVICE_NAND;
>   #endif
> -#ifdef CONFIG_SPL_MMC_SUPPORT
> +#ifdef BOOT_FROM_MMC
>   	case BOOT_FROM_MMC:
>   	case BOOT_FROM_MMC_ALT:
>   		return BOOT_DEVICE_MMC1;
> @@ -69,15 +224,26 @@ static u32 get_boot_device(void)
>   		return BOOT_DEVICE_SATA;
>   #endif
>   	case BOOT_FROM_SPI:
> -	default:
>   		return BOOT_DEVICE_SPI;
> +	default:
> +		return BOOT_DEVICE_BOOTROM;
>   	};
>   }
>   
> +#else
> +
> +static u32 get_boot_device(void)
> +{
> +	return BOOT_DEVICE_BOOTROM;
> +}
> +
> +#endif
> +
>   u32 spl_boot_device(void)
>   {
>   	u32 boot_device = get_boot_device();
>   
> +	switch (boot_device) {
>   	/*
>   	 * Return to the BootROM to continue the Marvell xmodem
>   	 * UART boot protocol. As initiated by the kwboot tool.
> @@ -87,18 +253,35 @@ u32 spl_boot_device(void)
>   	 * SPL has no chance to receive this information. So we
>   	 * need to return to the BootROM to enable this xmodem
>   	 * UART download. Use SPL infrastructure to return to BootROM.
> -	 *
> -	 * If booting from NAND lets let the BootROM load the
> -	 * rest of the bootloader.
>   	 */
> -	switch (boot_device) {
>   	case BOOT_DEVICE_UART:
> -#if defined(CONFIG_ARMADA_38X)
> -	case BOOT_DEVICE_NAND:
> -#endif
>   		return BOOT_DEVICE_BOOTROM;
> +
> +	/*
> +	 * If SPL is compiled with chosen boot_device support
> +	 * then use SPL driver for loading main U-Boot binary.
> +	 */
> +#ifdef CONFIG_SPL_MMC_SUPPORT
> +	case BOOT_DEVICE_MMC1:
> +		return BOOT_DEVICE_MMC1;
> +#endif
> +#ifdef CONFIG_SPL_SATA_SUPPORT
> +	case BOOT_FROM_SATA:
> +		return BOOT_FROM_SATA;
> +#endif
> +#ifdef CONFIG_SPL_SPI_FLASH_SUPPORT
> +	case BOOT_DEVICE_SPI:
> +		return BOOT_DEVICE_SPI;
> +#endif
> +
> +	/*
> +	 * If SPL is not compiled with chosen boot_device support
> +	 * then return to the BootROM. BootROM supports loading
> +	 * main U-Boot binary from any valid boot_device present
> +	 * in SAR register.
> +	 */
>   	default:
> -		return boot_device;
> +		return BOOT_DEVICE_BOOTROM;
>   	}
>   }
>   
> diff --git a/board/kobol/helios4/Kconfig b/board/kobol/helios4/Kconfig
> index cad51c1cf0..81a2199ae5 100644
> --- a/board/kobol/helios4/Kconfig
> +++ b/board/kobol/helios4/Kconfig
> @@ -16,9 +16,4 @@ config ENV_SECT_SIZE
>   	# Use optimistic 64 KiB erase block, will vary between actual media
>   	default 0x10000 if MVEBU_SPL_BOOT_DEVICE_MMC || MVEBU_SPL_BOOT_DEVICE_UART
>   
> -config SYS_SPI_U_BOOT_OFFS
> -	hex "address of u-boot payload in SPI flash"
> -	default 0x20000
> -	depends on MVEBU_SPL_BOOT_DEVICE_SPI
> -
>   endmenu
> diff --git a/board/solidrun/clearfog/Kconfig b/board/solidrun/clearfog/Kconfig
> index cf95258090..60d3921307 100644
> --- a/board/solidrun/clearfog/Kconfig
> +++ b/board/solidrun/clearfog/Kconfig
> @@ -54,9 +54,4 @@ config ENV_SECT_SIZE
>   	# Use optimistic 64 KiB erase block, will vary between actual media
>   	default 0x10000 if MVEBU_SPL_BOOT_DEVICE_MMC || MVEBU_SPL_BOOT_DEVICE_UART
>   
> -config SYS_SPI_U_BOOT_OFFS
> -	hex "address of u-boot payload in SPI flash"
> -	default 0x20000
> -	depends on MVEBU_SPL_BOOT_DEVICE_SPI
> -
>   endmenu
> diff --git a/common/spl/Kconfig b/common/spl/Kconfig
> index fa80524cfb..a710c8d86c 100644
> --- a/common/spl/Kconfig
> +++ b/common/spl/Kconfig
> @@ -334,7 +334,7 @@ config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
>   	default 0x75 if ARCH_DAVINCI
>   	default 0x8a if ARCH_MX6 || ARCH_MX7
>   	default 0x100 if ARCH_UNIPHIER
> -	default 0x140 if ARCH_MVEBU
> +	default 0x0 if ARCH_MVEBU
>   	default 0x200 if ARCH_SOCFPGA || ARCH_AT91
>   	default 0x300 if ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || OMAP44XX || \
>   		         OMAP54XX || AM33XX || AM43XX || ARCH_K3
> @@ -1089,6 +1089,7 @@ config SPL_SATA_SUPPORT
>   config SPL_SATA_RAW_U_BOOT_USE_SECTOR
>   	bool "SATA raw mode: by sector"
>   	depends on SPL_SATA_SUPPORT
> +	default y if ARCH_MVEBU
>   	help
>   	  Use sector number for specifying U-Boot location on SATA disk in
>   	  raw mode.
> @@ -1096,6 +1097,7 @@ config SPL_SATA_RAW_U_BOOT_USE_SECTOR
>   config SPL_SATA_RAW_U_BOOT_SECTOR
>   	hex "Sector on the SATA disk to load U-Boot from"
>   	depends on SPL_SATA_RAW_U_BOOT_USE_SECTOR
> +	default 0x1 if ARCH_MVEBU
>   	help
>   	  Sector on the SATA disk to load U-Boot from, when the SATA disk is being
>   	  used in raw mode. Units: SATA disk sectors (1 sector = 512 bytes).
> diff --git a/configs/clearfog_defconfig b/configs/clearfog_defconfig
> index 4702cf2df1..4ece79fe7e 100644
> --- a/configs/clearfog_defconfig
> +++ b/configs/clearfog_defconfig
> @@ -24,7 +24,6 @@ CONFIG_USE_PREBOOT=y
>   CONFIG_SYS_CONSOLE_INFO_QUIET=y
>   # CONFIG_DISPLAY_BOARDINFO is not set
>   CONFIG_DISPLAY_BOARDINFO_LATE=y
> -CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET=0x1
>   CONFIG_SPL_I2C_SUPPORT=y
>   CONFIG_CMD_TLV_EEPROM=y
>   CONFIG_SPL_CMD_TLV_EEPROM=y
> diff --git a/configs/controlcenterdc_defconfig b/configs/controlcenterdc_defconfig
> index a8d961a7c5..eccc1d7dfc 100644
> --- a/configs/controlcenterdc_defconfig
> +++ b/configs/controlcenterdc_defconfig
> @@ -9,7 +9,6 @@ CONFIG_TARGET_CONTROLCENTERDC=y
>   CONFIG_ENV_SIZE=0x10000
>   CONFIG_ENV_OFFSET=0x100000
>   CONFIG_ENV_SECT_SIZE=0x40000
> -CONFIG_SYS_SPI_U_BOOT_OFFS=0x30000
>   CONFIG_DM_GPIO=y
>   CONFIG_DEFAULT_DEVICE_TREE="armada-38x-controlcenterdc"
>   CONFIG_SPL_TEXT_BASE=0x40000030
> diff --git a/configs/db-88f6720_defconfig b/configs/db-88f6720_defconfig
> index bb73635d92..479a110252 100644
> --- a/configs/db-88f6720_defconfig
> +++ b/configs/db-88f6720_defconfig
> @@ -10,7 +10,6 @@ CONFIG_TARGET_DB_88F6720=y
>   CONFIG_ENV_SIZE=0x10000
>   CONFIG_ENV_OFFSET=0x100000
>   CONFIG_ENV_SECT_SIZE=0x10000
> -CONFIG_SYS_SPI_U_BOOT_OFFS=0x20000
>   CONFIG_DEFAULT_DEVICE_TREE="armada-375-db"
>   CONFIG_SPL_TEXT_BASE=0x40004030
>   CONFIG_SPL_SERIAL_SUPPORT=y
> diff --git a/configs/db-88f6820-amc_defconfig b/configs/db-88f6820-amc_defconfig
> index a7c8498599..7cc838a148 100644
> --- a/configs/db-88f6820-amc_defconfig
> +++ b/configs/db-88f6820-amc_defconfig
> @@ -10,7 +10,6 @@ CONFIG_TARGET_DB_88F6820_AMC=y
>   CONFIG_ENV_SIZE=0x10000
>   CONFIG_ENV_OFFSET=0x100000
>   CONFIG_ENV_SECT_SIZE=0x40000
> -CONFIG_SYS_SPI_U_BOOT_OFFS=0x24000
>   CONFIG_DEFAULT_DEVICE_TREE="armada-385-db-88f6820-amc"
>   CONFIG_SPL_TEXT_BASE=0x40000030
>   CONFIG_SPL_SERIAL_SUPPORT=y
> diff --git a/configs/db-88f6820-gp_defconfig b/configs/db-88f6820-gp_defconfig
> index 6fa00d1a17..cdc6cabaf6 100644
> --- a/configs/db-88f6820-gp_defconfig
> +++ b/configs/db-88f6820-gp_defconfig
> @@ -10,7 +10,6 @@ CONFIG_TARGET_DB_88F6820_GP=y
>   CONFIG_ENV_SIZE=0x10000
>   CONFIG_ENV_OFFSET=0x100000
>   CONFIG_ENV_SECT_SIZE=0x40000
> -CONFIG_SYS_SPI_U_BOOT_OFFS=0x24000
>   CONFIG_DEFAULT_DEVICE_TREE="armada-388-gp"
>   CONFIG_SPL_TEXT_BASE=0x40000030
>   CONFIG_SPL_SERIAL_SUPPORT=y
> @@ -24,7 +23,6 @@ CONFIG_USE_PREBOOT=y
>   CONFIG_SYS_CONSOLE_INFO_QUIET=y
>   # CONFIG_DISPLAY_BOARDINFO is not set
>   CONFIG_DISPLAY_BOARDINFO_LATE=y
> -CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y
>   CONFIG_SPL_I2C_SUPPORT=y
>   CONFIG_CMD_I2C=y
>   CONFIG_CMD_MMC=y
> diff --git a/configs/db-mv784mp-gp_defconfig b/configs/db-mv784mp-gp_defconfig
> index e1f6aff8f5..1f5c987cfd 100644
> --- a/configs/db-mv784mp-gp_defconfig
> +++ b/configs/db-mv784mp-gp_defconfig
> @@ -10,7 +10,6 @@ CONFIG_TARGET_DB_MV784MP_GP=y
>   CONFIG_ENV_SIZE=0x10000
>   CONFIG_ENV_OFFSET=0x100000
>   CONFIG_ENV_SECT_SIZE=0x10000
> -CONFIG_SYS_SPI_U_BOOT_OFFS=0x20000
>   CONFIG_DEFAULT_DEVICE_TREE="armada-xp-gp"
>   CONFIG_SPL_TEXT_BASE=0x40004030
>   CONFIG_SPL_SERIAL_SUPPORT=y
> diff --git a/configs/ds414_defconfig b/configs/ds414_defconfig
> index b8a0bd09d4..cf0d937295 100644
> --- a/configs/ds414_defconfig
> +++ b/configs/ds414_defconfig
> @@ -10,7 +10,6 @@ CONFIG_TARGET_DS414=y
>   CONFIG_ENV_SIZE=0x10000
>   CONFIG_ENV_OFFSET=0x7E0000
>   CONFIG_ENV_SECT_SIZE=0x10000
> -CONFIG_SYS_SPI_U_BOOT_OFFS=0x24000
>   CONFIG_DEFAULT_DEVICE_TREE="armada-xp-synology-ds414"
>   CONFIG_SPL_TEXT_BASE=0x40004030
>   CONFIG_SPL_SERIAL_SUPPORT=y
> diff --git a/configs/helios4_defconfig b/configs/helios4_defconfig
> index 202e57344d..4026dd4b89 100644
> --- a/configs/helios4_defconfig
> +++ b/configs/helios4_defconfig
> @@ -24,7 +24,6 @@ CONFIG_USE_PREBOOT=y
>   CONFIG_SYS_CONSOLE_INFO_QUIET=y
>   # CONFIG_DISPLAY_BOARDINFO is not set
>   CONFIG_DISPLAY_BOARDINFO_LATE=y
> -CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET=0x1
>   CONFIG_SPL_I2C_SUPPORT=y
>   CONFIG_CMD_TLV_EEPROM=y
>   CONFIG_SPL_CMD_TLV_EEPROM=y
> diff --git a/configs/maxbcm_defconfig b/configs/maxbcm_defconfig
> index e754108b73..4bcac91057 100644
> --- a/configs/maxbcm_defconfig
> +++ b/configs/maxbcm_defconfig
> @@ -10,7 +10,6 @@ CONFIG_TARGET_MAXBCM=y
>   CONFIG_ENV_SIZE=0x10000
>   CONFIG_ENV_OFFSET=0x100000
>   CONFIG_ENV_SECT_SIZE=0x10000
> -CONFIG_SYS_SPI_U_BOOT_OFFS=0x20000
>   CONFIG_DEFAULT_DEVICE_TREE="armada-xp-maxbcm"
>   CONFIG_SPL_TEXT_BASE=0x40004030
>   CONFIG_SPL_SERIAL_SUPPORT=y
> diff --git a/configs/theadorable_debug_defconfig b/configs/theadorable_debug_defconfig
> index 6d32e6c5be..a479ac7748 100644
> --- a/configs/theadorable_debug_defconfig
> +++ b/configs/theadorable_debug_defconfig
> @@ -10,7 +10,6 @@ CONFIG_TARGET_THEADORABLE=y
>   CONFIG_ENV_SIZE=0x10000
>   CONFIG_ENV_OFFSET=0x100000
>   CONFIG_ENV_SECT_SIZE=0x40000
> -CONFIG_SYS_SPI_U_BOOT_OFFS=0x1a000
>   CONFIG_DM_GPIO=y
>   CONFIG_DEFAULT_DEVICE_TREE="armada-xp-theadorable"
>   CONFIG_SPL_TEXT_BASE=0x40004030
> diff --git a/configs/turris_omnia_defconfig b/configs/turris_omnia_defconfig
> index 5f7b1a67a2..9eec70e8a8 100644
> --- a/configs/turris_omnia_defconfig
> +++ b/configs/turris_omnia_defconfig
> @@ -14,7 +14,6 @@ CONFIG_TARGET_TURRIS_OMNIA=y
>   CONFIG_ENV_SIZE=0x10000
>   CONFIG_ENV_OFFSET=0xF0000
>   CONFIG_ENV_SECT_SIZE=0x10000
> -CONFIG_SYS_SPI_U_BOOT_OFFS=0x24000
>   CONFIG_DM_GPIO=y
>   CONFIG_DEFAULT_DEVICE_TREE="armada-385-turris-omnia"
>   CONFIG_SPL_TEXT_BASE=0x40000030
> diff --git a/configs/x530_defconfig b/configs/x530_defconfig
> index dbde392374..49610eda24 100644
> --- a/configs/x530_defconfig
> +++ b/configs/x530_defconfig
> @@ -10,7 +10,6 @@ CONFIG_TARGET_X530=y
>   CONFIG_ENV_SIZE=0x10000
>   CONFIG_ENV_OFFSET=0x100000
>   CONFIG_ENV_SECT_SIZE=0x40000
> -CONFIG_SYS_SPI_U_BOOT_OFFS=0x24000
>   CONFIG_DM_GPIO=y
>   CONFIG_DEFAULT_DEVICE_TREE="armada-385-atl-x530"
>   CONFIG_SPL_TEXT_BASE=0x40000030
> diff --git a/include/configs/clearfog.h b/include/configs/clearfog.h
> index c9852a72b9..255b147945 100644
> --- a/include/configs/clearfog.h
> +++ b/include/configs/clearfog.h
> @@ -71,11 +71,10 @@
>   
>   #if defined(CONFIG_MVEBU_SPL_BOOT_DEVICE_SPI)
>   /* SPL related SPI defines */
> -#define CONFIG_SYS_U_BOOT_OFFS		CONFIG_SYS_SPI_U_BOOT_OFFS
> +#define CONFIG_SYS_U_BOOT_OFFS		0x20000
>   #elif defined(CONFIG_MVEBU_SPL_BOOT_DEVICE_MMC) || defined(CONFIG_MVEBU_SPL_BOOT_DEVICE_SATA)
>   /* SPL related MMC defines */
> -#define CONFIG_SYS_MMC_U_BOOT_OFFS		(160 << 10)
> -#define CONFIG_SYS_U_BOOT_OFFS			CONFIG_SYS_MMC_U_BOOT_OFFS
> +#define CONFIG_SYS_U_BOOT_OFFS			(160 << 10)
>   #ifdef CONFIG_SPL_BUILD
>   #define CONFIG_FIXED_SDHCI_ALIGNED_BUFFER	0x00180000	/* in SDRAM */
>   #endif
> diff --git a/include/configs/controlcenterdc.h b/include/configs/controlcenterdc.h
> index 869b94bc9b..fffc372872 100644
> --- a/include/configs/controlcenterdc.h
> +++ b/include/configs/controlcenterdc.h
> @@ -87,16 +87,13 @@
>   
>   #if CONFIG_SPL_BOOT_DEVICE == SPL_BOOT_SPI_NOR_FLASH
>   /* SPL related SPI defines */
> -#define CONFIG_SYS_U_BOOT_OFFS		CONFIG_SYS_SPI_U_BOOT_OFFS
> +#define CONFIG_SYS_U_BOOT_OFFS		0x30000
>   #endif
>   
>   #if CONFIG_SPL_BOOT_DEVICE == SPL_BOOT_SDIO_MMC_CARD
>   /* SPL related MMC defines */
>   #define CONFIG_SPL_MMC_SUPPORT
> -#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION 1
> -#define CONFIG_SYS_MMC_U_BOOT_OFFS		(168 << 10)
> -#define CONFIG_SYS_U_BOOT_OFFS			CONFIG_SYS_MMC_U_BOOT_OFFS
> -#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR	(CONFIG_SYS_U_BOOT_OFFS / 512)
> +#define CONFIG_SYS_U_BOOT_OFFS			(168 << 10)
>   #ifdef CONFIG_SPL_BUILD
>   #define CONFIG_FIXED_SDHCI_ALIGNED_BUFFER	0x00180000	/* in SDRAM */
>   #endif
> diff --git a/include/configs/db-88f6720.h b/include/configs/db-88f6720.h
> index 213883ef0f..14c0190375 100644
> --- a/include/configs/db-88f6720.h
> +++ b/include/configs/db-88f6720.h
> @@ -66,6 +66,6 @@
>   #define CONFIG_SPL_BOOTROM_SAVE		(CONFIG_SPL_STACK + 4)
>   
>   /* SPL related SPI defines */
> -#define CONFIG_SYS_U_BOOT_OFFS		CONFIG_SYS_SPI_U_BOOT_OFFS
> +#define CONFIG_SYS_U_BOOT_OFFS		0x20000
>   
>   #endif /* _CONFIG_DB_88F6720_H */
> diff --git a/include/configs/db-88f6820-amc.h b/include/configs/db-88f6820-amc.h
> index fe9a7ab563..3cd1ff899a 100644
> --- a/include/configs/db-88f6820-amc.h
> +++ b/include/configs/db-88f6820-amc.h
> @@ -61,7 +61,7 @@
>   
>   #if CONFIG_SPL_BOOT_DEVICE == SPL_BOOT_SPI_NOR_FLASH
>   /* SPL related SPI defines */
> -#define CONFIG_SYS_U_BOOT_OFFS		CONFIG_SYS_SPI_U_BOOT_OFFS
> +#define CONFIG_SYS_U_BOOT_OFFS		0x24000
>   #endif
>   
>   /*
> diff --git a/include/configs/db-88f6820-gp.h b/include/configs/db-88f6820-gp.h
> index ed851bc670..5e43191e8e 100644
> --- a/include/configs/db-88f6820-gp.h
> +++ b/include/configs/db-88f6820-gp.h
> @@ -73,13 +73,12 @@
>   
>   #if CONFIG_SPL_BOOT_DEVICE == SPL_BOOT_SPI_NOR_FLASH
>   /* SPL related SPI defines */
> -#define CONFIG_SYS_U_BOOT_OFFS		CONFIG_SYS_SPI_U_BOOT_OFFS
> +#define CONFIG_SYS_U_BOOT_OFFS		0x24000
>   #endif
>   
>   #if CONFIG_SPL_BOOT_DEVICE == SPL_BOOT_SDIO_MMC_CARD
>   /* SPL related MMC defines */
> -#define CONFIG_SYS_MMC_U_BOOT_OFFS		(160 << 10)
> -#define CONFIG_SYS_U_BOOT_OFFS			CONFIG_SYS_MMC_U_BOOT_OFFS
> +#define CONFIG_SYS_U_BOOT_OFFS			(160 << 10)
>   #ifdef CONFIG_SPL_BUILD
>   #define CONFIG_FIXED_SDHCI_ALIGNED_BUFFER	0x00180000	/* in SDRAM */
>   #endif
> diff --git a/include/configs/db-mv784mp-gp.h b/include/configs/db-mv784mp-gp.h
> index 3e20516e94..990fcec129 100644
> --- a/include/configs/db-mv784mp-gp.h
> +++ b/include/configs/db-mv784mp-gp.h
> @@ -79,7 +79,7 @@
>   #define CONFIG_SPL_BOOTROM_SAVE		(CONFIG_SPL_STACK + 4)
>   
>   /* SPL related SPI defines */
> -#define CONFIG_SYS_U_BOOT_OFFS		CONFIG_SYS_SPI_U_BOOT_OFFS
> +#define CONFIG_SYS_U_BOOT_OFFS		0x20000
>   
>   /* Enable DDR support in SPL (DDR3 training from Marvell bin_hdr) */
>   #define CONFIG_SPD_EEPROM		0x4e
> diff --git a/include/configs/ds414.h b/include/configs/ds414.h
> index c8b45066cc..b34da334e2 100644
> --- a/include/configs/ds414.h
> +++ b/include/configs/ds414.h
> @@ -70,7 +70,7 @@
>   
>   #if defined(CONFIG_MVEBU_SPL_BOOT_DEVICE_SPI)
>   /* SPL related SPI defines */
> -#define CONFIG_SYS_U_BOOT_OFFS		CONFIG_SYS_SPI_U_BOOT_OFFS
> +#define CONFIG_SYS_U_BOOT_OFFS		0x24000
>   #endif
>   
>   /* DS414 bus width is 32bits */
> diff --git a/include/configs/helios4.h b/include/configs/helios4.h
> index 2cda05c85a..3875377971 100644
> --- a/include/configs/helios4.h
> +++ b/include/configs/helios4.h
> @@ -71,11 +71,10 @@
>   
>   #if defined(CONFIG_MVEBU_SPL_BOOT_DEVICE_SPI)
>   /* SPL related SPI defines */
> -#define CONFIG_SYS_U_BOOT_OFFS		CONFIG_SYS_SPI_U_BOOT_OFFS
> +#define CONFIG_SYS_U_BOOT_OFFS		0x20000
>   #elif defined(CONFIG_MVEBU_SPL_BOOT_DEVICE_MMC) || defined(CONFIG_MVEBU_SPL_BOOT_DEVICE_SATA)
>   /* SPL related MMC defines */
> -#define CONFIG_SYS_MMC_U_BOOT_OFFS		(160 << 10)
> -#define CONFIG_SYS_U_BOOT_OFFS			CONFIG_SYS_MMC_U_BOOT_OFFS
> +#define CONFIG_SYS_U_BOOT_OFFS			(160 << 10)
>   #ifdef CONFIG_SPL_BUILD
>   #define CONFIG_FIXED_SDHCI_ALIGNED_BUFFER	0x00180000	/* in SDRAM */
>   #endif
> diff --git a/include/configs/theadorable.h b/include/configs/theadorable.h
> index 587b134a1b..bfe135da6b 100644
> --- a/include/configs/theadorable.h
> +++ b/include/configs/theadorable.h
> @@ -94,7 +94,7 @@
>   #define CONFIG_SPL_BOOTROM_SAVE		(CONFIG_SPL_STACK + 4)
>   
>   /* SPL related SPI defines */
> -#define CONFIG_SYS_U_BOOT_OFFS		CONFIG_SYS_SPI_U_BOOT_OFFS
> +#define CONFIG_SYS_U_BOOT_OFFS		0x1a000
>   
>   /* Enable DDR support in SPL (DDR3 training from Marvell bin_hdr) */
>   #define CONFIG_DDR_FIXED_SIZE		(2 << 20)	/* 2GiB */
> diff --git a/include/configs/turris_omnia.h b/include/configs/turris_omnia.h
> index 7da18f97db..49ee7a7af5 100644
> --- a/include/configs/turris_omnia.h
> +++ b/include/configs/turris_omnia.h
> @@ -47,13 +47,12 @@
>   
>   #ifdef CONFIG_MVEBU_SPL_BOOT_DEVICE_SPI
>   /* SPL related SPI defines */
> -# define CONFIG_SYS_U_BOOT_OFFS		CONFIG_SYS_SPI_U_BOOT_OFFS
> +# define CONFIG_SYS_U_BOOT_OFFS		0x24000
>   #endif
>   
>   #ifdef CONFIG_MVEBU_SPL_BOOT_DEVICE_MMC
>   /* SPL related MMC defines */
> -# define CONFIG_SYS_MMC_U_BOOT_OFFS		(160 << 10)
> -# define CONFIG_SYS_U_BOOT_OFFS			CONFIG_SYS_MMC_U_BOOT_OFFS
> +# define CONFIG_SYS_U_BOOT_OFFS			(160 << 10)
>   # ifdef CONFIG_SPL_BUILD
>   #  define CONFIG_FIXED_SDHCI_ALIGNED_BUFFER	0x00180000	/* in SDRAM */
>   # endif
> diff --git a/include/configs/x530.h b/include/configs/x530.h
> index 4446510df4..25b259832a 100644
> --- a/include/configs/x530.h
> +++ b/include/configs/x530.h
> @@ -98,6 +98,6 @@
>   #define CONFIG_SPL_BOOTROM_SAVE		(CONFIG_SPL_STACK + 4)
>   
>   /* SPL related SPI defines */
> -#define CONFIG_SYS_U_BOOT_OFFS		CONFIG_SYS_SPI_U_BOOT_OFFS
> +#define CONFIG_SYS_U_BOOT_OFFS		0x24000
>   
>   #endif /* _CONFIG_X530_H */
> 


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