On 06/26/2013 02:18:31 AM, ying.zh...@freescale.com wrote:
From: Ying Zhang <b40...@freescale.com>
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 <b40...@freescale.com>
---
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
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot