summaryrefslogtreecommitdiff
path: root/target/linux/sunxi/patches-3.13/151-7-stmmac-fixup-7.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/sunxi/patches-3.13/151-7-stmmac-fixup-7.patch')
-rw-r--r--target/linux/sunxi/patches-3.13/151-7-stmmac-fixup-7.patch146
1 files changed, 0 insertions, 146 deletions
diff --git a/target/linux/sunxi/patches-3.13/151-7-stmmac-fixup-7.patch b/target/linux/sunxi/patches-3.13/151-7-stmmac-fixup-7.patch
deleted file mode 100644
index 67e0c5b..0000000
--- a/target/linux/sunxi/patches-3.13/151-7-stmmac-fixup-7.patch
+++ /dev/null
@@ -1,146 +0,0 @@
-From 33a23e223749c45ff8099ff9baa235301a3ad07f Mon Sep 17 00:00:00 2001
-From: Srinivas Kandagatla <srinivas.kandagatla@st.com>
-Date: Thu, 16 Jan 2014 10:52:44 +0000
-Subject: [PATCH] net: stmmac: use suspend functions for hibernation
-
-In hibernation freeze case the driver just releases the resources like
-dma buffers, irqs, unregisters the drivers and during restore it does
-register, request the resources. This is not really necessary, as part
-of power management all the data structures are intact, all the
-previously allocated resources can be used after coming out of low
-power.
-
-This patch uses the suspend and resume callbacks for freeze and
-restore which initializes the hardware correctly without unregistering
-or releasing the resources, this should also help in reducing the time
-to restore.
-
-Also this patch fixes a bug in stmmac_pltfr_restore and
-stmmac_pltfr_freeze where it tries to get hold of platform data via
-dev_get_platdata call, which would return NULL in device tree cases and
-the next if statement would crash as there is no NULL check.
-
-Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@st.com>
-Acked-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/ethernet/stmicro/stmmac/stmmac.h | 2 -
- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 16 --------
- .../net/ethernet/stmicro/stmmac/stmmac_platform.c | 44 ++++++----------------
- 3 files changed, 12 insertions(+), 50 deletions(-)
-
-diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
-index 5a568015..027f1dd 100644
---- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h
-+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
-@@ -117,8 +117,6 @@ struct stmmac_priv {
- extern const struct stmmac_hwtimestamp stmmac_ptp;
- int stmmac_ptp_register(struct stmmac_priv *priv);
- void stmmac_ptp_unregister(struct stmmac_priv *priv);
--int stmmac_freeze(struct net_device *ndev);
--int stmmac_restore(struct net_device *ndev);
- int stmmac_resume(struct net_device *ndev);
- int stmmac_suspend(struct net_device *ndev);
- int stmmac_dvr_remove(struct net_device *ndev);
-diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-index 742a83f..c1298a0 100644
---- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-@@ -2912,22 +2912,6 @@ int stmmac_resume(struct net_device *ndev)
-
- return 0;
- }
--
--int stmmac_freeze(struct net_device *ndev)
--{
-- if (!ndev || !netif_running(ndev))
-- return 0;
--
-- return stmmac_release(ndev);
--}
--
--int stmmac_restore(struct net_device *ndev)
--{
-- if (!ndev || !netif_running(ndev))
-- return 0;
--
-- return stmmac_open(ndev);
--}
- #endif /* CONFIG_PM */
-
- /* Driver can be configured w/ and w/ both PCI and Platf drivers
-diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
-index 9377ee6..6d0bf22 100644
---- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
-+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
-@@ -211,55 +211,35 @@ static int stmmac_pltfr_remove(struct platform_device *pdev)
- #ifdef CONFIG_PM
- static int stmmac_pltfr_suspend(struct device *dev)
- {
-- struct net_device *ndev = dev_get_drvdata(dev);
--
-- return stmmac_suspend(ndev);
--}
--
--static int stmmac_pltfr_resume(struct device *dev)
--{
-- struct net_device *ndev = dev_get_drvdata(dev);
--
-- return stmmac_resume(ndev);
--}
--
--static int stmmac_pltfr_freeze(struct device *dev)
--{
- int ret;
-- struct plat_stmmacenet_data *plat_dat = dev_get_platdata(dev);
- struct net_device *ndev = dev_get_drvdata(dev);
-+ struct stmmac_priv *priv = netdev_priv(ndev);
- struct platform_device *pdev = to_platform_device(dev);
-
-- ret = stmmac_freeze(ndev);
-- if (plat_dat->exit)
-- plat_dat->exit(pdev);
-+ ret = stmmac_suspend(ndev);
-+ if (priv->plat->exit)
-+ priv->plat->exit(pdev);
-
- return ret;
- }
-
--static int stmmac_pltfr_restore(struct device *dev)
-+static int stmmac_pltfr_resume(struct device *dev)
- {
-- struct plat_stmmacenet_data *plat_dat = dev_get_platdata(dev);
- struct net_device *ndev = dev_get_drvdata(dev);
-+ struct stmmac_priv *priv = netdev_priv(ndev);
- struct platform_device *pdev = to_platform_device(dev);
-
-- if (plat_dat->init)
-- plat_dat->init(pdev);
-+ if (priv->plat->init)
-+ priv->plat->init(pdev);
-
-- return stmmac_restore(ndev);
-+ return stmmac_resume(ndev);
- }
-
--static const struct dev_pm_ops stmmac_pltfr_pm_ops = {
-- .suspend = stmmac_pltfr_suspend,
-- .resume = stmmac_pltfr_resume,
-- .freeze = stmmac_pltfr_freeze,
-- .thaw = stmmac_pltfr_restore,
-- .restore = stmmac_pltfr_restore,
--};
--#else
--static const struct dev_pm_ops stmmac_pltfr_pm_ops;
- #endif /* CONFIG_PM */
-
-+static SIMPLE_DEV_PM_OPS(stmmac_pltfr_pm_ops,
-+ stmmac_pltfr_suspend, stmmac_pltfr_resume);
-+
- static const struct of_device_id stmmac_dt_ids[] = {
- { .compatible = "st,spear600-gmac"},
- { .compatible = "snps,dwmac-3.610"},
---
-1.8.5.5
-