diff options
Diffstat (limited to 'drivers/net/ethernet/stmicro/stmmac/stmmac_main.c')
-rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 579f2673fd2..5aea21e587d 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | |||
@@ -1515,7 +1515,7 @@ static int stmmac_mac_device_setup(struct net_device *dev) | |||
1515 | 1515 | ||
1516 | if (device_can_wakeup(priv->device)) { | 1516 | if (device_can_wakeup(priv->device)) { |
1517 | priv->wolopts = WAKE_MAGIC; /* Magic Frame as default */ | 1517 | priv->wolopts = WAKE_MAGIC; /* Magic Frame as default */ |
1518 | enable_irq_wake(dev->irq); | 1518 | enable_irq_wake(priv->wol_irq); |
1519 | } | 1519 | } |
1520 | 1520 | ||
1521 | return 0; | 1521 | return 0; |
@@ -1588,6 +1588,18 @@ static int stmmac_dvr_probe(struct platform_device *pdev) | |||
1588 | pr_info("\tPMT module supported\n"); | 1588 | pr_info("\tPMT module supported\n"); |
1589 | device_set_wakeup_capable(&pdev->dev, 1); | 1589 | device_set_wakeup_capable(&pdev->dev, 1); |
1590 | } | 1590 | } |
1591 | /* | ||
1592 | * On some platforms e.g. SPEAr the wake up irq differs from the mac irq | ||
1593 | * The external wake up irq can be passed through the platform code | ||
1594 | * named as "eth_wake_irq" | ||
1595 | * | ||
1596 | * In case the wake up interrupt is not passed from the platform | ||
1597 | * so the driver will continue to use the mac irq (ndev->irq) | ||
1598 | */ | ||
1599 | priv->wol_irq = platform_get_irq_byname(pdev, "eth_wake_irq"); | ||
1600 | if (priv->wol_irq == -ENXIO) | ||
1601 | priv->wol_irq = ndev->irq; | ||
1602 | |||
1591 | 1603 | ||
1592 | platform_set_drvdata(pdev, ndev); | 1604 | platform_set_drvdata(pdev, ndev); |
1593 | 1605 | ||