[U-Boot] [PATCH v4] board/fsl/lx2160a: Fix MC firmware loading during SD boot

Pankaj Bansal pankaj.bansal at nxp.com
Mon Mar 25 10:37:47 UTC 2019


during SD boot, following error comes:
  MMC read: dev # 0, block # 20480, count 2048 ... 2048 blocks read: OK

  MMC read: dev # 0, block # 28672, count 2048 ... 2048 blocks read: OK
  fsl-mc: ERR: Bad firmware image (bad FIT header)
  Hit any key to stop autoboot:  0

it's occurring because mc 10.14.3 file size is 1064880, which means 0x820
SD blocks which is more than 0x800 blocks (1MB). This results in DPC
loading address 0x80100000 overlapping with MC loading address 0x80000000.

so, update the MC/dpl/dpc addresses as per their addresses in SD card.
Assuming that SD card block size is 512 bytes and 0x0 block in SD card
would get loaded at 0x80000000 (DDR base address), this gives following
addresses for various binaries:

Binary | SD block | DDR offset
------------------------------
MC     | 0x5000   | 0x80a00000
DPL    | 0x6800   | 0x80d00000
DPC    | 0x7000   | 0x80e00000

Signed-off-by: Pankaj Bansal <pankaj.bansal at nxp.com>
---

Notes:
    V4:
    - Modify the commit message to remove any reference to Flexspi flash
    V3:
    - modify the commit message.
    - remove issue/cause/fix from message.
    V2:
    - reduce the mc firmware size blocks from 0x1800 to 0x1200, to save on
      boot time
    - Fix the commit message to indicate that the patch is for LX2160A boards
      only and for SD boot only

 include/configs/lx2160a_common.h | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/include/configs/lx2160a_common.h b/include/configs/lx2160a_common.h
index 637619cb55..4fc429d7b6 100644
--- a/include/configs/lx2160a_common.h
+++ b/include/configs/lx2160a_common.h
@@ -200,14 +200,14 @@ unsigned long get_board_ddr_clk(void);
 	"fsl_mc start mc 0x20a00000 0x20e00000\0"
 
 #define SD_MC_INIT_CMD				\
-	"mmc read 0x80000000 0x5000 0x800;"	\
-	"mmc read 0x80100000 0x7000 0x800;"	\
+	"mmc read 0x80a00000 0x5000 0x1200;"	\
+	"mmc read 0x80e00000 0x7000 0x800;"	\
 	"env exists secureboot && "		\
 	"mmc read 0x80700000 0x3800 0x10 && "	\
 	"mmc read 0x80740000 0x3A00 0x10 && "	\
 	"esbc_validate 0x80700000 && "		\
 	"esbc_validate 0x80740000 ;"		\
-	"fsl_mc start mc 0x80000000 0x80100000\0"
+	"fsl_mc start mc 0x80a00000 0x80e00000\0"
 
 #define EXTRA_ENV_SETTINGS			\
 	"hwconfig=fsl_ddr:bank_intlv=auto\0"	\
@@ -272,11 +272,11 @@ unsigned long get_board_ddr_clk(void);
 
 #define SD_BOOTCOMMAND						\
 		"env exists mcinitcmd && mmcinfo; "		\
-		"mmc read 0x80001000 0x6800 0x800; "		\
+		"mmc read 0x80d00000 0x6800 0x800; "		\
 		"env exists mcinitcmd && env exists secureboot "	\
 		" && mmc read 0x80780000 0x3C00 0x10 "		\
 		"&& esbc_validate 0x80780000;env exists mcinitcmd "	\
-		"&& fsl_mc lazyapply dpl 0x80001000;"		\
+		"&& fsl_mc lazyapply dpl 0x80d00000;"		\
 		"run distro_bootcmd;run sd_bootcmd;"		\
 		"env exists secureboot && esbc_halt;"
 
-- 
2.17.1



More information about the U-Boot mailing list