diff options
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.patch | 158 |
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 - |