summaryrefslogtreecommitdiff
path: root/target/linux/sunxi/patches-3.13/153-2-stmmac-add-support-for-optional-reset-control.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/sunxi/patches-3.13/153-2-stmmac-add-support-for-optional-reset-control.patch')
-rw-r--r--target/linux/sunxi/patches-3.13/153-2-stmmac-add-support-for-optional-reset-control.patch158
1 files changed, 0 insertions, 158 deletions
diff --git a/target/linux/sunxi/patches-3.13/153-2-stmmac-add-support-for-optional-reset-control.patch b/target/linux/sunxi/patches-3.13/153-2-stmmac-add-support-for-optional-reset-control.patch
deleted file mode 100644
index 188eaf0..0000000
--- a/target/linux/sunxi/patches-3.13/153-2-stmmac-add-support-for-optional-reset-control.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-From c5e4ddbdfa1134a36589c1466ed4abb85fe6f976 Mon Sep 17 00:00:00 2001
-From: Chen-Yu Tsai <wens@csie.org>
-Date: Fri, 17 Jan 2014 21:24:41 +0800
-Subject: [PATCH] net: stmmac: Add support for optional reset control
-
-The DWMAC has a reset assert line, which is used on some SoCs. Add an
-optional reset control to stmmac driver core.
-
-To support reset control deferred probing, this patch changes the driver
-probe function to return the actual error, instead of just -EINVAL.
-
-Signed-off-by: Chen-Yu Tsai <wens@csie.org>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- Documentation/devicetree/bindings/net/stmmac.txt | 3 +++
- drivers/net/ethernet/stmicro/stmmac/Kconfig | 1 +
- drivers/net/ethernet/stmicro/stmmac/stmmac.h | 2 ++
- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 19 ++++++++++++++++++-
- drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c | 4 ++--
- drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 4 ++--
- 6 files changed, 28 insertions(+), 5 deletions(-)
-
-diff --git a/Documentation/devicetree/bindings/net/stmmac.txt b/Documentation/devicetree/bindings/net/stmmac.txt
-index eba0e5e..d132513 100644
---- a/Documentation/devicetree/bindings/net/stmmac.txt
-+++ b/Documentation/devicetree/bindings/net/stmmac.txt
-@@ -30,6 +30,9 @@ Required properties:
-
- Optional properties:
- - mac-address: 6 bytes, mac address
-+- resets: Should contain a phandle to the STMMAC reset signal, if any
-+- reset-names: Should contain the reset signal name "stmmaceth", if a
-+ reset phandle is given
-
- Examples:
-
-diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethernet/stmicro/stmmac/Kconfig
-index 6e52c0f..b59d1ef 100644
---- a/drivers/net/ethernet/stmicro/stmmac/Kconfig
-+++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig
-@@ -5,6 +5,7 @@ config STMMAC_ETH
- select PHYLIB
- select CRC32
- select PTP_1588_CLOCK
-+ select RESET_CONTROLLER
- ---help---
- This is the driver for the Ethernet IPs are built around a
- Synopsys IP Core and only tested on the STMicroelectronics
-diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
-index 73709e9..c1c141f 100644
---- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h
-+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
-@@ -32,6 +32,7 @@
- #include <linux/pci.h>
- #include "common.h"
- #include <linux/ptp_clock_kernel.h>
-+#include <linux/reset.h>
-
- struct stmmac_priv {
- /* Frequently used values are kept adjacent for cache effect */
-@@ -91,6 +92,7 @@ struct stmmac_priv {
- int wolopts;
- int wol_irq;
- struct clk *stmmac_clk;
-+ struct reset_control *stmmac_rst;
- int clk_csr;
- struct timer_list eee_ctrl_timer;
- int lpi_irq;
-diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-index 0d2c4cb..0c5c120 100644
---- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-@@ -51,6 +51,7 @@
- #include <linux/net_tstamp.h>
- #include "stmmac_ptp.h"
- #include "stmmac.h"
-+#include <linux/reset.h>
-
- #define STMMAC_ALIGN(x) L1_CACHE_ALIGN(x)
- #define JUMBO_LEN 9000
-@@ -2728,10 +2729,24 @@ struct stmmac_priv *stmmac_dvr_probe(struct device *device,
- if (IS_ERR(priv->stmmac_clk)) {
- dev_warn(priv->device, "%s: warning: cannot get CSR clock\n",
- __func__);
-+ ret = PTR_ERR(priv->stmmac_clk);
- goto error_clk_get;
- }
- clk_prepare_enable(priv->stmmac_clk);
-
-+ priv->stmmac_rst = devm_reset_control_get(priv->device,
-+ STMMAC_RESOURCE_NAME);
-+ if (IS_ERR(priv->stmmac_rst)) {
-+ if (PTR_ERR(priv->stmmac_rst) == -EPROBE_DEFER) {
-+ ret = -EPROBE_DEFER;
-+ goto error_hw_init;
-+ }
-+ dev_info(priv->device, "no reset control found\n");
-+ priv->stmmac_rst = NULL;
-+ }
-+ if (priv->stmmac_rst)
-+ reset_control_deassert(priv->stmmac_rst);
-+
- /* Init MAC and get the capabilities */
- ret = stmmac_hw_init(priv);
- if (ret)
-@@ -2808,7 +2823,7 @@ struct stmmac_priv *stmmac_dvr_probe(struct device *device,
- error_clk_get:
- free_netdev(ndev);
-
-- return NULL;
-+ return ERR_PTR(ret);
- }
-
- /**
-@@ -2832,6 +2847,8 @@ int stmmac_dvr_remove(struct net_device *ndev)
- stmmac_mdio_unregister(ndev);
- netif_carrier_off(ndev);
- unregister_netdev(ndev);
-+ if (priv->stmmac_rst)
-+ reset_control_assert(priv->stmmac_rst);
- clk_disable_unprepare(priv->stmmac_clk);
- free_netdev(ndev);
-
-diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c
-index 37ba2e0..2916089 100644
---- a/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c
-+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c
-@@ -100,9 +100,9 @@ static int stmmac_pci_probe(struct pci_dev *pdev,
- stmmac_default_data();
-
- priv = stmmac_dvr_probe(&(pdev->dev), &plat_dat, addr);
-- if (!priv) {
-+ if (IS_ERR(priv)) {
- pr_err("%s: main driver probe failed", __func__);
-- ret = -ENODEV;
-+ ret = PTR_ERR(priv);
- goto err_out;
- }
- priv->dev->irq = pdev->irq;
-diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
-index 6d0bf22..cc6b89a7 100644
---- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
-+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
-@@ -152,9 +152,9 @@ static int stmmac_pltfr_probe(struct platform_device *pdev)
- }
-
- priv = stmmac_dvr_probe(&(pdev->dev), plat_dat, addr);
-- if (!priv) {
-+ if (IS_ERR(priv)) {
- pr_err("%s: main driver probe failed", __func__);
-- return -ENODEV;
-+ return PTR_ERR(priv);
- }
-
- /* Get MAC address if available (DT) */
---
-1.8.5.5
-