mirror of
https://github.com/torvalds/linux
synced 2024-10-25 04:37:40 +00:00
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>
This commit is contained in:
parent
fd734c6f25
commit
ae70644df7
|
@ -155,18 +155,18 @@ static void sh_eth_chip_reset_giga(struct net_device *ndev)
|
||||||
|
|
||||||
/* save MAHR and MALR */
|
/* save MAHR and MALR */
|
||||||
for (i = 0; i < 2; i++) {
|
for (i = 0; i < 2; i++) {
|
||||||
malr[i] = readl(GIGA_MALR(i));
|
malr[i] = ioread32((void *)GIGA_MALR(i));
|
||||||
mahr[i] = readl(GIGA_MAHR(i));
|
mahr[i] = ioread32((void *)GIGA_MAHR(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* reset device */
|
/* reset device */
|
||||||
writel(ARSTR_ARSTR, SH_GIGA_ETH_BASE + 0x1800);
|
iowrite32(ARSTR_ARSTR, (void *)(SH_GIGA_ETH_BASE + 0x1800));
|
||||||
mdelay(1);
|
mdelay(1);
|
||||||
|
|
||||||
/* restore MAHR and MALR */
|
/* restore MAHR and MALR */
|
||||||
for (i = 0; i < 2; i++) {
|
for (i = 0; i < 2; i++) {
|
||||||
writel(malr[i], GIGA_MALR(i));
|
iowrite32(malr[i], (void *)GIGA_MALR(i));
|
||||||
writel(mahr[i], GIGA_MAHR(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 {
|
struct bb_info {
|
||||||
void (*set_gate)(unsigned long addr);
|
void (*set_gate)(void *addr);
|
||||||
struct mdiobb_ctrl ctrl;
|
struct mdiobb_ctrl ctrl;
|
||||||
u32 addr;
|
void *addr;
|
||||||
u32 mmd_msk;/* MMD */
|
u32 mmd_msk;/* MMD */
|
||||||
u32 mdo_msk;
|
u32 mdo_msk;
|
||||||
u32 mdi_msk;
|
u32 mdi_msk;
|
||||||
|
@ -525,21 +525,21 @@ struct bb_info {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* PHY bit set */
|
/* 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 */
|
/* 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 */
|
/* 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 */
|
/* Data I/O pin control */
|
||||||
|
@ -1680,7 +1680,7 @@ static int sh_mdio_init(struct net_device *ndev, int id,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* bitbang init */
|
/* 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->set_gate = pd->set_mdio_gate;
|
||||||
bitbang->mdi_msk = 0x08;
|
bitbang->mdi_msk = 0x08;
|
||||||
bitbang->mdo_msk = 0x04;
|
bitbang->mdo_msk = 0x04;
|
||||||
|
@ -1812,6 +1812,13 @@ static int sh_eth_drv_probe(struct platform_device *pdev)
|
||||||
ether_setup(ndev);
|
ether_setup(ndev);
|
||||||
|
|
||||||
mdp = netdev_priv(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);
|
spin_lock_init(&mdp->lock);
|
||||||
mdp->pdev = pdev;
|
mdp->pdev = pdev;
|
||||||
pm_runtime_enable(&pdev->dev);
|
pm_runtime_enable(&pdev->dev);
|
||||||
|
@ -1892,6 +1899,8 @@ static int sh_eth_drv_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
out_release:
|
out_release:
|
||||||
/* net_dev free */
|
/* net_dev free */
|
||||||
|
if (mdp && mdp->addr)
|
||||||
|
iounmap(mdp->addr);
|
||||||
if (mdp && mdp->tsu_addr)
|
if (mdp && mdp->tsu_addr)
|
||||||
iounmap(mdp->tsu_addr);
|
iounmap(mdp->tsu_addr);
|
||||||
if (ndev)
|
if (ndev)
|
||||||
|
@ -1910,6 +1919,7 @@ static int sh_eth_drv_remove(struct platform_device *pdev)
|
||||||
sh_mdio_release(ndev);
|
sh_mdio_release(ndev);
|
||||||
unregister_netdev(ndev);
|
unregister_netdev(ndev);
|
||||||
pm_runtime_disable(&pdev->dev);
|
pm_runtime_disable(&pdev->dev);
|
||||||
|
iounmap(mdp->addr);
|
||||||
free_netdev(ndev);
|
free_netdev(ndev);
|
||||||
platform_set_drvdata(pdev, NULL);
|
platform_set_drvdata(pdev, NULL);
|
||||||
|
|
||||||
|
|
|
@ -762,6 +762,7 @@ struct sh_eth_private {
|
||||||
struct platform_device *pdev;
|
struct platform_device *pdev;
|
||||||
struct sh_eth_cpu_data *cd;
|
struct sh_eth_cpu_data *cd;
|
||||||
const u16 *reg_offset;
|
const u16 *reg_offset;
|
||||||
|
void __iomem *addr;
|
||||||
void __iomem *tsu_addr;
|
void __iomem *tsu_addr;
|
||||||
dma_addr_t rx_desc_dma;
|
dma_addr_t rx_desc_dma;
|
||||||
dma_addr_t tx_desc_dma;
|
dma_addr_t tx_desc_dma;
|
||||||
|
@ -811,7 +812,7 @@ static inline void sh_eth_write(struct net_device *ndev, unsigned long data,
|
||||||
{
|
{
|
||||||
struct sh_eth_private *mdp = netdev_priv(ndev);
|
struct sh_eth_private *mdp = netdev_priv(ndev);
|
||||||
|
|
||||||
writel(data, ndev->base_addr + mdp->reg_offset[enum_index]);
|
iowrite32(data, mdp->addr + mdp->reg_offset[enum_index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned long sh_eth_read(struct net_device *ndev,
|
static inline unsigned long sh_eth_read(struct net_device *ndev,
|
||||||
|
@ -819,19 +820,19 @@ static inline unsigned long sh_eth_read(struct net_device *ndev,
|
||||||
{
|
{
|
||||||
struct sh_eth_private *mdp = netdev_priv(ndev);
|
struct sh_eth_private *mdp = netdev_priv(ndev);
|
||||||
|
|
||||||
return readl(ndev->base_addr + mdp->reg_offset[enum_index]);
|
return ioread32(mdp->addr + mdp->reg_offset[enum_index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void sh_eth_tsu_write(struct sh_eth_private *mdp,
|
static inline void sh_eth_tsu_write(struct sh_eth_private *mdp,
|
||||||
unsigned long data, int enum_index)
|
unsigned long data, int enum_index)
|
||||||
{
|
{
|
||||||
writel(data, mdp->tsu_addr + mdp->reg_offset[enum_index]);
|
iowrite32(data, mdp->tsu_addr + mdp->reg_offset[enum_index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned long sh_eth_tsu_read(struct sh_eth_private *mdp,
|
static inline unsigned long sh_eth_tsu_read(struct sh_eth_private *mdp,
|
||||||
int enum_index)
|
int enum_index)
|
||||||
{
|
{
|
||||||
return readl(mdp->tsu_addr + mdp->reg_offset[enum_index]);
|
return ioread32(mdp->tsu_addr + mdp->reg_offset[enum_index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* #ifndef __SH_ETH_H__ */
|
#endif /* #ifndef __SH_ETH_H__ */
|
||||||
|
|
Loading…
Reference in a new issue