net: mdio: add mdiobus_modify_changed()
Add mdiobus_modify_changed() helper to reflect the phylib and similar equivalents. This will avoid this functionality being open-coded, as has already happened in phylink, and it looks like other users will be appearing soon. Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
4c82708299
commit
79365f36d1
@@ -926,6 +926,28 @@ int mdiobus_modify(struct mii_bus *bus, int addr, u32 regnum, u16 mask, u16 set)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(mdiobus_modify);
|
EXPORT_SYMBOL_GPL(mdiobus_modify);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mdiobus_modify_changed - Convenience function for modifying a given mdio
|
||||||
|
* device register and returning if it changed
|
||||||
|
* @bus: the mii_bus struct
|
||||||
|
* @addr: the phy address
|
||||||
|
* @regnum: register number to write
|
||||||
|
* @mask: bit mask of bits to clear
|
||||||
|
* @set: bit mask of bits to set
|
||||||
|
*/
|
||||||
|
int mdiobus_modify_changed(struct mii_bus *bus, int addr, u32 regnum,
|
||||||
|
u16 mask, u16 set)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
|
||||||
|
mutex_lock(&bus->mdio_lock);
|
||||||
|
err = __mdiobus_modify_changed(bus, addr, regnum, mask, set);
|
||||||
|
mutex_unlock(&bus->mdio_lock);
|
||||||
|
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(mdiobus_modify_changed);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mdio_bus_match - determine if given MDIO driver supports the given
|
* mdio_bus_match - determine if given MDIO driver supports the given
|
||||||
* MDIO device
|
* MDIO device
|
||||||
|
|||||||
@@ -349,6 +349,8 @@ int mdiobus_write(struct mii_bus *bus, int addr, u32 regnum, u16 val);
|
|||||||
int mdiobus_write_nested(struct mii_bus *bus, int addr, u32 regnum, u16 val);
|
int mdiobus_write_nested(struct mii_bus *bus, int addr, u32 regnum, u16 val);
|
||||||
int mdiobus_modify(struct mii_bus *bus, int addr, u32 regnum, u16 mask,
|
int mdiobus_modify(struct mii_bus *bus, int addr, u32 regnum, u16 mask,
|
||||||
u16 set);
|
u16 set);
|
||||||
|
int mdiobus_modify_changed(struct mii_bus *bus, int addr, u32 regnum,
|
||||||
|
u16 mask, u16 set);
|
||||||
|
|
||||||
static inline u32 mdiobus_c45_addr(int devad, u16 regnum)
|
static inline u32 mdiobus_c45_addr(int devad, u16 regnum)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user