From 3d1e8a9d4e40ce17a4fec75ee4055e7ddf6ca1a9 Mon Sep 17 00:00:00 2001
From: wdenk <wdenk>
Date: Thu, 16 Oct 2003 12:53:35 +0000
Subject: [PATCH] TRAB auto-update: Base decision if we have to strip the image
 header on image type as encoded in the header

---
 CHANGELOG                |  3 +++
 README                   |  4 ++--
 board/trab/auto_update.c | 12 ++++++------
 3 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 0c871e9b693..b8e52fdb6c4 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,9 @@
 Changes for U-Boot 1.0.0:
 ======================================================================
 
+* TRAB auto-update: Base decision if we have to strip the image
+  header on image type as encoded in the header
+
 * Patches by Xianghua Xiao, 15 Oct 2003:
 
   - Added Motorola CPU 8540/8560 support (cpu/85xx)
diff --git a/README b/README
index e3f4f9ddd41..82a8ec64a14 100644
--- a/README
+++ b/README
@@ -2325,8 +2325,8 @@ defines the following image properties:
   LynxOS, pSOS, QNX, RTEMS, ARTOS;
   Currently supported: Linux, NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS).
 * Target CPU Architecture (Provisions for Alpha, ARM, Intel x86,
-  IA64, MIPS, MIPS, PowerPC, IBM S390, SuperH, Sparc, Sparc 64 Bit;
-  Currently supported: PowerPC).
+  IA64, MIPS, NIOS, PowerPC, IBM S390, SuperH, Sparc, Sparc 64 Bit;
+  Currently supported: ARM, Intel x86, MIPS, NIOS, PowerPC).
 * Compression Type (uncompressed, gzip, bzip2)
 * Load Address
 * Entry Point
diff --git a/board/trab/auto_update.c b/board/trab/auto_update.c
index 40a92fd91eb..dd62d094837 100644
--- a/board/trab/auto_update.c
+++ b/board/trab/auto_update.c
@@ -352,8 +352,12 @@ au_do_update(int idx, long sz)
 	debug ("flash_sect_erase(%lx, %lx);\n", start, end);
 	flash_sect_erase(start, end);
 	wait_ms(100);
-	/* strip the header - except for the kernel and app */
-	if (idx == IDX_FIRMWARE || idx == IDX_DISK) {
+	/* strip the header - except for the kernel and ramdisk */
+	if (hdr->ih_type == IH_TYPE_KERNEL || hdr->ih_type == IH_TYPE_RAMDISK) {
+		addr = (char *)hdr;
+		off = sizeof(*hdr);
+		nbytes = sizeof(*hdr) + ntohl(hdr->ih_size);
+	} else {
 		addr = (char *)((char *)hdr + sizeof(*hdr));
 #ifdef AU_UPDATE_TEST
 		/* copy it to where Linux goes */
@@ -362,10 +366,6 @@ au_do_update(int idx, long sz)
 #endif
 		off = 0;
 		nbytes = ntohl(hdr->ih_size);
-	} else {
-		addr = (char *)hdr;
-		off = sizeof(*hdr);
-		nbytes = sizeof(*hdr) + ntohl(hdr->ih_size);
 	}
 
 	/* copy the data from RAM to FLASH */
-- 
GitLab