EXPORT_SYMBOL_GPL(devm_platform_ioremap_resource);
 #endif /* CONFIG_HAS_IOMEM */
 
-/**
- * platform_get_irq - get an IRQ for a device
- * @dev: platform device
- * @num: IRQ number index
- */
-int platform_get_irq(struct platform_device *dev, unsigned int num)
+static int __platform_get_irq(struct platform_device *dev, unsigned int num)
 {
 #ifdef CONFIG_SPARC
        /* sparc does not have irqs represented as IORESOURCE_IRQ resources */
        return -ENXIO;
 #endif
 }
+
+/**
+ * platform_get_irq - get an IRQ for a device
+ * @dev: platform device
+ * @num: IRQ number index
+ *
+ * Gets an IRQ for a platform device and prints an error message if finding the
+ * IRQ fails. Device drivers should check the return value for errors so as to
+ * not pass a negative integer value to the request_irq() APIs.
+ *
+ * Example:
+ *             int irq = platform_get_irq(pdev, 0);
+ *             if (irq < 0)
+ *                     return irq;
+ *
+ * Return: IRQ number on success, negative error number on failure.
+ */
+int platform_get_irq(struct platform_device *dev, unsigned int num)
+{
+       int ret;
+
+       ret = __platform_get_irq(dev, num);
+       if (ret < 0 && ret != -EPROBE_DEFER)
+               dev_err(&dev->dev, "IRQ index %u not found\n", num);
+
+       return ret;
+}
 EXPORT_SYMBOL_GPL(platform_get_irq);
 
 /**
 {
        int ret, nr = 0;
 
-       while ((ret = platform_get_irq(dev, nr)) >= 0)
+       while ((ret = __platform_get_irq(dev, nr)) >= 0)
                nr++;
 
        if (ret == -EPROBE_DEFER)
        }
 
        r = platform_get_resource_byname(dev, IORESOURCE_IRQ, name);
-       return r ? r->start : -ENXIO;
+       if (r)
+               return r->start;
+
+       dev_err(&dev->dev, "IRQ %s not found\n", name);
+       return -ENXIO;
 }
 EXPORT_SYMBOL_GPL(platform_get_irq_byname);