From mboxrd@z Thu Jan 1 00:00:00 1970 From: Scott Wood Date: Wed, 26 Jun 2013 17:33:12 -0500 Subject: [U-Boot] [PATCH 6/7 v6] nand: tpl : introduce the TPL based on the SPL In-Reply-To: <1372231112-25185-6-git-send-email-ying.zhang@freescale.com> (from ying.zhang@freescale.com on Wed Jun 26 02:18:31 2013) Message-ID: <1372285992.8183.44@snotra> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 06/26/2013 02:18:31 AM, ying.zhang at freescale.com wrote: > From: Ying Zhang > > Due to the nand SPL on some board(e.g. P1022DS)has a size limit, it > can > not be more than 4K. So, the SPL cannot initialize the DDR with the > SPD > code. This patch introduces TPL to enable a loader stub that runs in > the > L2 SRAM, after being loaded by the code from the SPL. It initializes > the > DDR with the SPD or other operations. > > The TPL's size is sizeable, the maximum size must not exceed the size > of L2 > SRAM. Using L2 SRAM for this is an implementation detail, and not appropriate for a description of the generic TPL infrastructure. For example, on newer QorIQ chips you'd be using CPC (L3) SRAM. > It initializes the DDR through SPD code, and copys final uboot image > to DDR. So there are three stage uboot images: > * spl_boot, * tpl_boot, * final uboot image, > > This patch is on top of the patch: > SPL : spi flash : support to start from eSPI with SPL You don't need to mention a dependency on an earlier patch in the same patchset (and when you do need to mention a dependency, it should be below the --- line so it doesn't go into the git history). OTOH, you do need to mention the dependency on the patch to have a separate autoconf.mk. > Signed-off-by: Ying Zhang > --- > Compared with the original version, Changed as below: > 1. Split from "powerpc/p1022ds: nand: introduce the TPL based on the > SPL". > 2. No change. > 3. No change. > 4. No change. > 5. Use ifdef to define "nand_load_image" to non-static for non-SPL > > Makefile | 21 +++- > README | 57 +++++++- > arch/powerpc/config.mk | 2 + > .../cpu/mpc8xxx/ddr/lc_common_dimm_params.c | 4 +- > arch/powerpc/lib/Makefile | 2 + > common/Makefile | 9 + > common/cmd_nvedit.c | 8 +- > config.mk | 32 ++++ > doc/README.TPL | 69 +++++++++ > drivers/mtd/nand/Makefile | 7 + > drivers/mtd/nand/fsl_elbc_spl.c | 5 +- > drivers/serial/serial.c | 2 +- > include/bootstage.h | 3 +- > tpl/Makefile | 161 > ++++++++++++++++++++ > 14 files changed, 368 insertions(+), 14 deletions(-) > create mode 100644 doc/README.TPL > create mode 100644 tpl/Makefile > > diff --git a/Makefile b/Makefile > index fdaddb9..0513e4d 100644 > --- a/Makefile > +++ b/Makefile > @@ -118,10 +118,11 @@ endif # ifneq ($(BUILD_DIR),) > > OBJTREE := $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR)) > SPLTREE := $(OBJTREE)/spl > +TPLTREE := $(OBJTREE)/tpl > SRCTREE := $(CURDIR) > TOPDIR := $(SRCTREE) > LNDIR := $(OBJTREE) > -export TOPDIR SRCTREE OBJTREE SPLTREE > +export TOPDIR SRCTREE OBJTREE SPLTREE TPLTREE > > MKCONFIG := $(SRCTREE)/mkconfig > export MKCONFIG > @@ -412,6 +413,7 @@ ALL-y += $(obj)u-boot.srec $(obj)u-boot.bin > $(obj)System.map > ALL-$(CONFIG_NAND_U_BOOT) += $(obj)u-boot-nand.bin > ALL-$(CONFIG_ONENAND_U_BOOT) += $(obj)u-boot-onenand.bin > ALL-$(CONFIG_SPL) += $(obj)spl/u-boot-spl.bin > +ALL-$(CONFIG_TPL) += $(obj)tpl/u-boot-tpl.bin > ALL-$(CONFIG_OF_SEPARATE) += $(obj)u-boot.dtb $(obj)u-boot-dtb.bin > ifneq ($(CONFIG_SPL_TARGET),) > ALL-$(CONFIG_SPL) += $(obj)$(subst ",,$(CONFIG_SPL_TARGET)) > @@ -498,6 +500,18 @@ $(obj)u-boot-with-spl.bin: > $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin > cat $(obj)spl/u-boot-spl-pad.bin $(obj)u-boot.bin > $@ > rm $(obj)spl/u-boot-spl-pad.bin > > +$(obj)u-boot-with-tpl.bin: $(obj)spl/u-boot-spl.bin > $(obj)tpl/u-boot-tpl.bin \ > + $(obj)u-boot.bin > + $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(CONFIG_SPL_PAD_TO) \ > + -I binary -O binary \ > + $(obj)spl/u-boot-spl.bin > $(obj)spl/u-boot-spl-pad.bin > + $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(CONFIG_SYS_PAD_TO) \ > + -I binary -O binary \ > + $(obj)tpl/u-boot-tpl.bin > $(obj)tpl/u-boot-tpl-pad.bin > + cat $(obj)spl/u-boot-spl-pad.bin > $(obj)tpl/u-boot-tpl-pad.bin \ > + $(obj)u-boot.bin > $@ > + rm $(obj)spl/u-boot-spl-pad.bin > $(obj)tpl/u-boot-tpl-pad.bin Can we do this with less duplication? Ideally u-boot-with-tpl.bin would be just TPL and the main U-Boot, and then we'd feed that into the u-boot-with-spl.bin rule. Or even call the same code twice (pattern rule, make function, etc). > @@ -877,6 +894,8 @@ clobber: tidy > @rm -f > $(obj)nand_spl/{u-boot-nand_spl.lds,u-boot-spl,u-boot-spl.map} > @rm -f $(obj)spl/{u-boot-spl,u-boot-spl.bin,u-boot-spl.map} > @rm -f $(obj)spl/u-boot-spl.lds > + @rm -f $(obj)tpl/{u-boot-tpl,u-boot-tpl.bin,u-boot-tpl.map} > + @rm -f $(obj)tpl/u-boot-tpl.lds > @rm -f $(obj)MLO MLO.byteswap > @rm -f $(obj)SPL > @rm -f $(obj)tools/xway-swap-bytes > diff --git a/README b/README > index b941a56..0c20253 100644 > --- a/README > +++ b/README > @@ -2999,9 +2999,10 @@ FIT uImage format: > Set for the SPL on PPC mpc8xxx targets, support for > arch/powerpc/cpu/mpc8xxx/ddr/libddr.o in SPL binary. > > - CONFIG_SPL_COMMON_INIT_DDR > + CONFIG_COMMON_INIT_DDR > Set for common ddr init with serial presence detect in > - SPL binary. > + SPL binary or TPL binary. Please keep SPL in the name of these. Consider TPL as a type of SPL. Changing the name just causes a lot of churn, and it is confusing because you end up with a name that looks like it applies to the main U-Boot, when it actually applies just to SPL/TPL. > +- CONFIG_SYS_MPC8XXX_INIT_DDR_SUPPORT > + Set for the SPL on PPC mpc8xxx targets, support for > + arch/powerpc/cpu/mpc8xxx/ddr/libddr.o. > + > +- CONFIG_SYS_ENV_SUPPORT > + Support for the environment operating. > + > +- CONFIG_SYS_SERIAL_SUPPORT > + Support for drivers/serial/libserial.o. > + > +- CONFIG_SYS_LIBGENERIC_SUPPORT > + Support for lib/libgeneric.o. > + > +- CONFIG_SYS_LIBCOMMON_SUPPORT > + Support for common/libcommon.o. > + > +- CONFIG_SYS_I2C_SUPPORT > + Support for drivers/i2c/libi2c.o. > + > +- CONFIG_SYS_NAND_SUPPORT > + Support for drivers/mtd/nand/libnand.o. Likewise, except here you seem to still be duplicating the SPL defines rather than renaming them. Also, CONFIG_SYS_ is generally used to describe the hardware or similar, not to indicate which parts of the source code to enable. > diff --git a/tpl/Makefile b/tpl/Makefile > new file mode 100644 > index 0000000..bb947e5 > --- /dev/null > +++ b/tpl/Makefile > @@ -0,0 +1,161 @@ > +# > +# Copyright 2013 Freescale Semiconductor, Inc. > +# > +# This program is free software; you can redistribute it and/or > modify it > +# under the terms of the GNU General Public License as published by > the Free > +# Software Foundation; either version 2 of the License, or (at your > option) > +# any later version. > +# > + > +CONFIG_TPL_BUILD := y > +export CONFIG_TPL_BUILD Please find a way to reuse spl/Makefile by invoking it twice. -Scott