Loading drivers/net/stmmac/stmmac.h +0 −1 Original line number Diff line number Diff line Loading @@ -77,7 +77,6 @@ struct stmmac_priv { spinlock_t lock; int wolopts; int wolenabled; int shutdown; #ifdef CONFIG_STMMAC_TIMER struct stmmac_timer *tm; #endif Loading drivers/net/stmmac/stmmac_main.c +71 −53 Original line number Diff line number Diff line Loading @@ -844,8 +844,6 @@ static int stmmac_open(struct net_device *dev) if (priv->plat->tx_coe) pr_info("\tTX Checksum insertion supported\n"); priv->shutdown = 0; /* Initialise the MMC (if present) to disable all interrupts. */ writel(0xffffffff, priv->ioaddr + MMC_HIGH_INTR_MASK); writel(0xffffffff, priv->ioaddr + MMC_LOW_INTR_MASK); Loading Loading @@ -1799,20 +1797,19 @@ static int stmmac_dvr_remove(struct platform_device *pdev) } #ifdef CONFIG_PM static int stmmac_suspend(struct platform_device *pdev, pm_message_t state) static int stmmac_suspend(struct device *dev) { struct net_device *dev = platform_get_drvdata(pdev); struct stmmac_priv *priv = netdev_priv(dev); struct net_device *ndev = dev_get_drvdata(dev); struct stmmac_priv *priv = netdev_priv(ndev); int dis_ic = 0; if (!dev || !netif_running(dev)) if (!ndev || !netif_running(ndev)) return 0; spin_lock(&priv->lock); if (state.event == PM_EVENT_SUSPEND) { netif_device_detach(dev); netif_stop_queue(dev); netif_device_detach(ndev); netif_stop_queue(ndev); if (priv->phydev) phy_stop(priv->phydev); Loading @@ -1832,28 +1829,21 @@ static int stmmac_suspend(struct platform_device *pdev, pm_message_t state) priv->hw->desc->init_tx_desc(priv->dma_tx, priv->dma_tx_size); /* Enable Power down mode by programming the PMT regs */ if (device_can_wakeup(priv->device)) if (device_may_wakeup(priv->device)) priv->hw->mac->pmt(priv->ioaddr, priv->wolopts); else stmmac_disable_mac(priv->ioaddr); } else { priv->shutdown = 1; /* Although this can appear slightly redundant it actually * makes fast the standby operation and guarantees the driver * working if hibernation is on media. */ stmmac_release(dev); } spin_unlock(&priv->lock); return 0; } static int stmmac_resume(struct platform_device *pdev) static int stmmac_resume(struct device *dev) { struct net_device *dev = platform_get_drvdata(pdev); struct stmmac_priv *priv = netdev_priv(dev); struct net_device *ndev = dev_get_drvdata(dev); struct stmmac_priv *priv = netdev_priv(ndev); if (!netif_running(dev)) if (!netif_running(ndev)) return 0; if (priv->shutdown) { Loading @@ -1870,10 +1860,10 @@ static int stmmac_resume(struct platform_device *pdev) * is received. Anyway, it's better to manually clear * this bit because it can generate problems while resuming * from another devices (e.g. serial console). */ if (device_can_wakeup(priv->device)) if (device_may_wakeup(priv->device)) priv->hw->mac->pmt(priv->ioaddr, 0); netif_device_attach(dev); netif_device_attach(ndev); /* Enable the MAC and DMA */ stmmac_enable_mac(priv->ioaddr); Loading @@ -1881,6 +1871,7 @@ static int stmmac_resume(struct platform_device *pdev) priv->hw->dma->start_rx(priv->ioaddr); #ifdef CONFIG_STMMAC_TIMER if (likely(priv->tm->enable)) priv->tm->timer_start(tmrate); #endif napi_enable(&priv->napi); Loading @@ -1888,24 +1879,51 @@ static int stmmac_resume(struct platform_device *pdev) if (priv->phydev) phy_start(priv->phydev); netif_start_queue(dev); netif_start_queue(ndev); spin_unlock(&priv->lock); return 0; } #endif static int stmmac_freeze(struct device *dev) { struct net_device *ndev = dev_get_drvdata(dev); if (!ndev || !netif_running(ndev)) return 0; return stmmac_release(ndev); } static int stmmac_restore(struct device *dev) { struct net_device *ndev = dev_get_drvdata(dev); if (!ndev || !netif_running(ndev)) return 0; return stmmac_open(ndev); } static const struct dev_pm_ops stmmac_pm_ops = { .suspend = stmmac_suspend, .resume = stmmac_resume, .freeze = stmmac_freeze, .thaw = stmmac_restore, .restore = stmmac_restore, }; #else static const struct dev_pm_ops stmmac_pm_ops; #endif /* CONFIG_PM */ static struct platform_driver stmmac_driver = { .probe = stmmac_dvr_probe, .remove = stmmac_dvr_remove, .driver = { .name = STMMAC_RESOURCE_NAME, .owner = THIS_MODULE, .pm = &stmmac_pm_ops, }, .probe = stmmac_dvr_probe, .remove = stmmac_dvr_remove, #ifdef CONFIG_PM .suspend = stmmac_suspend, .resume = stmmac_resume, #endif }; /** Loading Loading
drivers/net/stmmac/stmmac.h +0 −1 Original line number Diff line number Diff line Loading @@ -77,7 +77,6 @@ struct stmmac_priv { spinlock_t lock; int wolopts; int wolenabled; int shutdown; #ifdef CONFIG_STMMAC_TIMER struct stmmac_timer *tm; #endif Loading
drivers/net/stmmac/stmmac_main.c +71 −53 Original line number Diff line number Diff line Loading @@ -844,8 +844,6 @@ static int stmmac_open(struct net_device *dev) if (priv->plat->tx_coe) pr_info("\tTX Checksum insertion supported\n"); priv->shutdown = 0; /* Initialise the MMC (if present) to disable all interrupts. */ writel(0xffffffff, priv->ioaddr + MMC_HIGH_INTR_MASK); writel(0xffffffff, priv->ioaddr + MMC_LOW_INTR_MASK); Loading Loading @@ -1799,20 +1797,19 @@ static int stmmac_dvr_remove(struct platform_device *pdev) } #ifdef CONFIG_PM static int stmmac_suspend(struct platform_device *pdev, pm_message_t state) static int stmmac_suspend(struct device *dev) { struct net_device *dev = platform_get_drvdata(pdev); struct stmmac_priv *priv = netdev_priv(dev); struct net_device *ndev = dev_get_drvdata(dev); struct stmmac_priv *priv = netdev_priv(ndev); int dis_ic = 0; if (!dev || !netif_running(dev)) if (!ndev || !netif_running(ndev)) return 0; spin_lock(&priv->lock); if (state.event == PM_EVENT_SUSPEND) { netif_device_detach(dev); netif_stop_queue(dev); netif_device_detach(ndev); netif_stop_queue(ndev); if (priv->phydev) phy_stop(priv->phydev); Loading @@ -1832,28 +1829,21 @@ static int stmmac_suspend(struct platform_device *pdev, pm_message_t state) priv->hw->desc->init_tx_desc(priv->dma_tx, priv->dma_tx_size); /* Enable Power down mode by programming the PMT regs */ if (device_can_wakeup(priv->device)) if (device_may_wakeup(priv->device)) priv->hw->mac->pmt(priv->ioaddr, priv->wolopts); else stmmac_disable_mac(priv->ioaddr); } else { priv->shutdown = 1; /* Although this can appear slightly redundant it actually * makes fast the standby operation and guarantees the driver * working if hibernation is on media. */ stmmac_release(dev); } spin_unlock(&priv->lock); return 0; } static int stmmac_resume(struct platform_device *pdev) static int stmmac_resume(struct device *dev) { struct net_device *dev = platform_get_drvdata(pdev); struct stmmac_priv *priv = netdev_priv(dev); struct net_device *ndev = dev_get_drvdata(dev); struct stmmac_priv *priv = netdev_priv(ndev); if (!netif_running(dev)) if (!netif_running(ndev)) return 0; if (priv->shutdown) { Loading @@ -1870,10 +1860,10 @@ static int stmmac_resume(struct platform_device *pdev) * is received. Anyway, it's better to manually clear * this bit because it can generate problems while resuming * from another devices (e.g. serial console). */ if (device_can_wakeup(priv->device)) if (device_may_wakeup(priv->device)) priv->hw->mac->pmt(priv->ioaddr, 0); netif_device_attach(dev); netif_device_attach(ndev); /* Enable the MAC and DMA */ stmmac_enable_mac(priv->ioaddr); Loading @@ -1881,6 +1871,7 @@ static int stmmac_resume(struct platform_device *pdev) priv->hw->dma->start_rx(priv->ioaddr); #ifdef CONFIG_STMMAC_TIMER if (likely(priv->tm->enable)) priv->tm->timer_start(tmrate); #endif napi_enable(&priv->napi); Loading @@ -1888,24 +1879,51 @@ static int stmmac_resume(struct platform_device *pdev) if (priv->phydev) phy_start(priv->phydev); netif_start_queue(dev); netif_start_queue(ndev); spin_unlock(&priv->lock); return 0; } #endif static int stmmac_freeze(struct device *dev) { struct net_device *ndev = dev_get_drvdata(dev); if (!ndev || !netif_running(ndev)) return 0; return stmmac_release(ndev); } static int stmmac_restore(struct device *dev) { struct net_device *ndev = dev_get_drvdata(dev); if (!ndev || !netif_running(ndev)) return 0; return stmmac_open(ndev); } static const struct dev_pm_ops stmmac_pm_ops = { .suspend = stmmac_suspend, .resume = stmmac_resume, .freeze = stmmac_freeze, .thaw = stmmac_restore, .restore = stmmac_restore, }; #else static const struct dev_pm_ops stmmac_pm_ops; #endif /* CONFIG_PM */ static struct platform_driver stmmac_driver = { .probe = stmmac_dvr_probe, .remove = stmmac_dvr_remove, .driver = { .name = STMMAC_RESOURCE_NAME, .owner = THIS_MODULE, .pm = &stmmac_pm_ops, }, .probe = stmmac_dvr_probe, .remove = stmmac_dvr_remove, #ifdef CONFIG_PM .suspend = stmmac_suspend, .resume = stmmac_resume, #endif }; /** Loading