mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-25 16:31:13 +00:00
e7bfda2c24
This change makes the names of Broadcom targets consistent by using the common notation based on SoC/CPU ID (which is used internally anyway), bcmXXXX instead of brcmXXXX. This is even used for target TITLE in make menuconfig already, only the short target name used brcm so far. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
151 lines
3.9 KiB
Diff
151 lines
3.9 KiB
Diff
From 179a445ae4ef36ec44f4aea18e5f42d21334d186 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Gorski <jonas.gorski@gmail.com>
|
|
Date: Sat, 25 Feb 2017 12:39:25 +0100
|
|
Subject: [PATCH 4/6] bcm63xx_enet: use managed functions for clock/ioremap
|
|
|
|
Use managed functions where possible to reduce the amount of resource
|
|
handling on error and remove paths.
|
|
|
|
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
|
---
|
|
drivers/net/ethernet/broadcom/bcm63xx_enet.c | 54 +++++++---------------------
|
|
1 file changed, 12 insertions(+), 42 deletions(-)
|
|
|
|
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
|
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
|
|
@@ -1768,14 +1768,14 @@ static int bcm_enet_probe(struct platfor
|
|
clk_name = "enet1";
|
|
}
|
|
|
|
- priv->mac_clk = clk_get(&pdev->dev, clk_name);
|
|
+ priv->mac_clk = devm_clk_get(&pdev->dev, clk_name);
|
|
if (IS_ERR(priv->mac_clk)) {
|
|
ret = PTR_ERR(priv->mac_clk);
|
|
goto out;
|
|
}
|
|
ret = clk_prepare_enable(priv->mac_clk);
|
|
if (ret)
|
|
- goto out_put_clk_mac;
|
|
+ goto out;
|
|
|
|
/* initialize default and fetch platform data */
|
|
priv->rx_ring_size = BCMENET_DEF_RX_DESC;
|
|
@@ -1803,7 +1803,7 @@ static int bcm_enet_probe(struct platfor
|
|
|
|
if (priv->mac_id == 0 && priv->has_phy && !priv->use_external_mii) {
|
|
/* using internal PHY, enable clock */
|
|
- priv->phy_clk = clk_get(&pdev->dev, "ephy");
|
|
+ priv->phy_clk = devm_clk_get(&pdev->dev, "ephy");
|
|
if (IS_ERR(priv->phy_clk)) {
|
|
ret = PTR_ERR(priv->phy_clk);
|
|
priv->phy_clk = NULL;
|
|
@@ -1811,7 +1811,7 @@ static int bcm_enet_probe(struct platfor
|
|
}
|
|
ret = clk_prepare_enable(priv->phy_clk);
|
|
if (ret)
|
|
- goto out_put_clk_phy;
|
|
+ goto out_disable_clk_mac;
|
|
}
|
|
|
|
/* do minimal hardware init to be able to probe mii bus */
|
|
@@ -1908,14 +1908,8 @@ out_uninit_hw:
|
|
if (priv->phy_clk)
|
|
clk_disable_unprepare(priv->phy_clk);
|
|
|
|
-out_put_clk_phy:
|
|
- if (priv->phy_clk)
|
|
- clk_put(priv->phy_clk);
|
|
-
|
|
out_disable_clk_mac:
|
|
clk_disable_unprepare(priv->mac_clk);
|
|
-out_put_clk_mac:
|
|
- clk_put(priv->mac_clk);
|
|
out:
|
|
free_netdev(dev);
|
|
return ret;
|
|
@@ -1951,12 +1945,10 @@ static int bcm_enet_remove(struct platfo
|
|
}
|
|
|
|
/* disable hw block clocks */
|
|
- if (priv->phy_clk) {
|
|
+ if (priv->phy_clk)
|
|
clk_disable_unprepare(priv->phy_clk);
|
|
- clk_put(priv->phy_clk);
|
|
- }
|
|
+
|
|
clk_disable_unprepare(priv->mac_clk);
|
|
- clk_put(priv->mac_clk);
|
|
|
|
free_netdev(dev);
|
|
return 0;
|
|
@@ -2739,26 +2731,20 @@ static int bcm_enetsw_probe(struct platf
|
|
if (ret)
|
|
goto out;
|
|
|
|
- if (!request_mem_region(res_mem->start, resource_size(res_mem),
|
|
- "bcm63xx_enetsw")) {
|
|
- ret = -EBUSY;
|
|
+ priv->base = devm_ioremap_resource(&pdev->dev, res_mem);
|
|
+ if (IS_ERR(priv->base)) {
|
|
+ ret = PTR_ERR(priv->base);
|
|
goto out;
|
|
}
|
|
|
|
- priv->base = ioremap(res_mem->start, resource_size(res_mem));
|
|
- if (priv->base == NULL) {
|
|
- ret = -ENOMEM;
|
|
- goto out_release_mem;
|
|
- }
|
|
-
|
|
- priv->mac_clk = clk_get(&pdev->dev, "enetsw");
|
|
+ priv->mac_clk = devm_clk_get(&pdev->dev, "enetsw");
|
|
if (IS_ERR(priv->mac_clk)) {
|
|
ret = PTR_ERR(priv->mac_clk);
|
|
- goto out_unmap;
|
|
+ goto out;
|
|
}
|
|
ret = clk_prepare_enable(priv->mac_clk);
|
|
if (ret)
|
|
- goto out_put_clk;
|
|
+ goto out;
|
|
|
|
priv->rx_chan = 0;
|
|
priv->tx_chan = 1;
|
|
@@ -2790,15 +2776,6 @@ static int bcm_enetsw_probe(struct platf
|
|
|
|
out_disable_clk:
|
|
clk_disable_unprepare(priv->mac_clk);
|
|
-
|
|
-out_put_clk:
|
|
- clk_put(priv->mac_clk);
|
|
-
|
|
-out_unmap:
|
|
- iounmap(priv->base);
|
|
-
|
|
-out_release_mem:
|
|
- release_mem_region(res_mem->start, resource_size(res_mem));
|
|
out:
|
|
free_netdev(dev);
|
|
return ret;
|
|
@@ -2810,20 +2787,13 @@ static int bcm_enetsw_remove(struct plat
|
|
{
|
|
struct bcm_enet_priv *priv;
|
|
struct net_device *dev;
|
|
- struct resource *res;
|
|
|
|
/* stop netdevice */
|
|
dev = platform_get_drvdata(pdev);
|
|
priv = netdev_priv(dev);
|
|
unregister_netdev(dev);
|
|
|
|
- /* release device resources */
|
|
- iounmap(priv->base);
|
|
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
- release_mem_region(res->start, resource_size(res));
|
|
-
|
|
clk_disable_unprepare(priv->mac_clk);
|
|
- clk_put(priv->mac_clk);
|
|
|
|
free_netdev(dev);
|
|
return 0;
|