]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
net: stmmac: Handle different error codes from platform_get_irq_byname
[karo-tx-linux.git] / drivers / net / ethernet / stmicro / stmmac / stmmac_platform.c
index 46aef5108bea47c7d6e49b891937d05ac2610c85..ea7a65be1f9af4208748d808128a344bfdb74377 100644 (file)
@@ -237,10 +237,12 @@ static int stmmac_pltfr_probe(struct platform_device *pdev)
 
        /* Get the MAC information */
        priv->dev->irq = platform_get_irq_byname(pdev, "macirq");
-       if (priv->dev->irq == -ENXIO) {
-               pr_err("%s: ERROR: MAC IRQ configuration "
-                      "information not found\n", __func__);
-               return -ENXIO;
+       if (priv->dev->irq < 0) {
+               if (priv->dev->irq != -EPROBE_DEFER) {
+                       netdev_err(priv->dev,
+                                  "MAC IRQ configuration information not found\n");
+               }
+               return priv->dev->irq;
        }
 
        /*
@@ -252,10 +254,15 @@ static int stmmac_pltfr_probe(struct platform_device *pdev)
         * so the driver will continue to use the mac irq (ndev->irq)
         */
        priv->wol_irq = platform_get_irq_byname(pdev, "eth_wake_irq");
-       if (priv->wol_irq == -ENXIO)
+       if (priv->wol_irq < 0) {
+               if (priv->wol_irq == -EPROBE_DEFER)
+                       return -EPROBE_DEFER;
                priv->wol_irq = priv->dev->irq;
+       }
 
        priv->lpi_irq = platform_get_irq_byname(pdev, "eth_lpi");
+       if (priv->lpi_irq == -EPROBE_DEFER)
+               return -EPROBE_DEFER;
 
        platform_set_drvdata(pdev, priv->dev);