From 042dc3d6c91d7a5d1a35e71954aace1937684fe3 Mon Sep 17 00:00:00 2001 From: sruffell Date: Tue, 1 Apr 2008 16:39:05 +0000 Subject: 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 --- kernel/wct4xxp/base.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'kernel/wct4xxp/base.c') 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"); -- cgit v1.2.3