From cd172b710822fe170db04fa1e78c08adea56425a Mon Sep 17 00:00:00 2001
From: wdenk <wdenk>
Date: Sat, 22 Jan 2005 18:26:04 +0000
Subject: [PATCH] Fix IDE stability problems on CPC45 board.

---
 CHANGELOG               | 2 ++
 common/cmd_ide.c        | 4 ++++
 include/pcmcia/cirrus.h | 6 ++++++
 3 files changed, 12 insertions(+)

diff --git a/CHANGELOG b/CHANGELOG
index 6194f5c3432..825a1cd3082 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 851ba52c811..b8e0bef5742 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 f53b85a3230..cd34dd85600 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 */
-- 
GitLab