
On 06/26/2013 02:18:32 AM, ying.zhang@freescale.com wrote:
diff --git a/Makefile b/Makefile index 0513e4d..a3c7282 100644 --- a/Makefile +++ b/Makefile @@ -895,7 +895,7 @@ clobber: tidy @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)tpl/u-boot-spl.lds
Huh?
@rm -f $(obj)MLO MLO.byteswap @rm -f $(obj)SPL @rm -f $(obj)tools/xway-swap-bytes @@ -906,6 +906,7 @@ clobber: tidy @[ ! -d $(obj)nand_spl ] || find $(obj)nand_spl -name "*" -type l -print | xargs rm -f @rm -f $(obj)dts/*.tmp @rm -f $(obj)spl/u-boot-spl{,-pad}.ais
- @rm -f $(obj)tpl/u-boot-tpl{,-pad}.ais
Is there ever a TPL that ends in .ais?
diff --git a/board/freescale/p1022ds/tpl.c b/board/freescale/p1022ds/tpl.c new file mode 100644 index 0000000..628b9e8 --- /dev/null +++ b/board/freescale/p1022ds/tpl.c @@ -0,0 +1,102 @@ +/*
- 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.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- MA 02111-1307 USA
- */
+#include <common.h> +#include <ns16550.h> +#include <malloc.h> +#include <i2c.h> +#include <nand.h> +#include "../common/ngpixis.h"
+DECLARE_GLOBAL_DATA_PTR;
+static const u32 sysclk_tbl[] = {
- 66666000, 7499900, 83332500, 8999900,
- 99999000, 11111000, 12499800, 13333200
+};
+ulong get_effective_memsize(void) +{
- return CONFIG_SYS_L2_SIZE;
+}
+void board_init_f(ulong bootflag) +{
- int px_spd;
- u32 plat_ratio, sys_clk, bus_clk;
- ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
- console_init_f();
- /* Set pmuxcr to allow both i2c1 and i2c2 */
- setbits_be32(&gur->pmuxcr, in_be32(&gur->pmuxcr) | 0x1000);
- setbits_be32(&gur->pmuxcr,
in_be32(&gur->pmuxcr) | MPC85xx_PMUXCR_SD_DATA);
- /* Read back the register to synchronize the write. */
- in_be32(&gur->pmuxcr);
- /* initialize selected port with appropriate baud rate */
- px_spd = in_8((unsigned char *)(PIXIS_BASE + PIXIS_SPD));
- sys_clk = sysclk_tbl[px_spd & PIXIS_SPD_SYSCLK_MASK];
- plat_ratio = in_be32(&gur->porpllsr) &
MPC85xx_PORPLLSR_PLAT_RATIO;
- bus_clk = sys_clk * plat_ratio / 2;
- NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
bus_clk / 16 / CONFIG_BAUDRATE);
- /* copy code to RAM and jump to it - this should not return */
- /* NOTE - code has to be copied out of NAND buffer before
* other blocks can be read.
*/
- relocate_code(CONFIG_SYS_NAND_U_BOOT_RELOC_SP, 0,
CONFIG_SYS_NAND_U_BOOT_RELOC);
+}
+void board_init_r(gd_t *gd, ulong dest_addr) +{
- /* Pointer is writable since we allocated a register for it */
- gd = (gd_t *)CONFIG_SYS_GD_ADDR;
- bd_t *bd;
- memset(gd, 0, sizeof(gd_t));
- bd = (bd_t *)(CONFIG_SYS_GD_ADDR + sizeof(gd_t));
- memset(bd, 0, sizeof(bd_t));
- gd->bd = bd;
- bd->bi_memstart = CONFIG_SYS_INIT_L2_ADDR;
- bd->bi_memsize = CONFIG_SYS_L2_SIZE;
- probecpu();
- get_clocks();
- mem_malloc_init(CONFIG_SYS_RELOC_MALLOC_ADDR, \
CONFIG_SYS_RELOC_MALLOC_SIZE);
- /* relocate environment function pointers etc. */
- nand_load(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
(uchar *)CONFIG_ENV_ADDR);
- gd->env_addr = (ulong)(CONFIG_ENV_ADDR);
- gd->env_valid = 1;
- i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
- gd->ram_size = initdram(0);
- puts("Tertiary program loader running in sram...");
- nand_boot();
+}
This looks a lot like board/freescale/p1022ds/spl.c. Find a way to share them.
Don't hardcode that it's NAND boot.
diff --git a/drivers/mtd/nand/fsl_elbc_spl.c b/drivers/mtd/nand/fsl_elbc_spl.c index ab208fd..8924e2d 100644 --- a/drivers/mtd/nand/fsl_elbc_spl.c +++ b/drivers/mtd/nand/fsl_elbc_spl.c @@ -50,7 +50,7 @@ static void nand_wait(void) #ifdef CONFIG_SPL_BUILD static #endif -int nand_load_image(uint32_t offs, unsigned int uboot_size, void *vdst) +int nand_load(uint32_t offs, unsigned int uboot_size, void *vdst) { fsl_lbc_t *regs = LBC_BASE_ADDR; uchar *buf = (uchar *)CONFIG_SYS_NAND_BASE; @@ -140,16 +140,16 @@ void nand_boot(void) /* * Load U-Boot image from NAND into RAM */
- nand_load_image(CONFIG_SYS_NAND_U_BOOT_OFFS,
- nand_load(CONFIG_SYS_NAND_U_BOOT_OFFS, CONFIG_SYS_NAND_U_BOOT_SIZE, (void *)CONFIG_SYS_NAND_U_BOOT_DST);
#ifdef CONFIG_NAND_ENV_DST
- nand_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
- nand_load(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE, (void *)CONFIG_NAND_ENV_DST);
#ifdef CONFIG_ENV_OFFSET_REDUND
- nand_load_image(CONFIG_ENV_OFFSET_REDUND, CONFIG_ENV_SIZE,
- nand_load(CONFIG_ENV_OFFSET_REDUND, CONFIG_ENV_SIZE, (void *)CONFIG_NAND_ENV_DST + CONFIG_ENV_SIZE);
#endif #endif
Why?
-Scott