X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=nand_spl%2Fnand_boot_fsl_elbc.c;h=ff47d55311e21cc57b42d8808c972a11f3668a97;hb=e0f2318f85780c9f4fd5ea0bb5da475b33ebdf78;hp=0d2378ee894d29d084fe19ab7bcd1c684ff28834;hpb=5a7ddf4e1fb9347f783eb1473c30187d7a22bd81;p=u-boot diff --git a/nand_spl/nand_boot_fsl_elbc.c b/nand_spl/nand_boot_fsl_elbc.c index 0d2378ee89..ff47d55311 100644 --- a/nand_spl/nand_boot_fsl_elbc.c +++ b/nand_spl/nand_boot_fsl_elbc.c @@ -25,7 +25,6 @@ #include #include -#include #include #include @@ -33,7 +32,7 @@ static void nand_wait(void) { - lbus83xx_t *regs = (lbus83xx_t *)(CFG_IMMR + 0x5000); + fsl_lbus_t *regs = (fsl_lbus_t *)(CONFIG_SYS_IMMR + 0x5000); for (;;) { uint32_t status = in_be32(®s->ltesr); @@ -50,8 +49,8 @@ static void nand_wait(void) static void nand_load(unsigned int offs, int uboot_size, uchar *dst) { - lbus83xx_t *regs = (lbus83xx_t *)(CFG_IMMR + 0x5000); - uchar *buf = (uchar *)CFG_NAND_BASE; + fsl_lbus_t *regs = (fsl_lbus_t *)(CONFIG_SYS_IMMR + 0x5000); + uchar *buf = (uchar *)CONFIG_SYS_NAND_BASE; int large = in_be32(®s->bank[0].or) & OR_FCM_PGS; int block_shift = large ? 17 : 14; int block_size = 1 << block_shift; @@ -120,7 +119,7 @@ static void nand_load(unsigned int offs, int uboot_size, uchar *dst) pos += page_size; offs += page_size; - } while (offs & (block_size - 1)); + } while ((offs & (block_size - 1)) && (pos < uboot_size)); } } @@ -133,18 +132,21 @@ void nand_boot(void) { __attribute__((noreturn)) void (*uboot)(void); - udelay(1000000); - /* * Load U-Boot image from NAND into RAM */ - nand_load(CFG_NAND_U_BOOT_OFFS, CFG_NAND_U_BOOT_SIZE, - (uchar *)CFG_NAND_U_BOOT_DST); + nand_load(CONFIG_SYS_NAND_U_BOOT_OFFS, CONFIG_SYS_NAND_U_BOOT_SIZE, + (uchar *)CONFIG_SYS_NAND_U_BOOT_DST); /* * Jump to U-Boot image */ puts("transfering control\n"); - uboot = (void *)CFG_NAND_U_BOOT_START; + /* + * Clean d-cache and invalidate i-cache, to + * make sure that no stale data is executed. + */ + flush_cache(CONFIG_SYS_NAND_U_BOOT_DST, CONFIG_SYS_NAND_U_BOOT_SIZE); + uboot = (void *)CONFIG_SYS_NAND_U_BOOT_START; uboot(); }