X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/7e34715f436ce9c552993df77a9c545398691b96..ac42d58d7c974b42dd434a2f7f327b390c929c63:/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx.h diff --git a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx.h b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx.h index 39a348a76..77962fec8 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.25" #define AG71XX_NAPI_WEIGHT 64 #define AG71XX_OOM_REFILL (1 + HZ/10) @@ -103,14 +103,14 @@ struct ag71xx_ring { }; struct ag71xx_mdio { - struct mii_bus *mii_bus; - int mii_irq[PHY_MAX_ADDR]; - void __iomem *mdio_base; + struct mii_bus *mii_bus; + int mii_irq[PHY_MAX_ADDR]; + void __iomem *mdio_base; + struct ag71xx_mdio_platform_data *pdata; }; struct ag71xx { void __iomem *mac_base; - void __iomem *mac_base2; void __iomem *mii_ctrl; spinlock_t lock; @@ -314,14 +314,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 +333,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 +350,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 +368,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 +398,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); }