static int ag71xx_mdio_read(struct mii_bus *bus, int addr, int reg) { struct ag71xx_mdio *am = bus->priv; if (am->pdata->is_ar7240) return ar7240sw_phy_read(bus, addr, reg); else return ag71xx_mdio_mii_read(am, addr, reg); }
static u32 __ar7240sw_reg_read(struct mii_bus *mii, u32 reg) { unsigned long flags; u16 phy_addr; u16 phy_reg; u32 hi, lo; reg = (reg & 0xfffffffc) >> 2; phy_addr = mk_phy_addr(reg); phy_reg = mk_phy_reg(reg); local_irq_save(flags); ag71xx_mdio_mii_write(mii->priv, 0x1f, 0x10, mk_high_addr(reg)); lo = (u32) ag71xx_mdio_mii_read(mii->priv, phy_addr, phy_reg); hi = (u32) ag71xx_mdio_mii_read(mii->priv, phy_addr, phy_reg + 1); local_irq_restore(flags); return (hi << 16) | lo; }
static int ag71xx_mdio_read(struct mii_bus *bus, int addr, int reg) { struct ag71xx_mdio *am = bus->priv; return ag71xx_mdio_mii_read(am, addr, reg); }