diff options
author | Jonas Gorski <jogo@openwrt.org> | 2013-03-09 22:57:47 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-03-10 16:57:01 -0400 |
commit | 1c03da0522e91617fcadeb7dd596ee41f2b116b9 (patch) | |
tree | 84c465a7db8277be96b78fc787389b1d65a07b57 /drivers/net/ethernet/broadcom/bcm63xx_enet.c | |
parent | e41eef8f317a4cfe43ec4de2527703a2e6f16087 (diff) |
bcm63xx_enet: use managed io memory allocations
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
Acked-by: Kevin Cernekee <cernekee@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/broadcom/bcm63xx_enet.c')
-rw-r--r-- | drivers/net/ethernet/broadcom/bcm63xx_enet.c | 43 |
1 files changed, 7 insertions, 36 deletions
diff --git a/drivers/net/ethernet/broadcom/bcm63xx_enet.c b/drivers/net/ethernet/broadcom/bcm63xx_enet.c index 7d81e059e811..8256b55883e2 100644 --- 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 platform_device *pdev) | |||
1619 | struct resource *res_mem, *res_irq, *res_irq_rx, *res_irq_tx; | 1619 | struct resource *res_mem, *res_irq, *res_irq_rx, *res_irq_tx; |
1620 | struct mii_bus *bus; | 1620 | struct mii_bus *bus; |
1621 | const char *clk_name; | 1621 | const char *clk_name; |
1622 | unsigned int iomem_size; | ||
1623 | int i, ret; | 1622 | int i, ret; |
1624 | 1623 | ||
1625 | /* stop if shared driver failed, assume driver->probe will be | 1624 | /* stop if shared driver failed, assume driver->probe will be |
@@ -1644,17 +1643,12 @@ static int bcm_enet_probe(struct platform_device *pdev) | |||
1644 | if (ret) | 1643 | if (ret) |
1645 | goto out; | 1644 | goto out; |
1646 | 1645 | ||
1647 | iomem_size = resource_size(res_mem); | 1646 | priv->base = devm_request_and_ioremap(&pdev->dev, res_mem); |
1648 | if (!request_mem_region(res_mem->start, iomem_size, "bcm63xx_enet")) { | ||
1649 | ret = -EBUSY; | ||
1650 | goto out; | ||
1651 | } | ||
1652 | |||
1653 | priv->base = ioremap(res_mem->start, iomem_size); | ||
1654 | if (priv->base == NULL) { | 1647 | if (priv->base == NULL) { |
1655 | ret = -ENOMEM; | 1648 | ret = -ENOMEM; |
1656 | goto out_release_mem; | 1649 | goto out; |
1657 | } | 1650 | } |
1651 | |||
1658 | dev->irq = priv->irq = res_irq->start; | 1652 | dev->irq = priv->irq = res_irq->start; |
1659 | priv->irq_rx = res_irq_rx->start; | 1653 | priv->irq_rx = res_irq_rx->start; |
1660 | priv->irq_tx = res_irq_tx->start; | 1654 | priv->irq_tx = res_irq_tx->start; |
@@ -1674,7 +1668,7 @@ static int bcm_enet_probe(struct platform_device *pdev) | |||
1674 | priv->mac_clk = clk_get(&pdev->dev, clk_name); | 1668 | priv->mac_clk = clk_get(&pdev->dev, clk_name); |
1675 | if (IS_ERR(priv->mac_clk)) { | 1669 | if (IS_ERR(priv->mac_clk)) { |
1676 | ret = PTR_ERR(priv->mac_clk); | 1670 | ret = PTR_ERR(priv->mac_clk); |
1677 | goto out_unmap; | 1671 | goto out; |
1678 | } | 1672 | } |
1679 | clk_enable(priv->mac_clk); | 1673 | clk_enable(priv->mac_clk); |
1680 | 1674 | ||
@@ -1814,12 +1808,6 @@ out_uninit_hw: | |||
1814 | out_put_clk_mac: | 1808 | out_put_clk_mac: |
1815 | clk_disable(priv->mac_clk); | 1809 | clk_disable(priv->mac_clk); |
1816 | clk_put(priv->mac_clk); | 1810 | clk_put(priv->mac_clk); |
1817 | |||
1818 | out_unmap: | ||
1819 | iounmap(priv->base); | ||
1820 | |||
1821 | out_release_mem: | ||
1822 | release_mem_region(res_mem->start, iomem_size); | ||
1823 | out: | 1811 | out: |
1824 | free_netdev(dev); | 1812 | free_netdev(dev); |
1825 | return ret; | 1813 | return ret; |
@@ -1833,7 +1821,6 @@ static int bcm_enet_remove(struct platform_device *pdev) | |||
1833 | { | 1821 | { |
1834 | struct bcm_enet_priv *priv; | 1822 | struct bcm_enet_priv *priv; |
1835 | struct net_device *dev; | 1823 | struct net_device *dev; |
1836 | struct resource *res; | ||
1837 | 1824 | ||
1838 | /* stop netdevice */ | 1825 | /* stop netdevice */ |
1839 | dev = platform_get_drvdata(pdev); | 1826 | dev = platform_get_drvdata(pdev); |
@@ -1856,11 +1843,6 @@ static int bcm_enet_remove(struct platform_device *pdev) | |||
1856 | bcm_enet_mdio_write_mii); | 1843 | bcm_enet_mdio_write_mii); |
1857 | } | 1844 | } |
1858 | 1845 | ||
1859 | /* release device resources */ | ||
1860 | iounmap(priv->base); | ||
1861 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
1862 | release_mem_region(res->start, resource_size(res)); | ||
1863 | |||
1864 | /* disable hw block clocks */ | 1846 | /* disable hw block clocks */ |
1865 | if (priv->phy_clk) { | 1847 | if (priv->phy_clk) { |
1866 | clk_disable(priv->phy_clk); | 1848 | clk_disable(priv->phy_clk); |
@@ -1889,31 +1871,20 @@ struct platform_driver bcm63xx_enet_driver = { | |||
1889 | static int bcm_enet_shared_probe(struct platform_device *pdev) | 1871 | static int bcm_enet_shared_probe(struct platform_device *pdev) |
1890 | { | 1872 | { |
1891 | struct resource *res; | 1873 | struct resource *res; |
1892 | unsigned int iomem_size; | ||
1893 | 1874 | ||
1894 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1875 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
1895 | if (!res) | 1876 | if (!res) |
1896 | return -ENODEV; | 1877 | return -ENODEV; |
1897 | 1878 | ||
1898 | iomem_size = resource_size(res); | 1879 | bcm_enet_shared_base = devm_request_and_ioremap(&pdev->dev, res); |
1899 | if (!request_mem_region(res->start, iomem_size, "bcm63xx_enet_dma")) | 1880 | if (!bcm_enet_shared_base) |
1900 | return -EBUSY; | ||
1901 | |||
1902 | bcm_enet_shared_base = ioremap(res->start, iomem_size); | ||
1903 | if (!bcm_enet_shared_base) { | ||
1904 | release_mem_region(res->start, iomem_size); | ||
1905 | return -ENOMEM; | 1881 | return -ENOMEM; |
1906 | } | 1882 | |
1907 | return 0; | 1883 | return 0; |
1908 | } | 1884 | } |
1909 | 1885 | ||
1910 | static int bcm_enet_shared_remove(struct platform_device *pdev) | 1886 | static int bcm_enet_shared_remove(struct platform_device *pdev) |
1911 | { | 1887 | { |
1912 | struct resource *res; | ||
1913 | |||
1914 | iounmap(bcm_enet_shared_base); | ||
1915 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
1916 | release_mem_region(res->start, resource_size(res)); | ||
1917 | return 0; | 1888 | return 0; |
1918 | } | 1889 | } |
1919 | 1890 | ||