]> rtime.felk.cvut.cz Git - vajnamar/linux-xlnx.git/commitdiff
misc: xilinx-sdfec: make irq support an optional DT parameter
authorRohit Athavale <rathaval@xilinx.com>
Fri, 28 Jul 2017 20:50:23 +0000 (13:50 -0700)
committerMichal Simek <michal.simek@xilinx.com>
Wed, 20 Sep 2017 13:32:20 +0000 (15:32 +0200)
This commit adds support to make Interrupt line information
an optional parameter to support designs that do not use interrupts.

Signed-off-by: Rohit Athavale <rathaval@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers/misc/xilinx_sdfec.c

index 726554fbd396cfad20ae572b01189c49f3507d9d..92438e7fd0b171bd52c62ac6cb444472c51acf52 100644 (file)
@@ -1014,6 +1014,7 @@ xsdfec_probe(struct platform_device *pdev)
        struct device *dev_create;
        struct resource *res;
        int err;
+       bool irq_enabled = true;
 
        xsdfec = devm_kzalloc(&pdev->dev, sizeof(*xsdfec), GFP_KERNEL);
        if (!xsdfec)
@@ -1040,9 +1041,8 @@ xsdfec_probe(struct platform_device *pdev)
 
        xsdfec->irq = platform_get_irq(pdev, 0);
        if (xsdfec->irq < 0) {
-               dev_err(dev, "platform_get_irq failed");
-               err = xsdfec->irq;
-               goto err_xsdfec_dev;
+               dev_dbg(dev, "platform_get_irq failed");
+               irq_enabled = false;
        }
 
        err = xsdfec_parse_of(xsdfec);
@@ -1052,15 +1052,18 @@ xsdfec_probe(struct platform_device *pdev)
        /* Save driver private data */
        platform_set_drvdata(pdev, xsdfec);
 
-       init_waitqueue_head(&xsdfec->waitq);
-
-       /* Register IRQ thread */
-       err = devm_request_threaded_irq(dev, xsdfec->irq, NULL,
-                                       xsdfec_irq_thread, IRQF_ONESHOT,
-                                       "xilinx-sdfec16", xsdfec);
-       if (err < 0) {
-               dev_err(dev, "unable to request IRQ%d", xsdfec->irq);
-               goto err_xsdfec_dev;
+       if (irq_enabled) {
+               init_waitqueue_head(&xsdfec->waitq);
+               /* Register IRQ thread */
+               err = devm_request_threaded_irq(dev, xsdfec->irq, NULL,
+                                               xsdfec_irq_thread,
+                                               IRQF_ONESHOT,
+                                               "xilinx-sdfec16",
+                                               xsdfec);
+               if (err < 0) {
+                       dev_err(dev, "unable to request IRQ%d", xsdfec->irq);
+                       goto err_xsdfec_dev;
+               }
        }
 
        cdev_init(&xsdfec->xsdfec_cdev, &xsdfec_fops);