[PATCH 7/8] ARM: i.MX8: Fix piggydata loading

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>
---
 drivers/mci/imx-esdhc-pbl.c | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/drivers/mci/imx-esdhc-pbl.c b/drivers/mci/imx-esdhc-pbl.c
index fb27c84163..aa93af656c 100644
--- a/drivers/mci/imx-esdhc-pbl.c
+++ b/drivers/mci/imx-esdhc-pbl.c
@@ -428,14 +428,12 @@ int imx8_esdhc_start_image(int instance)
 
 int imx8_esdhc_load_piggy(int instance)
 {
-	void *buf = (void *)MX8MQ_ATF_BL33_BASE_ADDR;
+	void *buf, *piggy;
 	struct imx_flash_header_v2 *hdr = NULL;
-	void *bb = 0;
 	struct esdhc esdhc;
 	int ret, len;
 	int offset = SZ_32K;
 
-
 	switch (instance) {
 	case 0:
 		esdhc.regs = IOMEM(MX8MQ_USDHC1_BASE_ADDR);
@@ -450,6 +448,13 @@ int imx8_esdhc_load_piggy(int instance)
 	esdhc.is_be = 0;
 	esdhc.is_mx6 = 1;
 
+	/*
+	 * We expect to be running at MX8MQ_ATF_BL33_BASE_ADDR where the atf
+	 * has jumped to. Use a temporary buffer where we won't overwrite
+	 * ourselves.
+	 */
+	buf = (void *)MX8MQ_ATF_BL33_BASE_ADDR + SZ_32M;
+
 	ret = esdhc_search_header(&esdhc, &hdr, buf, &offset);
 	if (ret)
 		return ret;
@@ -462,13 +467,13 @@ int imx8_esdhc_load_piggy(int instance)
 	/*
 	 * Calculate location of the piggydata at the offset loaded into RAM
 	 */
-	buf = buf + offset + hdr->boot_data.size;
+	piggy = buf + offset + hdr->boot_data.size;
+
 	/*
-	 * Barebox expects the piggydata right behind the PBL in the beginning
-	 * of RAM.
+	 * Copy the piggydata where the uncompressing code expects it
 	 */
-	bb = (void *) MX8MQ_DDR_CSD1_BASE_ADDR + barebox_pbl_size;
-	memcpy(bb, buf, piggydata_size());
+	memcpy(input_data, piggy, piggydata_size());
+
 	return ret;
 }
 #endif
-- 
2.20.1


_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox



[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux