]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/mtd/spi-nor/cadence-quadspi.c
mtd: Remove dev_err() usage after platform_get_irq()
[linux.git] / drivers / mtd / spi-nor / cadence-quadspi.c
index 67f15a1f16fd32198737ed8468a13ecf6a92353d..37be80bd511eded0186c030411d5df4b79ca6f78 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/errno.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
+#include <linux/iopoll.h>
 #include <linux/jiffies.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
@@ -241,23 +242,13 @@ struct cqspi_driver_platdata {
 
 #define CQSPI_IRQ_STATUS_MASK          0x1FFFF
 
-static int cqspi_wait_for_bit(void __iomem *reg, const u32 mask, bool clear)
+static int cqspi_wait_for_bit(void __iomem *reg, const u32 mask, bool clr)
 {
-       unsigned long end = jiffies + msecs_to_jiffies(CQSPI_TIMEOUT_MS);
        u32 val;
 
-       while (1) {
-               val = readl(reg);
-               if (clear)
-                       val = ~val;
-               val &= mask;
-
-               if (val == mask)
-                       return 0;
-
-               if (time_after(jiffies, end))
-                       return -ETIMEDOUT;
-       }
+       return readl_relaxed_poll_timeout(reg, val,
+                                         (((clr ? ~val : val) & mask) == mask),
+                                         10, CQSPI_TIMEOUT_MS * 1000);
 }
 
 static bool cqspi_is_idle(struct cqspi_st *cqspi)
@@ -1375,10 +1366,8 @@ static int cqspi_probe(struct platform_device *pdev)
 
        /* Obtain IRQ line. */
        irq = platform_get_irq(pdev, 0);
-       if (irq < 0) {
-               dev_err(dev, "Cannot obtain IRQ.\n");
+       if (irq < 0)
                return -ENXIO;
-       }
 
        pm_runtime_enable(dev);
        ret = pm_runtime_get_sync(dev);