diff options
author | sruffell <sruffell@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2008-04-01 16:39:05 +0000 |
---|---|---|
committer | sruffell <sruffell@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2008-04-01 16:39:05 +0000 |
commit | 042dc3d6c91d7a5d1a35e71954aace1937684fe3 (patch) | |
tree | 4d9bf500fb2c1efed9d96198e0cffe5c1407bcde /kernel/wct4xxp | |
parent | c402e3f8f9b9809adb9a71d11f7ca482d5da7ea1 (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.c | 12 |
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"); |