]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
[ATM]: [nicstar] delay irq setup until card is configured
authorChas Williams <chas@cmf.nrl.navy.mil>
Sun, 20 Jan 2008 19:43:46 +0000 (21:43 +0200)
committerAdrian Bunk <bunk@kernel.org>
Sun, 20 Jan 2008 19:43:46 +0000 (21:43 +0200)
[ Upstream commit: 52961955aa180959158faeb9fd6b4f8a591450f5 ]

Adrian Bunk:
Backported to 2.6.16.

Signed-off-by: Chas Williams <chas@cmf.nrl.navy.mil>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Adrian Bunk <bunk@kernel.org>
drivers/atm/nicstar.c

index 074abc81ec3d099cc7353c1a2568bec68f005aaa..88e52e147590ba71ac98992e5a447e50065fef3c 100644 (file)
@@ -626,14 +626,6 @@ static int __devinit ns_init_card(int i, struct pci_dev *pcidev)
    if (mac[i] == NULL)
       nicstar_init_eprom(card->membase);
 
-   if (request_irq(pcidev->irq, &ns_irq_handler, SA_INTERRUPT | SA_SHIRQ, "nicstar", card) != 0)
-   {
-      printk("nicstar%d: can't allocate IRQ %d.\n", i, pcidev->irq);
-      error = 9;
-      ns_init_card_error(card, error);
-      return error;
-   }
-
    /* Set the VPI/VCI MSb mask to zero so we can receive OAM cells */
    writel(0x00000000, card->membase + VPM);
       
@@ -859,8 +851,6 @@ static int __devinit ns_init_card(int i, struct pci_dev *pcidev)
       card->iovpool.count++;
    }
 
-   card->intcnt = 0;
-
    /* Configure NICStAR */
    if (card->rct_size == 4096)
       ns_cfg_rctsize = NS_CFG_RCTSIZE_4096_ENTRIES;
@@ -869,6 +859,15 @@ static int __devinit ns_init_card(int i, struct pci_dev *pcidev)
 
    card->efbie = 1;
 
+   card->intcnt = 0;
+   if (request_irq(pcidev->irq, &ns_irq_handler, SA_INTERRUPT | SA_SHIRQ, "nicstar", card) != 0)
+   {
+      printk("nicstar%d: can't allocate IRQ %d.\n", i, pcidev->irq);
+      error = 9;
+      ns_init_card_error(card, error);
+      return error;
+   }
+
    /* Register device */
    card->atmdev = atm_dev_register("nicstar", &atm_ops, -1, NULL);
    if (card->atmdev == NULL)