diff options
author | sruffell <sruffell@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2008-02-05 23:48:24 +0000 |
---|---|---|
committer | sruffell <sruffell@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2008-02-05 23:48:24 +0000 |
commit | 62e765736b515529cfa887a9c52116c3b4b49700 (patch) | |
tree | c9012f1f3cee4103bfb49df3181c92c89dec78f6 | |
parent | 42657eba93873f617ecf33755daab8d09eb18e12 (diff) |
Changes to the wcte12xp driver.
- replace change to allow driver to recover from descriptor
unavailable.
- module echo cancellation parameters now valid under 2.6 kernels.
git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.2@3805 5390a7c7-147a-4af0-8ec9-7488f05a26cb
-rw-r--r-- | wcte12xp/base.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/wcte12xp/base.c b/wcte12xp/base.c index 856bfa6..24e99da 100644 --- a/wcte12xp/base.c +++ b/wcte12xp/base.c @@ -1875,6 +1875,7 @@ ZAP_IRQ_HANDLER(te12xp_interrupt) /* Read interrupts */ spin_lock(&wc->reglock); ints = __t1_getctl(wc, 0x0028); + ints &= 0x3fef; /* Just look at the interrupt conditions */ if (!ints) { spin_unlock(&wc->reglock); @@ -1887,7 +1888,6 @@ ZAP_IRQ_HANDLER(te12xp_interrupt) /* clear interrupts interrupts (we only get here if interrupt is for us) */ __t1_setctl(wc, 0x0028, ints); - ints &= wc->intmask; if (ints & 0x00000041) { do { @@ -1895,6 +1895,12 @@ ZAP_IRQ_HANDLER(te12xp_interrupt) res |= t1_check_descriptor(wc, 1); } while(res); } + if (ints & 0x0000a3ae) { + /* This will allow us to recover if interrupts are held for a long period of time */ + debug_printk(1, "Abnormal interrupt %08x detected\n", ints); + __t1_setctl(wc, 0x0008, 0x00000000); + __t1_setctl(wc, 0x0010, 0x00000000); + } spin_unlock(&wc->reglock); #ifdef LINUX26 @@ -2093,6 +2099,9 @@ module_param(alarmdebounce, int, S_IRUGO | S_IWUSR); module_param(vpmsupport, int, S_IRUGO | S_IWUSR); module_param(vpmdtmfsupport, int, S_IRUGO | S_IWUSR); module_param(vpmtsisupport, int, S_IRUGO | S_IWUSR); +module_param(vpmnlptype, int, S_IRUGO | S_IWUSR); +module_param(vpmnlpthresh, int, S_IRUGO | S_IWUSR); +module_param(vpmnlpmaxsupp, int, S_IRUGO | S_IWUSR); #endif #else MODULE_PARM(debug, "i"); |