summaryrefslogtreecommitdiff
path: root/drivers/dahdi/voicebus
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2010-04-22 21:36:16 +0000
committerShaun Ruffell <sruffell@digium.com>2010-04-22 21:36:16 +0000
commit1063e05176052e7fc8816bf04fa4be87aa01637c (patch)
treef96959ec3d14071400e4e49a35f0e106e2347423 /drivers/dahdi/voicebus
parentfbe7858335d1dc17b80d9865f3530e706fb328e6 (diff)
wcte12xp, wctdm24xxp: Ensure writes to I/O registers are flushed.
In revision 8176 I changed register access from I/O space to memory mapped registers. Unfortunately, when I made that change, I didn't account for posted writes. This change makes sure all the registers are read back to ensure that they are posted through any intermediate bridges. The most readily observable symptom were cards that were taking 2000 interrupts/second. The card reported that it handled an interrupt but the write to silence the card wasn't flushed through until the second time the interrupt handler run. DAHDI-602. git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@8560 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/voicebus')
-rw-r--r--drivers/dahdi/voicebus/voicebus.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/dahdi/voicebus/voicebus.c b/drivers/dahdi/voicebus/voicebus.c
index 51b5c34..8e50332 100644
--- a/drivers/dahdi/voicebus/voicebus.c
+++ b/drivers/dahdi/voicebus/voicebus.c
@@ -433,6 +433,7 @@ __vb_setctl(struct voicebus *vb, u32 addr, u32 val)
{
wmb();
writel(val, vb->iobase + addr);
+ readl(vb->iobase + addr);
}
/*!