diff options
author | Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> | 2011-09-27 23:48:58 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-09-28 19:41:50 +0200 |
commit | ae70644df780c0e87f1705fda932e7cb1bdb2074 (patch) | |
tree | 389689f9a84c511d99719d274f9cf8577a21e2ea /drivers/net/ethernet/renesas/sh_eth.c | |
parent | can/sja1000: add driver for EMS PCMCIA card (diff) | |
download | linux-ae70644df780c0e87f1705fda932e7cb1bdb2074.tar.xz linux-ae70644df780c0e87f1705fda932e7cb1bdb2074.zip |
net: sh_eth: use ioremap()
This patch also changes writel/readl to iowrite32/ioread32.
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/renesas/sh_eth.c')
-rw-r--r-- | drivers/net/ethernet/renesas/sh_eth.c | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c index 4479a45f7329..38ccda55ea7e 100644 --- a/drivers/net/ethernet/renesas/sh_eth.c +++ b/drivers/net/ethernet/renesas/sh_eth.c @@ -155,18 +155,18 @@ static void sh_eth_chip_reset_giga(struct net_device *ndev) /* save MAHR and MALR */ for (i = 0; i < 2; i++) { - malr[i] = readl(GIGA_MALR(i)); - mahr[i] = readl(GIGA_MAHR(i)); + malr[i] = ioread32((void *)GIGA_MALR(i)); + mahr[i] = ioread32((void *)GIGA_MAHR(i)); } /* reset device */ - writel(ARSTR_ARSTR, SH_GIGA_ETH_BASE + 0x1800); + iowrite32(ARSTR_ARSTR, (void *)(SH_GIGA_ETH_BASE + 0x1800)); mdelay(1); /* restore MAHR and MALR */ for (i = 0; i < 2; i++) { - writel(malr[i], GIGA_MALR(i)); - writel(mahr[i], GIGA_MAHR(i)); + iowrite32(malr[i], (void *)GIGA_MALR(i)); + iowrite32(mahr[i], (void *)GIGA_MAHR(i)); } } @@ -515,9 +515,9 @@ static unsigned long sh_eth_get_edtrr_trns(struct sh_eth_private *mdp) } struct bb_info { - void (*set_gate)(unsigned long addr); + void (*set_gate)(void *addr); struct mdiobb_ctrl ctrl; - u32 addr; + void *addr; u32 mmd_msk;/* MMD */ u32 mdo_msk; u32 mdi_msk; @@ -525,21 +525,21 @@ struct bb_info { }; /* PHY bit set */ -static void bb_set(u32 addr, u32 msk) +static void bb_set(void *addr, u32 msk) { - writel(readl(addr) | msk, addr); + iowrite32(ioread32(addr) | msk, addr); } /* PHY bit clear */ -static void bb_clr(u32 addr, u32 msk) +static void bb_clr(void *addr, u32 msk) { - writel((readl(addr) & ~msk), addr); + iowrite32((ioread32(addr) & ~msk), addr); } /* PHY bit read */ -static int bb_read(u32 addr, u32 msk) +static int bb_read(void *addr, u32 msk) { - return (readl(addr) & msk) != 0; + return (ioread32(addr) & msk) != 0; } /* Data I/O pin control */ @@ -1680,7 +1680,7 @@ static int sh_mdio_init(struct net_device *ndev, int id, } /* bitbang init */ - bitbang->addr = ndev->base_addr + mdp->reg_offset[PIR]; + bitbang->addr = mdp->addr + mdp->reg_offset[PIR]; bitbang->set_gate = pd->set_mdio_gate; bitbang->mdi_msk = 0x08; bitbang->mdo_msk = 0x04; @@ -1812,6 +1812,13 @@ static int sh_eth_drv_probe(struct platform_device *pdev) ether_setup(ndev); mdp = netdev_priv(ndev); + mdp->addr = ioremap(res->start, resource_size(res)); + if (mdp->addr == NULL) { + ret = -ENOMEM; + dev_err(&pdev->dev, "ioremap failed.\n"); + goto out_release; + } + spin_lock_init(&mdp->lock); mdp->pdev = pdev; pm_runtime_enable(&pdev->dev); @@ -1892,6 +1899,8 @@ out_unregister: out_release: /* net_dev free */ + if (mdp && mdp->addr) + iounmap(mdp->addr); if (mdp && mdp->tsu_addr) iounmap(mdp->tsu_addr); if (ndev) @@ -1910,6 +1919,7 @@ static int sh_eth_drv_remove(struct platform_device *pdev) sh_mdio_release(ndev); unregister_netdev(ndev); pm_runtime_disable(&pdev->dev); + iounmap(mdp->addr); free_netdev(ndev); platform_set_drvdata(pdev, NULL); |