Hi, > -----Original Message----- > From: Pali Rohar [mailto:p...@kernel.org] > Sent: Saturday, August 6, 2022 5:10 AM > To: Jaehoon Chung; Peng Fan; Marek Behun > Cc: Sinan Akman; u-boot@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 <p...@kernel.org>
Reviewed-by: Jaehoon Chung <jh80.ch...@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