[svn-commits] mattf: branch 1.2 r1936 - /branches/1.2/

svn-commits at lists.digium.com svn-commits at lists.digium.com
Tue Jan 23 14:28:15 MST 2007


Author: mattf
Date: Tue Jan 23 15:28:14 2007
New Revision: 1936

URL: http://svn.digium.com/view/zaptel?view=rev&rev=1936
Log:
Make sure we don't clear the interrupt before we might have received it in 
shared interrupt line scenarios.

Modified:
    branches/1.2/wct1xxp.c
    branches/1.2/wctdm.c
    branches/1.2/wctdm24xxp.c
    branches/1.2/wcte11xp.c

Modified: branches/1.2/wct1xxp.c
URL: http://svn.digium.com/view/zaptel/branches/1.2/wct1xxp.c?view=diff&rev=1936&r1=1935&r2=1936
==============================================================================
--- branches/1.2/wct1xxp.c (original)
+++ branches/1.2/wct1xxp.c Tue Jan 23 15:28:14 2007
@@ -1134,14 +1134,14 @@
 	int x;
 
 	ints = inb(wc->ioaddr + WC_INTSTAT);
-	outb(ints, wc->ioaddr + WC_INTSTAT);
-
 	if (!ints)
 #ifdef LINUX26
 		return IRQ_NONE;
 #else
 		return;
 #endif		
+
+	outb(ints, wc->ioaddr + WC_INTSTAT);
 
 	if (!wc->intcount) {
 		if (debug) printk("Got interrupt: 0x%04x\n", ints);

Modified: branches/1.2/wctdm.c
URL: http://svn.digium.com/view/zaptel/branches/1.2/wctdm.c?view=diff&rev=1936&r1=1935&r2=1936
==============================================================================
--- branches/1.2/wctdm.c (original)
+++ branches/1.2/wctdm.c Tue Jan 23 15:28:14 2007
@@ -1032,7 +1032,6 @@
 	int mode;
 
 	ints = inb(wc->ioaddr + WC_INTSTAT);
-	outb(ints, wc->ioaddr + WC_INTSTAT);
 
 	if (!ints)
 #ifdef LINUX26
@@ -1040,6 +1039,8 @@
 #else
 		return;
 #endif		
+
+	outb(ints, wc->ioaddr + WC_INTSTAT);
 
 	if (ints & 0x10) {
 		/* Stop DMA, wait for watchdog */

Modified: branches/1.2/wctdm24xxp.c
URL: http://svn.digium.com/view/zaptel/branches/1.2/wctdm24xxp.c?view=diff&rev=1936&r1=1935&r2=1936
==============================================================================
--- branches/1.2/wctdm24xxp.c (original)
+++ branches/1.2/wctdm24xxp.c Tue Jan 23 15:28:14 2007
@@ -1428,7 +1428,6 @@
 
 	/* Read and clear interrupts */
 	ints = wctdm_getctl(wc, 0x0028);
-	wctdm_setctl(wc, 0x0028, ints);
 
 	if (!ints)
 #ifdef LINUX26
@@ -1436,6 +1435,9 @@
 #else
 		return;
 #endif		
+
+	wctdm_setctl(wc, 0x0028, ints);
+
 	ints &= wc->intmask;
 	if (ints & 0x00000041) {
 		do {

Modified: branches/1.2/wcte11xp.c
URL: http://svn.digium.com/view/zaptel/branches/1.2/wcte11xp.c?view=diff&rev=1936&r1=1935&r2=1936
==============================================================================
--- branches/1.2/wcte11xp.c (original)
+++ branches/1.2/wcte11xp.c Tue Jan 23 15:28:14 2007
@@ -1265,14 +1265,14 @@
 	int x;
 
 	ints = inb(wc->ioaddr + WC_INTSTAT);
-	outb(ints, wc->ioaddr + WC_INTSTAT);
-
 	if (!ints)
 #ifdef LINUX26
 		return IRQ_NONE;
 #else
 		return;
 #endif		
+
+	outb(ints, wc->ioaddr + WC_INTSTAT);
 
 	if (!wc->intcount) {
 		if (debug) printk("Got interrupt: 0x%04x\n", ints);



More information about the svn-commits mailing list