summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/wct4xxp/base.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/kernel/wct4xxp/base.c b/kernel/wct4xxp/base.c
index 0877371..45e030c 100644
--- a/kernel/wct4xxp/base.c
+++ b/kernel/wct4xxp/base.c
@@ -411,6 +411,13 @@ static struct t4 *cards[MAX_T4_CARDS];
static inline unsigned int __t4_pci_in(struct t4 *wc, const unsigned int addr)
{
unsigned int res = readl(&wc->membase[addr]);
+ if (pedanticpci) {
+ /* Even though we do not support fast back-to-back
+ * transactions, some host bridges appear to generate them.
+ * This delay prevents this.
+ */
+ udelay(3);
+ }
return res;
}
@@ -419,6 +426,11 @@ static inline void __t4_pci_out(struct t4 *wc, const unsigned int addr, const un
unsigned int tmp;
writel(value, &wc->membase[addr]);
if (pedanticpci) {
+ /* Even though we do not support fast back-to-back
+ * transactions, some host bridges appear to generate them.
+ * This delay prevents this.
+ */
+ udelay(3);
tmp = __t4_pci_in(wc, WC_VERSION);
if ((tmp & 0xffff0000) != 0xc01a0000)
printk("TE4XXP: Version Synchronization Error!\n");