Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2b74e5be authored by Russell King's avatar Russell King Committed by David S. Miller
Browse files

net: phy: add phy_modify() accessor



Add phy_modify() convenience accessor to complement the mdiobus
counterpart.

Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 424ca4c5
Loading
Loading
Loading
Loading
+23 −0
Original line number Original line Diff line number Diff line
@@ -349,6 +349,29 @@ int __phy_modify(struct phy_device *phydev, u32 regnum, u16 mask, u16 set)
}
}
EXPORT_SYMBOL_GPL(__phy_modify);
EXPORT_SYMBOL_GPL(__phy_modify);


/**
 * phy_modify - Convenience function for modifying a given PHY register
 * @phydev: the phy_device struct
 * @regnum: register number to write
 * @mask: bit mask of bits to clear
 * @set: new value of bits set in mask to write to @regnum
 *
 * NOTE: MUST NOT be called from interrupt context,
 * because the bus read/write functions may wait for an interrupt
 * to conclude the operation.
 */
int phy_modify(struct phy_device *phydev, u32 regnum, u16 mask, u16 set)
{
	int ret;

	mutex_lock(&phydev->mdio.bus->mdio_lock);
	ret = __phy_modify(phydev, regnum, mask, set);
	mutex_unlock(&phydev->mdio.bus->mdio_lock);

	return ret;
}
EXPORT_SYMBOL_GPL(phy_modify);

static int __phy_read_page(struct phy_device *phydev)
static int __phy_read_page(struct phy_device *phydev)
{
{
	return phydev->drv->read_page(phydev);
	return phydev->drv->read_page(phydev);
+1 −0
Original line number Original line Diff line number Diff line
@@ -762,6 +762,7 @@ static inline int __phy_write(struct phy_device *phydev, u32 regnum, u16 val)
}
}


int __phy_modify(struct phy_device *phydev, u32 regnum, u16 mask, u16 set);
int __phy_modify(struct phy_device *phydev, u32 regnum, u16 mask, u16 set);
int phy_modify(struct phy_device *phydev, u32 regnum, u16 mask, u16 set);


/**
/**
 * phy_interrupt_is_valid - Convenience function for testing a given PHY irq
 * phy_interrupt_is_valid - Convenience function for testing a given PHY irq