diff options
author | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-09-23 17:44:02 +0000 |
---|---|---|
committer | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-09-23 17:44:02 +0000 |
commit | 1bf028b56dd1177894b0698db5666ba13e77cdcf (patch) | |
tree | 3e3d26e9d4ab37630b805dca773fe0b7a94dd070 /target/linux/ar71xx/files/drivers | |
parent | 7e34715f436ce9c552993df77a9c545398691b96 (diff) |
ar71xx: don't use mac_base2 in the ag71xx driver
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@17693 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ar71xx/files/drivers')
3 files changed, 21 insertions, 46 deletions
diff --git a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx.h b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx.h index 39a348a760..8f966e1fda 100644 --- a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx.h +++ b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx.h @@ -38,7 +38,7 @@ #define ETH_FCS_LEN 4 #define AG71XX_DRV_NAME "ag71xx" -#define AG71XX_DRV_VERSION "0.5.23" +#define AG71XX_DRV_VERSION "0.5.24" #define AG71XX_NAPI_WEIGHT 64 #define AG71XX_OOM_REFILL (1 + HZ/10) @@ -110,7 +110,6 @@ struct ag71xx_mdio { struct ag71xx { void __iomem *mac_base; - void __iomem *mac_base2; void __iomem *mii_ctrl; spinlock_t lock; @@ -314,14 +313,12 @@ static inline void ag71xx_wr(struct ag71xx *ag, unsigned reg, u32 value) switch (reg) { case AG71XX_REG_MAC_CFG1 ... AG71XX_REG_MAC_MFL: - r = ag->mac_base + reg; - __raw_writel(value, r); - __raw_readl(r); - break; case AG71XX_REG_MAC_IFCTL ... AG71XX_REG_INT_STATUS: - r = ag->mac_base2 + reg - AG71XX_REG_MAC_IFCTL; + r = ag->mac_base + reg; __raw_writel(value, r); - __raw_readl(r); + + /* flush write */ + (void) __raw_readl(r); break; default: BUG(); @@ -335,11 +332,8 @@ static inline u32 ag71xx_rr(struct ag71xx *ag, unsigned reg) switch (reg) { case AG71XX_REG_MAC_CFG1 ... AG71XX_REG_MAC_MFL: - r = ag->mac_base + reg; - ret = __raw_readl(r); - break; case AG71XX_REG_MAC_IFCTL ... AG71XX_REG_INT_STATUS: - r = ag->mac_base2 + reg - AG71XX_REG_MAC_IFCTL; + r = ag->mac_base + reg; ret = __raw_readl(r); break; default: @@ -355,14 +349,12 @@ static inline void ag71xx_sb(struct ag71xx *ag, unsigned reg, u32 mask) switch (reg) { case AG71XX_REG_MAC_CFG1 ... AG71XX_REG_MAC_MFL: - r = ag->mac_base + reg; - __raw_writel(__raw_readl(r) | mask, r); - __raw_readl(r); - break; case AG71XX_REG_MAC_IFCTL ... AG71XX_REG_INT_STATUS: - r = ag->mac_base2 + reg - AG71XX_REG_MAC_IFCTL; + r = ag->mac_base + reg; __raw_writel(__raw_readl(r) | mask, r); - __raw_readl(r); + + /* flush write */ + (void)__raw_readl(r); break; default: BUG(); @@ -375,14 +367,12 @@ static inline void ag71xx_cb(struct ag71xx *ag, unsigned reg, u32 mask) switch (reg) { case AG71XX_REG_MAC_CFG1 ... AG71XX_REG_MAC_MFL: - r = ag->mac_base + reg; - __raw_writel(__raw_readl(r) & ~mask, r); - __raw_readl(r); - break; case AG71XX_REG_MAC_IFCTL ... AG71XX_REG_INT_STATUS: - r = ag->mac_base2 + reg - AG71XX_REG_MAC_IFCTL; + r = ag->mac_base + reg; __raw_writel(__raw_readl(r) & ~mask, r); - __raw_readl(r); + + /* flush write */ + (void) __raw_readl(r); break; default: BUG(); @@ -407,6 +397,8 @@ static inline void ag71xx_mii_ctrl_wr(struct ag71xx *ag, u32 value) return; __raw_writel(value, ag->mii_ctrl); + + /* flush write */ __raw_readl(ag->mii_ctrl); } diff --git a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c index 0ba4d55e85..57f6b34d6b 100644 --- a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c +++ b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c @@ -837,32 +837,18 @@ static int __init ag71xx_probe(struct platform_device *pdev) goto err_free_dev; } - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mac_base2"); - if (!res) { - dev_err(&pdev->dev, "no mac_base2 resource found\n"); - err = -ENXIO; - goto err_unmap_base1; - } - - ag->mac_base2 = ioremap_nocache(res->start, res->end - res->start + 1); - if (!ag->mac_base) { - dev_err(&pdev->dev, "unable to ioremap mac_base2\n"); - err = -ENOMEM; - goto err_unmap_base1; - } - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mii_ctrl"); if (!res) { dev_err(&pdev->dev, "no mii_ctrl resource found\n"); err = -ENXIO; - goto err_unmap_base2; + goto err_unmap_base; } ag->mii_ctrl = ioremap_nocache(res->start, res->end - res->start + 1); if (!ag->mii_ctrl) { dev_err(&pdev->dev, "unable to ioremap mii_ctrl\n"); err = -ENOMEM; - goto err_unmap_base2; + goto err_unmap_base; } dev->irq = platform_get_irq(pdev, 0); @@ -929,9 +915,7 @@ static int __init ag71xx_probe(struct platform_device *pdev) free_irq(dev->irq, dev); err_unmap_mii_ctrl: iounmap(ag->mii_ctrl); - err_unmap_base2: - iounmap(ag->mac_base2); - err_unmap_base1: + err_unmap_base: iounmap(ag->mac_base); err_free_dev: kfree(dev); @@ -951,7 +935,6 @@ static int __exit ag71xx_remove(struct platform_device *pdev) unregister_netdev(dev); free_irq(dev->irq, dev); iounmap(ag->mii_ctrl); - iounmap(ag->mac_base2); iounmap(ag->mac_base); kfree(dev); platform_set_drvdata(pdev, NULL); diff --git a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_mdio.c b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_mdio.c index 7e6452b6e3..5721278895 100644 --- a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_mdio.c +++ b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_mdio.c @@ -21,12 +21,12 @@ struct ag71xx_mdio *ag71xx_mdio_bus; static inline void ag71xx_mdio_wr(struct ag71xx_mdio *am, unsigned reg, u32 value) { - __raw_writel(value, am->mdio_base + reg - AG71XX_REG_MII_CFG); + __raw_writel(value, am->mdio_base + reg); } static inline u32 ag71xx_mdio_rr(struct ag71xx_mdio *am, unsigned reg) { - return __raw_readl(am->mdio_base + reg - AG71XX_REG_MII_CFG); + return __raw_readl(am->mdio_base + reg); } static void ag71xx_mdio_dump_regs(struct ag71xx_mdio *am) |