powerpc/mpc85xx: Update interrupt handling for IFC controller
authorPrabhakar Kushwaha <prabhakar@freescale.com>
Thu, 13 Sep 2012 08:04:11 +0000 (13:34 +0530)
committerKumar Gala <galak@kernel.crashing.org>
Wed, 19 Sep 2012 13:41:22 +0000 (08:41 -0500)
IFC may have one or two interrupts.  If two interrupt specifiers are
present, the first is the "common" interrupt (CM_EVTER_STAT), and the
second is the NAND interrupt (NAND_EVTER_STAT).  If there is only one, that
interrupt reports both types of event.

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
arch/powerpc/sysdev/fsl_ifc.c

index b31f19f61031e4a92b80a7b3afb1f6ee903f25a0..097cc9d2585b8341068cbed9699128599dd978ec 100644 (file)
@@ -244,12 +244,6 @@ static int __devinit fsl_ifc_ctrl_probe(struct platform_device *dev)
        /* get the nand machine irq */
        fsl_ifc_ctrl_dev->nand_irq =
                        irq_of_parse_and_map(dev->dev.of_node, 1);
-       if (fsl_ifc_ctrl_dev->nand_irq == NO_IRQ) {
-               dev_err(&dev->dev, "failed to get irq resource "
-                                               "for NAND Machine\n");
-               ret = -ENODEV;
-               goto err;
-       }
 
        fsl_ifc_ctrl_dev->dev = &dev->dev;
 
@@ -267,12 +261,14 @@ static int __devinit fsl_ifc_ctrl_probe(struct platform_device *dev)
                goto err_irq;
        }
 
-       ret = request_irq(fsl_ifc_ctrl_dev->nand_irq, fsl_ifc_nand_irq, 0,
-                         "fsl-ifc-nand", fsl_ifc_ctrl_dev);
-       if (ret != 0) {
-               dev_err(&dev->dev, "failed to install irq (%d)\n",
-                       fsl_ifc_ctrl_dev->nand_irq);
-               goto err_nandirq;
+       if (fsl_ifc_ctrl_dev->nand_irq) {
+               ret = request_irq(fsl_ifc_ctrl_dev->nand_irq, fsl_ifc_nand_irq,
+                               0, "fsl-ifc-nand", fsl_ifc_ctrl_dev);
+               if (ret != 0) {
+                       dev_err(&dev->dev, "failed to install irq (%d)\n",
+                               fsl_ifc_ctrl_dev->nand_irq);
+                       goto err_nandirq;
+               }
        }
 
        return 0;