[PATCH v3 3/3] mmc: fsl_esdhc_spl: Add support for builds without CONFIG_SYS_MMC_U_BOOT_OFFS

jh80.chung at samsung.com jh80.chung at samsung.com
Thu Aug 11 07:48:21 CEST 2022


Hi,

> -----Original Message-----
> From: Pali Rohar [mailto:pali at kernel.org]
> Sent: Saturday, August 6, 2022 5:10 AM
> To: Jaehoon Chung; Peng Fan; Marek Behun
> Cc: Sinan Akman; u-boot at lists.denx.de
> Subject: [PATCH v3 3/3] mmc: fsl_esdhc_spl: Add support for builds without
> CONFIG_SYS_MMC_U_BOOT_OFFS
>
> When fixed offset via CONFIG_SYS_MMC_U_BOOT_OFFS is not specified then
> expects that U-Boot proper is placed immediately after SPL without any
> additional padding.
>
> This allows to generate smaller SPL+U-Boot final binary as it is not
> required to specify fixed offset to U-Boot proper at SPL compile time.
>
> In this case offset to U-Boot proper is calculated at SPL compile time in
> linker script.
>
> Signed-off-by: Pali Rohar <pali at kernel.org>

Reviewed-by: Jaehoon Chung <jh80.chung at samsung.com>

Best Regards,
Jaehoon Chung

> ---
>  arch/powerpc/cpu/mpc85xx/u-boot-spl.lds | 10 ++++++++++
>  drivers/mmc/fsl_esdhc_spl.c             |  8 ++++++++
>  2 files changed, 18 insertions(+)
>
> diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds b/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
> index 89df4b5f6f07..f775f6bc4d06 100644
> --- a/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
> +++ b/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
> @@ -62,6 +62,13 @@ SECTIONS
>  	__init_begin = .;
>  	__init_end = .;
>  	_end = .;
> +
> +#ifdef CONFIG_SYS_MPC85XX_NO_RESETVEC
> +#if defined(CONFIG_SDCARD) && !defined(CONFIG_SYS_MMC_U_BOOT_OFFS)
> +	mmc_u_boot_offs = .;
> +#endif
> +#endif
> +
>  #ifdef CONFIG_SPL_SKIP_RELOCATE
>  	. = ALIGN(4);
>  	__bss_start = .;
> @@ -94,6 +101,9 @@ SECTIONS
>  	.resetvec IMAGE_TEXT_BASE + RESET_VECTOR_OFFSET : {
>  		KEEP(*(.resetvec))
>  	} = 0xffff
> +#if defined(CONFIG_SDCARD) && !defined(CONFIG_SYS_MMC_U_BOOT_OFFS)
> +	mmc_u_boot_offs = .;
> +#endif
>  #endif
>
>  #ifndef CONFIG_SPL_SKIP_RELOCATE
> diff --git a/drivers/mmc/fsl_esdhc_spl.c b/drivers/mmc/fsl_esdhc_spl.c
> index dd6d5fa81ea6..aa00d7e2014d 100644
> --- a/drivers/mmc/fsl_esdhc_spl.c
> +++ b/drivers/mmc/fsl_esdhc_spl.c
> @@ -9,6 +9,10 @@
>  #include <mmc.h>
>  #include <malloc.h>
>
> +#ifndef CONFIG_SYS_MMC_U_BOOT_OFFS
> +extern uchar mmc_u_boot_offs[];
> +#endif
> +
>  /*
>   * The environment variables are written to just after the u-boot image
>   * on SDCard, so we must read the MBR to get the start address and code
> @@ -149,7 +153,11 @@ again:
>  		val = *(tmp_buf + blk_off + ESDHC_BOOT_IMAGE_ADDR + i);
>  		offset = (offset << 8) + val;
>  	}
> +#ifndef CONFIG_SYS_MMC_U_BOOT_OFFS
> +	offset += (ulong)&mmc_u_boot_offs - CONFIG_SPL_TEXT_BASE;
> +#else
>  	offset += CONFIG_SYS_MMC_U_BOOT_OFFS;
> +#endif
>  #endif
>  	/*
>  	* Load U-Boot image from mmc into RAM
> --
> 2.20.1





More information about the U-Boot mailing list