+static inline void ag71xx_wr(struct ag71xx *ag, unsigned reg, u32 value)
+{
+ switch (reg) {
+ case AG71XX_REG_MAC_CFG1 ... AG71XX_REG_MAC_MFL:
+ __raw_writel(value, ag->mac_base + reg);
+ break;
+ case AG71XX_REG_MAC_IFCTL ... AG71XX_REG_INT_STATUS:
+ reg -= AG71XX_REG_MAC_IFCTL;
+ __raw_writel(value, ag->mac_base2 + reg);
+ break;
+ default:
+ BUG();
+ }
+}
+
+static inline u32 ag71xx_rr(struct ag71xx *ag, unsigned reg)
+{
+ u32 ret;
+
+ switch (reg) {
+ case AG71XX_REG_MAC_CFG1 ... AG71XX_REG_MAC_MFL:
+ ret = __raw_readl(ag->mac_base + reg);
+ break;
+ case AG71XX_REG_MAC_IFCTL ... AG71XX_REG_INT_STATUS:
+ reg -= AG71XX_REG_MAC_IFCTL;
+ ret = __raw_readl(ag->mac_base2 + reg);
+ break;
+ }
+
+ return ret;
+}
+
+static inline void ag71xx_sb(struct ag71xx *ag, unsigned reg, u32 mask)
+{
+ void __iomem *r;
+
+ switch (reg) {
+ case AG71XX_REG_MAC_CFG1 ... AG71XX_REG_MAC_MFL:
+ r = ag->mac_base + reg;
+ __raw_writel(__raw_readl(r) | mask, r);
+ break;
+ case AG71XX_REG_MAC_IFCTL ... AG71XX_REG_INT_STATUS:
+ r = ag->mac_base2 + reg - AG71XX_REG_MAC_IFCTL;
+ __raw_writel(__raw_readl(r) | mask, r);
+ break;
+ default:
+ BUG();
+ }
+}
+
+static inline void ag71xx_cb(struct ag71xx *ag, unsigned reg, u32 mask)
+{
+ void __iomem *r;
+
+ switch (reg) {
+ case AG71XX_REG_MAC_CFG1 ... AG71XX_REG_MAC_MFL:
+ r = ag->mac_base + reg;
+ __raw_writel(__raw_readl(r) & ~mask, r);
+ break;
+ case AG71XX_REG_MAC_IFCTL ... AG71XX_REG_INT_STATUS:
+ r = ag->mac_base2 + reg - AG71XX_REG_MAC_IFCTL;
+ __raw_writel(__raw_readl(r) & ~mask, r);
+ break;
+ default:
+ BUG();
+ }
+}
+