diff options
| author | Roman Yeryomin <roman@advem.lv> | 2013-05-26 01:02:55 +0300 |
|---|---|---|
| committer | Roman Yeryomin <roman@advem.lv> | 2013-05-26 01:02:55 +0300 |
| commit | 342045a35b1981a89e4bc80842b10c065e1050da (patch) | |
| tree | 4140720b20e8d641c11da882010d6130a75fef21 /target/linux/brcm63xx/patches-3.9/019-bcm63xx_enet-use-managed-io-memory-allocations.patch | |
| parent | 7338133dde8238afce34676214b494c8db96689b (diff) | |
| parent | 1a116ce7818ecee5d167a9c0ebb1a0feca9120e6 (diff) | |
Merge trunk into realtek-unstable
Conflicts:
Config.in
feeds.conf.default
package/base-files/files/etc/hotplug2-common.rules
package/network/config/netifd/files/etc/init.d/network
Diffstat (limited to 'target/linux/brcm63xx/patches-3.9/019-bcm63xx_enet-use-managed-io-memory-allocations.patch')
| -rw-r--r-- | target/linux/brcm63xx/patches-3.9/019-bcm63xx_enet-use-managed-io-memory-allocations.patch | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/target/linux/brcm63xx/patches-3.9/019-bcm63xx_enet-use-managed-io-memory-allocations.patch b/target/linux/brcm63xx/patches-3.9/019-bcm63xx_enet-use-managed-io-memory-allocations.patch new file mode 100644 index 000000000..5d0fb8ee2 --- /dev/null +++ b/target/linux/brcm63xx/patches-3.9/019-bcm63xx_enet-use-managed-io-memory-allocations.patch @@ -0,0 +1,118 @@ +From 80b0356aea30e9fc9e075d31c2bf37e7cbfea8c9 Mon Sep 17 00:00:00 2001 +From: Jonas Gorski <jogo@openwrt.org> +Date: Sun, 10 Mar 2013 13:59:55 +0100 +Subject: [PATCH 1/3] bcm63xx_enet: use managed io memory allocations + +Signed-off-by: Jonas Gorski <jogo@openwrt.org> +--- + drivers/net/ethernet/broadcom/bcm63xx_enet.c | 43 +++++--------------------- + 1 file changed, 7 insertions(+), 36 deletions(-) + +--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c ++++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c +@@ -1619,7 +1619,6 @@ static int bcm_enet_probe(struct platfor + struct resource *res_mem, *res_irq, *res_irq_rx, *res_irq_tx; + struct mii_bus *bus; + const char *clk_name; +- unsigned int iomem_size; + int i, ret; + + /* stop if shared driver failed, assume driver->probe will be +@@ -1644,17 +1643,12 @@ static int bcm_enet_probe(struct platfor + if (ret) + goto out; + +- iomem_size = resource_size(res_mem); +- if (!request_mem_region(res_mem->start, iomem_size, "bcm63xx_enet")) { +- ret = -EBUSY; +- goto out; +- } +- +- priv->base = ioremap(res_mem->start, iomem_size); ++ priv->base = devm_request_and_ioremap(&pdev->dev, res_mem); + if (priv->base == NULL) { + ret = -ENOMEM; +- goto out_release_mem; ++ goto out; + } ++ + dev->irq = priv->irq = res_irq->start; + priv->irq_rx = res_irq_rx->start; + priv->irq_tx = res_irq_tx->start; +@@ -1674,7 +1668,7 @@ static int bcm_enet_probe(struct platfor + priv->mac_clk = clk_get(&pdev->dev, clk_name); + if (IS_ERR(priv->mac_clk)) { + ret = PTR_ERR(priv->mac_clk); +- goto out_unmap; ++ goto out; + } + clk_enable(priv->mac_clk); + +@@ -1814,12 +1808,6 @@ out_uninit_hw: + out_put_clk_mac: + clk_disable(priv->mac_clk); + clk_put(priv->mac_clk); +- +-out_unmap: +- iounmap(priv->base); +- +-out_release_mem: +- release_mem_region(res_mem->start, iomem_size); + out: + free_netdev(dev); + return ret; +@@ -1833,7 +1821,6 @@ static int bcm_enet_remove(struct platfo + { + struct bcm_enet_priv *priv; + struct net_device *dev; +- struct resource *res; + + /* stop netdevice */ + dev = platform_get_drvdata(pdev); +@@ -1856,11 +1843,6 @@ static int bcm_enet_remove(struct platfo + bcm_enet_mdio_write_mii); + } + +- /* release device resources */ +- iounmap(priv->base); +- res = platform_get_resource(pdev, IORESOURCE_MEM, 0); +- release_mem_region(res->start, resource_size(res)); +- + /* disable hw block clocks */ + if (priv->phy_clk) { + clk_disable(priv->phy_clk); +@@ -1889,31 +1871,20 @@ struct platform_driver bcm63xx_enet_driv + static int bcm_enet_shared_probe(struct platform_device *pdev) + { + struct resource *res; +- unsigned int iomem_size; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!res) + return -ENODEV; + +- iomem_size = resource_size(res); +- if (!request_mem_region(res->start, iomem_size, "bcm63xx_enet_dma")) +- return -EBUSY; +- +- bcm_enet_shared_base = ioremap(res->start, iomem_size); +- if (!bcm_enet_shared_base) { +- release_mem_region(res->start, iomem_size); ++ bcm_enet_shared_base = devm_request_and_ioremap(&pdev->dev, res); ++ if (!bcm_enet_shared_base) + return -ENOMEM; +- } ++ + return 0; + } + + static int bcm_enet_shared_remove(struct platform_device *pdev) + { +- struct resource *res; +- +- iounmap(bcm_enet_shared_base); +- res = platform_get_resource(pdev, IORESOURCE_MEM, 0); +- release_mem_region(res->start, resource_size(res)); + return 0; + } + |
