net: mdiobus: add clause 45 mdiobus accessors
There is a recurring pattern throughout some of the PHY code converting a devad and regnum to our packed clause 45 representation. Rather than having this scattered around the code, let's put a common translation function in mdio.h, and provide some register accessors. Convert the phylib core, phylink, bcm87xx and cortina to use these. Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
8928e19ad8
commit
90ce665c6a
@@ -675,16 +675,14 @@ EXPORT_SYMBOL(phy_device_create);
|
||||
static int get_phy_c45_devs_in_pkg(struct mii_bus *bus, int addr, int dev_addr,
|
||||
u32 *devices_in_package)
|
||||
{
|
||||
int phy_reg, reg_addr;
|
||||
int phy_reg;
|
||||
|
||||
reg_addr = MII_ADDR_C45 | dev_addr << 16 | MDIO_DEVS2;
|
||||
phy_reg = mdiobus_read(bus, addr, reg_addr);
|
||||
phy_reg = mdiobus_c45_read(bus, addr, dev_addr, MDIO_DEVS2);
|
||||
if (phy_reg < 0)
|
||||
return -EIO;
|
||||
*devices_in_package = phy_reg << 16;
|
||||
|
||||
reg_addr = MII_ADDR_C45 | dev_addr << 16 | MDIO_DEVS1;
|
||||
phy_reg = mdiobus_read(bus, addr, reg_addr);
|
||||
phy_reg = mdiobus_c45_read(bus, addr, dev_addr, MDIO_DEVS1);
|
||||
if (phy_reg < 0)
|
||||
return -EIO;
|
||||
*devices_in_package |= phy_reg;
|
||||
@@ -709,11 +707,11 @@ static int get_phy_c45_devs_in_pkg(struct mii_bus *bus, int addr, int dev_addr,
|
||||
*
|
||||
*/
|
||||
static int get_phy_c45_ids(struct mii_bus *bus, int addr, u32 *phy_id,
|
||||
struct phy_c45_device_ids *c45_ids) {
|
||||
int phy_reg;
|
||||
int i, reg_addr;
|
||||
struct phy_c45_device_ids *c45_ids)
|
||||
{
|
||||
const int num_ids = ARRAY_SIZE(c45_ids->device_ids);
|
||||
u32 *devs = &c45_ids->devices_in_package;
|
||||
int i, phy_reg;
|
||||
|
||||
/* Find first non-zero Devices In package. Device zero is reserved
|
||||
* for 802.3 c45 complied PHYs, so don't probe it at first.
|
||||
@@ -747,14 +745,12 @@ static int get_phy_c45_ids(struct mii_bus *bus, int addr, u32 *phy_id,
|
||||
if (!(c45_ids->devices_in_package & (1 << i)))
|
||||
continue;
|
||||
|
||||
reg_addr = MII_ADDR_C45 | i << 16 | MII_PHYSID1;
|
||||
phy_reg = mdiobus_read(bus, addr, reg_addr);
|
||||
phy_reg = mdiobus_c45_read(bus, addr, i, MII_PHYSID1);
|
||||
if (phy_reg < 0)
|
||||
return -EIO;
|
||||
c45_ids->device_ids[i] = phy_reg << 16;
|
||||
|
||||
reg_addr = MII_ADDR_C45 | i << 16 | MII_PHYSID2;
|
||||
phy_reg = mdiobus_read(bus, addr, reg_addr);
|
||||
phy_reg = mdiobus_c45_read(bus, addr, i, MII_PHYSID2);
|
||||
if (phy_reg < 0)
|
||||
return -EIO;
|
||||
c45_ids->device_ids[i] |= phy_reg;
|
||||
|
Reference in New Issue
Block a user