Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Yoshihiro Shimoda and committed by
David S. Miller
ae70644d fd734c6f

+29 -18
+24 -14
drivers/net/ethernet/renesas/sh_eth.c
··· 155 155 156 156 /* save MAHR and MALR */ 157 157 for (i = 0; i < 2; i++) { 158 - malr[i] = readl(GIGA_MALR(i)); 159 - mahr[i] = readl(GIGA_MAHR(i)); 158 + malr[i] = ioread32((void *)GIGA_MALR(i)); 159 + mahr[i] = ioread32((void *)GIGA_MAHR(i)); 160 160 } 161 161 162 162 /* reset device */ 163 - writel(ARSTR_ARSTR, SH_GIGA_ETH_BASE + 0x1800); 163 + iowrite32(ARSTR_ARSTR, (void *)(SH_GIGA_ETH_BASE + 0x1800)); 164 164 mdelay(1); 165 165 166 166 /* restore MAHR and MALR */ 167 167 for (i = 0; i < 2; i++) { 168 - writel(malr[i], GIGA_MALR(i)); 169 - writel(mahr[i], GIGA_MAHR(i)); 168 + iowrite32(malr[i], (void *)GIGA_MALR(i)); 169 + iowrite32(mahr[i], (void *)GIGA_MAHR(i)); 170 170 } 171 171 } 172 172 ··· 515 515 } 516 516 517 517 struct bb_info { 518 - void (*set_gate)(unsigned long addr); 518 + void (*set_gate)(void *addr); 519 519 struct mdiobb_ctrl ctrl; 520 - u32 addr; 520 + void *addr; 521 521 u32 mmd_msk;/* MMD */ 522 522 u32 mdo_msk; 523 523 u32 mdi_msk; ··· 525 525 }; 526 526 527 527 /* PHY bit set */ 528 - static void bb_set(u32 addr, u32 msk) 528 + static void bb_set(void *addr, u32 msk) 529 529 { 530 - writel(readl(addr) | msk, addr); 530 + iowrite32(ioread32(addr) | msk, addr); 531 531 } 532 532 533 533 /* PHY bit clear */ 534 - static void bb_clr(u32 addr, u32 msk) 534 + static void bb_clr(void *addr, u32 msk) 535 535 { 536 - writel((readl(addr) & ~msk), addr); 536 + iowrite32((ioread32(addr) & ~msk), addr); 537 537 } 538 538 539 539 /* PHY bit read */ 540 - static int bb_read(u32 addr, u32 msk) 540 + static int bb_read(void *addr, u32 msk) 541 541 { 542 - return (readl(addr) & msk) != 0; 542 + return (ioread32(addr) & msk) != 0; 543 543 } 544 544 545 545 /* Data I/O pin control */ ··· 1680 1680 } 1681 1681 1682 1682 /* bitbang init */ 1683 - bitbang->addr = ndev->base_addr + mdp->reg_offset[PIR]; 1683 + bitbang->addr = mdp->addr + mdp->reg_offset[PIR]; 1684 1684 bitbang->set_gate = pd->set_mdio_gate; 1685 1685 bitbang->mdi_msk = 0x08; 1686 1686 bitbang->mdo_msk = 0x04; ··· 1812 1812 ether_setup(ndev); 1813 1813 1814 1814 mdp = netdev_priv(ndev); 1815 + mdp->addr = ioremap(res->start, resource_size(res)); 1816 + if (mdp->addr == NULL) { 1817 + ret = -ENOMEM; 1818 + dev_err(&pdev->dev, "ioremap failed.\n"); 1819 + goto out_release; 1820 + } 1821 + 1815 1822 spin_lock_init(&mdp->lock); 1816 1823 mdp->pdev = pdev; 1817 1824 pm_runtime_enable(&pdev->dev); ··· 1899 1892 1900 1893 out_release: 1901 1894 /* net_dev free */ 1895 + if (mdp && mdp->addr) 1896 + iounmap(mdp->addr); 1902 1897 if (mdp && mdp->tsu_addr) 1903 1898 iounmap(mdp->tsu_addr); 1904 1899 if (ndev) ··· 1919 1910 sh_mdio_release(ndev); 1920 1911 unregister_netdev(ndev); 1921 1912 pm_runtime_disable(&pdev->dev); 1913 + iounmap(mdp->addr); 1922 1914 free_netdev(ndev); 1923 1915 platform_set_drvdata(pdev, NULL); 1924 1916
+5 -4
drivers/net/ethernet/renesas/sh_eth.h
··· 762 762 struct platform_device *pdev; 763 763 struct sh_eth_cpu_data *cd; 764 764 const u16 *reg_offset; 765 + void __iomem *addr; 765 766 void __iomem *tsu_addr; 766 767 dma_addr_t rx_desc_dma; 767 768 dma_addr_t tx_desc_dma; ··· 812 811 { 813 812 struct sh_eth_private *mdp = netdev_priv(ndev); 814 813 815 - writel(data, ndev->base_addr + mdp->reg_offset[enum_index]); 814 + iowrite32(data, mdp->addr + mdp->reg_offset[enum_index]); 816 815 } 817 816 818 817 static inline unsigned long sh_eth_read(struct net_device *ndev, ··· 820 819 { 821 820 struct sh_eth_private *mdp = netdev_priv(ndev); 822 821 823 - return readl(ndev->base_addr + mdp->reg_offset[enum_index]); 822 + return ioread32(mdp->addr + mdp->reg_offset[enum_index]); 824 823 } 825 824 826 825 static inline void sh_eth_tsu_write(struct sh_eth_private *mdp, 827 826 unsigned long data, int enum_index) 828 827 { 829 - writel(data, mdp->tsu_addr + mdp->reg_offset[enum_index]); 828 + iowrite32(data, mdp->tsu_addr + mdp->reg_offset[enum_index]); 830 829 } 831 830 832 831 static inline unsigned long sh_eth_tsu_read(struct sh_eth_private *mdp, 833 832 int enum_index) 834 833 { 835 - return readl(mdp->tsu_addr + mdp->reg_offset[enum_index]); 834 + return ioread32(mdp->tsu_addr + mdp->reg_offset[enum_index]); 836 835 } 837 836 838 837 #endif /* #ifndef __SH_ETH_H__ */