diff options
Diffstat (limited to 'drivers/net/dsa/mv88e6xxx/phy.c')
| -rw-r--r-- | drivers/net/dsa/mv88e6xxx/phy.c | 32 | 
1 files changed, 32 insertions, 0 deletions
diff --git a/drivers/net/dsa/mv88e6xxx/phy.c b/drivers/net/dsa/mv88e6xxx/phy.c index 252b5b3a3efe..8bb88b3d900d 100644 --- a/drivers/net/dsa/mv88e6xxx/phy.c +++ b/drivers/net/dsa/mv88e6xxx/phy.c @@ -55,6 +55,38 @@ int mv88e6xxx_phy_write(struct mv88e6xxx_chip *chip, int phy, int reg, u16 val)  	return chip->info->ops->phy_write(chip, bus, addr, reg, val);  } +int mv88e6xxx_phy_read_c45(struct mv88e6xxx_chip *chip, int phy, int devad, +			   int reg, u16 *val) +{ +	int addr = phy; /* PHY devices addresses start at 0x0 */ +	struct mii_bus *bus; + +	bus = mv88e6xxx_default_mdio_bus(chip); +	if (!bus) +		return -EOPNOTSUPP; + +	if (!chip->info->ops->phy_read_c45) +		return -EOPNOTSUPP; + +	return chip->info->ops->phy_read_c45(chip, bus, addr, devad, reg, val); +} + +int mv88e6xxx_phy_write_c45(struct mv88e6xxx_chip *chip, int phy, int devad, +			    int reg, u16 val) +{ +	int addr = phy; /* PHY devices addresses start at 0x0 */ +	struct mii_bus *bus; + +	bus = mv88e6xxx_default_mdio_bus(chip); +	if (!bus) +		return -EOPNOTSUPP; + +	if (!chip->info->ops->phy_write_c45) +		return -EOPNOTSUPP; + +	return chip->info->ops->phy_write_c45(chip, bus, addr, devad, reg, val); +} +  static int mv88e6xxx_phy_page_get(struct mv88e6xxx_chip *chip, int phy, u8 page)  {  	return mv88e6xxx_phy_write(chip, phy, MV88E6XXX_PHY_PAGE, page);  |