* Patch by Gridish Shlomi, 30 Aug 2004:
  - Add support to revA version of PQ27 and PQ27E.
  - Reverted MPC8260ADS baudrate back to original 115200

* Patch by Hojin, 17 Sep 2004:
  Fix typo in cfi_flash.c

* Patch by Mark Jonas, 09 September 2004:
  mtest's data line test (with CFG_ALT_MEMTEST set) returned a wrong
  error message

* Patch by Mark Jonas, 31 August 2004:
  Added option CFG_XLB_PIPELINING to enable XLB pipelining. This
  improves FTP performance for MPC5200 systems. Enabled for IceCube
  by default.
diff --git a/CHANGELOG b/CHANGELOG
index 1783fb6..c0aa327 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,22 @@
 Changes since U-Boot 1.1.1:
 ======================================================================
 
+* Patch by Gridish Shlomi, 30 Aug 2004:
+  - Add support to revA version of PQ27 and PQ27E.
+  - Reverted MPC8260ADS baudrate back to original 115200
+
+* Patch by Hojin, 17 Sep 2004:
+  Fix typo in cfi_flash.c
+  
+* Patch by Mark Jonas, 09 September 2004:
+  mtest's data line test (with CFG_ALT_MEMTEST set) returned a wrong
+  error message
+
+* Patch by Mark Jonas, 31 August 2004:
+  Added option CFG_XLB_PIPELINING to enable XLB pipelining. This
+  improves FTP performance for MPC5200 systems. Enabled for IceCube
+  by default.
+
 * Patch by Michael Bendzick, 30 Aug 2004:
   - Improve platform.S code for omap1510inn that detects whether code
     is running from SDRAM or not. Patch allows SDRAM to be configured
diff --git a/common/cmd_mem.c b/common/cmd_mem.c
index e5c60bf..b95421a 100644
--- a/common/cmd_mem.c
+++ b/common/cmd_mem.c
@@ -736,7 +736,7 @@
 			if(readback != ~val) {
 			    printf ("FAILURE (data line): "
 				"Is %08lx, should be %08lx\n",
-					val, readback);
+					readback, ~val);
 			}
 		    }
 		}
diff --git a/cpu/mpc5xxx/cpu_init.c b/cpu/mpc5xxx/cpu_init.c
index 3599a86..3df0050 100644
--- a/cpu/mpc5xxx/cpu_init.c
+++ b/cpu/mpc5xxx/cpu_init.c
@@ -170,6 +170,11 @@
 	/* Configure the XLB Arbiter */
 	*(vu_long *)MPC5XXX_XLBARB_MPRIEN = 0xff;
 	*(vu_long *)MPC5XXX_XLBARB_MPRIVAL = 0x11111111;
+
+# if defined(CFG_XLB_PIPELINING)
+	/* Enable piplining */
+	*(vu_long *)(MPC5XXX_XLBARB + 0x40) &= ~(1 << 31);
+# endif
 #endif	/* CONFIG_MPC5200 */
 }
 
diff --git a/cpu/mpc5xxx/pci_mpc5200.c b/cpu/mpc5xxx/pci_mpc5200.c
index 94c157f..490fcd2 100644
--- a/cpu/mpc5xxx/pci_mpc5200.c
+++ b/cpu/mpc5xxx/pci_mpc5200.c
@@ -129,11 +129,6 @@
 	*(vu_long *)(MPC5XXX_XLBARB + 0x40) &= ~((7 << 8) | (3 << 5));
 	*(vu_long *)(MPC5XXX_XLBARB + 0x40) |= (3 << 8) | (3 << 5);
 
-#if 0
-	/* Enable piplining */
-	*(vu_long *)(MPC5XXX_XLBARB + 0x40) &= ~(1 << 31);
-#endif
-
 	/* Disable interrupts from PCI controller */
 	*(vu_long *)MPC5XXX_PCI_GSCR &= ~(7 << 12);
 	*(vu_long *)MPC5XXX_PCI_ICR &= ~(7 << 24);
diff --git a/cpu/mpc8260/cpu.c b/cpu/mpc8260/cpu.c
index 8adf950..8d634b0 100644
--- a/cpu/mpc8260/cpu.c
+++ b/cpu/mpc8260/cpu.c
@@ -68,6 +68,7 @@
 		k = 4;
 		break;
 	case PVR_8260_HIP7R1:
+	case PVR_8260_HIP7RA:
 	case PVR_8260_HIP7:
 		k = 7;
 		break;
@@ -129,9 +130,20 @@
 	case 0x0A01:
 		puts ("0.1 1K49M");
 		break;
+	case 0x0A10:
+		puts ("1.0 1K49M");
+		break;
 	case 0x0C00:
+		puts ("0.0 0K50M");
+		break;
+	case 0x0C10:
+		puts ("1.0 0K50M");
+		break;
 	case 0x0D00:
-		printf ("0.0 0K50M");
+		puts ("0.0 0K50M");
+		break;
+	case 0x0D10:
+		puts ("1.0 0K50M");
 		break;
 	default:
 		printf ("unknown [immr=0x%04x,k=0x%04x]", m, k);
diff --git a/cpu/mpc8260/i2c.c b/cpu/mpc8260/i2c.c
index 789c514..e0ac684 100644
--- a/cpu/mpc8260/i2c.c
+++ b/cpu/mpc8260/i2c.c
@@ -149,7 +149,7 @@
 
     PRINTD(("\t\tmoddiv=%d, brgdiv=%d\n", moddiv, brgdiv));
 
-    *brgval = (brgdiv / 2) - 3 - (2*filter);
+    *brgval = ((brgdiv + 1) / 2) - 3 - (2*filter);
 
     if ((*brgval < 0) || (*brgval > 255)) {
 	  PRINTD(("\t\trejected brgval=%d\n", *brgval));
@@ -158,7 +158,7 @@
 
     brgdiv = 2 * (*brgval + 3 + (2 * filter));
     div = moddiv * brgdiv ;
-    *totspeed = (hz + div - 1) / div;
+    *totspeed = hz / div;
 
     PRINTD(("\t\taccepted brgval=%d, totspeed=%d\n", *brgval, *totspeed));
 
diff --git a/cpu/mpc8260/speed.c b/cpu/mpc8260/speed.c
index 16f4e90..a761a17 100644
--- a/cpu/mpc8260/speed.c
+++ b/cpu/mpc8260/speed.c
@@ -125,7 +125,10 @@
 	busdf = (scmr & SCMR_BUSDF_MSK) >> SCMR_BUSDF_SHIFT;
 	cpmdf = (scmr & SCMR_CPMDF_MSK) >> SCMR_CPMDF_SHIFT;
 
-	if ((get_pvr () == PVR_8260_HIP7) || (get_pvr () == PVR_8260_HIP7R1)) { /* HiP7 */
+	/* HiP7, HiP7 Rev01, HiP7 RevA */
+	if ((get_pvr () == PVR_8260_HIP7) ||
+	    (get_pvr () == PVR_8260_HIP7R1) ||
+	    (get_pvr () == PVR_8260_HIP7RA)) {
 		pllmf = (scmr & SCMR_PLLMF_MSKH7) >> SCMR_PLLMF_SHIFT;
 		gd->vco_out = clkin * (pllmf + 1);
 	} else {                        /* HiP3, HiP4 */
diff --git a/doc/README.autoboot b/doc/README.autoboot
index c763578..c971bb1 100644
--- a/doc/README.autoboot
+++ b/doc/README.autoboot
@@ -67,13 +67,13 @@
   CONFIG_BOOT_RETRY_TIME
   CONFIG_BOOT_RETRY_MIN
 
-  bootretry environment variable
+  "bootretry" environment variable
 
 	These options determine what happens after autoboot is
 	stopped and U-Boot is waiting for commands.
 
 	CONFIG_BOOT_RETRY_TIME must be defined to enable the boot
-	retry feature. If the environment variable 'bootretry' is
+	retry feature. If the environment variable "bootretry" is
 	found then its value is used, otherwise the retry timeout is
 	CONFIG_BOOT_RETRY_TIME. CONFIG_BOOT_RETRY_MIN is optional and
 	defaults to CONFIG_BOOT_RETRY_TIME. All times are in seconds.
@@ -87,7 +87,7 @@
 
 	If CONFIG_BOOT_RETRY_TIME < 0 the feature is there, but
 	doesn't do anything unless the environment variable
-	'bootretry' is >= 0.
+	"bootretry" is >= 0.
 
   CONFIG_AUTOBOOT_KEYED
   CONFIG_AUTOBOOT_PROMPT
@@ -96,10 +96,10 @@
   CONFIG_AUTOBOOT_DELAY_STR2
   CONFIG_AUTOBOOT_STOP_STR2
 
-  bootdelaykey	environment variable
-  bootstopkey	environment variable
-  bootdelaykey2	environment variable
-  bootstopkey2	environment variable
+  "bootdelaykey"  environment variable
+  "bootstopkey"   environment variable
+  "bootdelaykey2" environment variable
+  "bootstopkey2"  environment variable
 
 	These options give more control over stopping autoboot. When
 	they are used a specific character or string is required to
@@ -119,17 +119,17 @@
 	down the seconds. "autoboot in %d seconds\n" is a reasonable
 	prompt.
 
-	If CONFIG_AUTOBOOT_DELAY_STR or bootdelaykey is specified and
-	this string is received from console input before autoboot
-	starts booting, U-Boot gives a command prompt. The U-Boot
-	prompt will time out if CONFIG_BOOT_RETRY_TIME is used,
-	otherwise it never times out.
+        If CONFIG_AUTOBOOT_DELAY_STR or "bootdelaykey" is specified
+        and this string is received from console input before
+        autoboot starts booting, U-Boot gives a command prompt. The
+        U-Boot prompt will time out if CONFIG_BOOT_RETRY_TIME is
+        used, otherwise it never times out.
 
-	If CONFIG_AUTOBOOT_STOP_STR or bootstopkey is specified and
-	this string is received from console input before autoboot
-	starts booting, U-Boot gives a command prompt. The U-Boot
-	prompt never times out, even if CONFIG_BOOT_RETRY_TIME is
-	used.
+        If CONFIG_AUTOBOOT_STOP_STR or "bootstopkey" is specified and
+        this string is received from console input before autoboot
+        starts booting, U-Boot gives a command prompt. The U-Boot
+        prompt never times out, even if CONFIG_BOOT_RETRY_TIME is
+        used.
 
 	The string recognition is not very sophisticated. If a
 	partial match is detected, the first non-matching character
@@ -138,10 +138,11 @@
 	character of a key string does not appear in the rest of the
 	string.
 
-	Using the CONFIG_AUTOBOOT_DELAY_STR2 /  bootdelaykey2  and/or
-	CONFIG_AUTOBOOT_STOP_STR2   /   bootstopkey  #defines  and/or
-	environment variables you can  specify  a  second,  alternate
-	string (which allows you to have two "password" strings).
+        Using the CONFIG_AUTOBOOT_DELAY_STR2 #define or the
+        "bootdelaykey2" environment variable and/or the
+        CONFIG_AUTOBOOT_STOP_STR2 #define or the "bootstopkey"
+        environment variable you can specify a second, alternate
+        string (which allows you to have two "password" strings).
 
   CONFIG_ZERO_BOOTDELAY_CHECK
 
diff --git a/drivers/cfi_flash.c b/drivers/cfi_flash.c
index c46ac24..7ac0be6 100644
--- a/drivers/cfi_flash.c
+++ b/drivers/cfi_flash.c
@@ -1115,7 +1115,7 @@
 		flag = ((cptr.lp[0] & cword.l) == cword.l);
 		break;
 	case FLASH_CFI_64BIT:
-		flag = ((cptr.lp[0] & cword.ll) == cword.ll);
+		flag = ((cptr.llp[0] & cword.ll) == cword.ll);
 		break;
 	default:
 		return 2;
diff --git a/include/asm-ppc/processor.h b/include/asm-ppc/processor.h
index f7d90f4..15bfae8 100644
--- a/include/asm-ppc/processor.h
+++ b/include/asm-ppc/processor.h
@@ -764,6 +764,7 @@
 #define PVR_8260_HIP4   0x80811014
 #define PVR_8260_HIP7   0x80822011
 #define PVR_8260_HIP7R1 0x80822013
+#define PVR_8260_HIP7RA	0x80822014
 
 
 /*
diff --git a/include/configs/IceCube.h b/include/configs/IceCube.h
index 3c1b2ab..3752eb4 100644
--- a/include/configs/IceCube.h
+++ b/include/configs/IceCube.h
@@ -68,6 +68,8 @@
 #define CONFIG_PCI_IO_PHYS	CONFIG_PCI_IO_BUS
 #define CONFIG_PCI_IO_SIZE	0x01000000
 
+#define CFG_XLB_PIPELINING	1
+
 #define CONFIG_NET_MULTI	1
 #define CONFIG_EEPRO100		1
 #define CFG_RX_ETH_BUFFER	8  /* use 8 rx buffer on eepro100  */
diff --git a/include/configs/MPC8260ADS.h b/include/configs/MPC8260ADS.h
index 626f23b..0d5b05a 100644
--- a/include/configs/MPC8260ADS.h
+++ b/include/configs/MPC8260ADS.h
@@ -175,7 +175,7 @@
 #endif
 #endif
 
-#define CONFIG_BAUDRATE		38400
+#define CONFIG_BAUDRATE		115200
 
 #define CFG_EXCLUDE		 CFG_CMD_BEDBUG | \
 				 CFG_CMD_BMP	| \
diff --git a/include/image.h b/include/image.h
index 55210d5..4c23f0e 100644
--- a/include/image.h
+++ b/include/image.h
@@ -96,7 +96,7 @@
  *	byte order. This list is terminated by an "(uint32_t)0".
  *	Immediately after the terminating 0 follow the images, one by
  *	one, all aligned on "uint32_t" boundaries (size rounded up to
- *	a multiple of 4 bytes).
+ *	a multiple of 4 bytes - except for the last file).
  *
  * "Firmware Images" are binary images containing firmware (like
  *	U-Boot or FPGA images) which usually will be programmed to