summaryrefslogtreecommitdiff
path: root/kernel/wct4xxp
diff options
context:
space:
mode:
authorsruffell <sruffell@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2008-04-01 16:39:05 +0000
committersruffell <sruffell@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2008-04-01 16:39:05 +0000
commit042dc3d6c91d7a5d1a35e71954aace1937684fe3 (patch)
tree4d9bf500fb2c1efed9d96198e0cffe5c1407bcde /kernel/wct4xxp
parentc402e3f8f9b9809adb9a71d11f7ca482d5da7ea1 (diff)
Work around for host bridges that generate fast back to back transactions
which the current version of the quad span cards do not advertise support for. git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.4@4122 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'kernel/wct4xxp')
-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");