Explorar o código

hisax_fcpcipnp: move request_irq later in probe

After a quick glance at the code, we're getting the DEBUG_SHIRQ spurious
interrupt before we have the adapter template filled in.  Real interrupts
appear to be turned on by fcpci*_init(), so move request_irq until just before
that.

Signed-off-by: Kyle McMartin <kmcmartin@redhat.com>
Cc: Karsten Keil <kkeil@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Kyle McMartin %!s(int64=17) %!d(string=hai) anos
pai
achega
7eb701dc77
Modificáronse 1 ficheiros con 17 adicións e 17 borrados
  1. 17 17
      drivers/isdn/hisax/hisax_fcpcipnp.c

+ 17 - 17
drivers/isdn/hisax/hisax_fcpcipnp.c

@@ -723,23 +723,6 @@ static int __devinit fcpcipnp_setup(struct fritz_adapter *adapter)
 	if (!request_region(adapter->io, 32, "fcpcipnp"))
 		goto err;
 
-	switch (adapter->type) {
-	case AVM_FRITZ_PCIV2:
-		retval = request_irq(adapter->irq, fcpci2_irq, IRQF_SHARED,
-				     "fcpcipnp", adapter);
-		break;
-	case AVM_FRITZ_PCI:
-		retval = request_irq(adapter->irq, fcpci_irq, IRQF_SHARED,
-				     "fcpcipnp", adapter);
-		break;
-	case AVM_FRITZ_PNP:
-		retval = request_irq(adapter->irq, fcpci_irq, 0,
-				     "fcpcipnp", adapter);
-		break;
-	}
-	if (retval)
-		goto err_region;
-
 	switch (adapter->type) {
 	case AVM_FRITZ_PCIV2:
 	case AVM_FRITZ_PCI:
@@ -794,6 +777,23 @@ static int __devinit fcpcipnp_setup(struct fritz_adapter *adapter)
 	outb(0, adapter->io + AVM_STATUS0);
 	mdelay(10);
 
+	switch (adapter->type) {
+	case AVM_FRITZ_PCIV2:
+		retval = request_irq(adapter->irq, fcpci2_irq, IRQF_SHARED,
+				     "fcpcipnp", adapter);
+		break;
+	case AVM_FRITZ_PCI:
+		retval = request_irq(adapter->irq, fcpci_irq, IRQF_SHARED,
+				     "fcpcipnp", adapter);
+		break;
+	case AVM_FRITZ_PNP:
+		retval = request_irq(adapter->irq, fcpci_irq, 0,
+				     "fcpcipnp", adapter);
+		break;
+	}
+	if (retval)
+		goto err_region;
+
 	switch (adapter->type) {
 	case AVM_FRITZ_PCIV2:
 		fcpci2_init(adapter);