static int mv88e6390_serdes_write(struct mv88e6xxx_chip *chip, int lane, int device, int reg, u16 val) { int reg_c45 = MII_ADDR_C45 | device << 16 | reg; return mv88e6xxx_phy_write(chip, lane, reg_c45, val); }
static int mv88e6123_61_65_phy_write(struct dsa_switch *ds, int port, int regnum, u16 val) { int addr = mv88e6123_61_65_port_to_phy_addr(port); return mv88e6xxx_phy_write(ds, addr, regnum, val); }
static void mv88e6xxx_phy_page_put(struct mv88e6xxx_chip *chip, int phy) { int err; /* Restore PHY page Copper 0x0 for access via the registered * MDIO bus */ err = mv88e6xxx_phy_write(chip, phy, MV88E6XXX_PHY_PAGE, MV88E6XXX_PHY_PAGE_COPPER); if (unlikely(err)) { dev_err(chip->dev, "failed to restore PHY %d page Copper (%d)\n", phy, err); } }
int mv88e6xxx_phy_page_write(struct mv88e6xxx_chip *chip, int phy, u8 page, int reg, u16 val) { int err; /* There is no paging for registers 22 */ if (reg == MV88E6XXX_PHY_PAGE) return -EINVAL; err = mv88e6xxx_phy_page_get(chip, phy, page); if (!err) { err = mv88e6xxx_phy_write(chip, phy, MV88E6XXX_PHY_PAGE, page); mv88e6xxx_phy_page_put(chip, phy); } return err; }
static int mv88e6xxx_phy_page_get(struct mv88e6xxx_chip *chip, int phy, u8 page) { return mv88e6xxx_phy_write(chip, phy, MV88E6XXX_PHY_PAGE, page); }