diff --git a/CHANGELOG b/CHANGELOG
index 6194f5c3432a8bd9808ec13bc751976b9f38a70e..825a1cd3082e9e09f132929b011f89c9064347ad 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,8 @@
 Changes for U-Boot 1.1.3:
 ======================================================================
 
+* Fix IDE stability problems on CPC45 board (needs 2 x EIEIO).
+
 * Code cleanup
 
 * Patch by Robin Getz, 13 Oct 2004:
diff --git a/common/cmd_ide.c b/common/cmd_ide.c
index 851ba52c811c845ad3020f86eeab584effbd0dd3..b8e0bef574289e6fd112fff5ba1e27519bb6f618 100644
--- a/common/cmd_ide.c
+++ b/common/cmd_ide.c
@@ -957,13 +957,17 @@ input_data(int dev, ulong *sect_buf, int words)
 	pbuf_odd  = (uchar *)(ATA_CURR_BASE(dev)+ATA_DATA_ODD);
 	dbuf = (uchar *)sect_buf;
 	while (words--) {
+		EIEIO;
 		EIEIO;
 		*dbuf++ = *pbuf_even;
 		EIEIO;
+		EIEIO;
 		*dbuf++ = *pbuf_odd;
 		EIEIO;
+		EIEIO;
 		*dbuf++ = *pbuf_even;
 		EIEIO;
+		EIEIO;
 		*dbuf++ = *pbuf_odd;
 	}
 #endif	/* CONFIG_HMI10 */
diff --git a/include/pcmcia/cirrus.h b/include/pcmcia/cirrus.h
index f53b85a3230bbd2f650f14681f72986acdfe24b1..cd34dd85600e18273893a8cf5fd5634b2d03b18a 100644
--- a/include/pcmcia/cirrus.h
+++ b/include/pcmcia/cirrus.h
@@ -166,9 +166,15 @@ static int has_led = -1;
 static int has_ring = -1;
 static int dynamic_mode = 0;
 static int freq_bypass = -1;
+#ifdef CONFIG_CPC45
+static int setup_time = 2;
+static int cmd_time = 6;
+static int recov_time = 1;
+#else
 static int setup_time = -1;
 static int cmd_time = -1;
 static int recov_time = -1;
+#endif
 
 
 #endif /* _LINUX_CIRRUS_H */