summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormattf <mattf@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2007-08-16 20:06:19 +0000
committermattf <mattf@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2007-08-16 20:06:19 +0000
commit9f8bda6ea643b10c5e35b2c3c8d0dc561f9573ff (patch)
tree31095921c006199139b0e3a16f4be41a1c751db8
parent23a56f8bc8c919f8ba12dda82c2ced53946b8568 (diff)
Merged revisions 2858 via svnmerge from
https://origsvn.digium.com/svn/zaptel/branches/1.4 ................ r2858 | mattf | 2007-08-16 15:04:27 -0500 (Thu, 16 Aug 2007) | 9 lines Merged revisions 2857 via svnmerge from https://origsvn.digium.com/svn/zaptel/branches/1.2 ........ r2857 | mattf | 2007-08-16 15:02:58 -0500 (Thu, 16 Aug 2007) | 1 line Fix for when voicebus based cards stop taking interrupts on some systems ........ ................ git-svn-id: http://svn.digium.com/svn/zaptel/trunk@2859 5390a7c7-147a-4af0-8ec9-7488f05a26cb
-rw-r--r--wctdm24xxp/base.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/wctdm24xxp/base.c b/wctdm24xxp/base.c
index 086ebaa..e7537f1 100644
--- a/wctdm24xxp/base.c
+++ b/wctdm24xxp/base.c
@@ -1671,6 +1671,15 @@ ZAP_IRQ_HANDLER(wctdm_interrupt)
wctdm_setctl(wc, 0x0008, 0x00000000);
#endif
}
+
+ if (ints & 0x0000a3ae) {
+ /* This will allow us to recover if interrupts are held for a long period of time */
+ if (debug & DEBUG_CARD)
+ printk("Abnormal interrupt %08x detected\n", ints);
+ wctdm_setctl(wc, 0x0008, 0x00000000);
+ wctdm_setctl(wc, 0x0010, 0x00000000);
+ }
+
#ifdef LINUX26
return IRQ_RETVAL(1);
#endif
@@ -3799,8 +3808,8 @@ static void wctdm_locate_modules(struct wctdm *wc)
for (x=0;x<10;x++)
schluffen(&wc->regq);
printk("After resetting the modules...\n");
- /* Switch to caring only about receive interrupts */
- wctdm_setintmask(wc, 0x00010040);
+
+ wctdm_setintmask(wc, 0x0001f7fe);
/* Make sure all units go into daisy chain mode */
spin_lock_irqsave(&wc->reglock, flags);