Skip to content

Commit e6a4570

Browse files
Russell King (Oracle)davem330
authored andcommitted
net: mdio: add unlocked mdiobus and mdiodev bus accessors
Add the following unlocked accessors to complete the set: __mdiobus_modify() __mdiodev_read() __mdiodev_write() __mdiodev_modify() __mdiodev_modify_changed() which we will need for Marvell DSA PCS conversion. Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 24699cc commit e6a4570

File tree

2 files changed

+48
-2
lines changed

2 files changed

+48
-2
lines changed

drivers/net/phy/mdio_bus.c

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1210,6 +1210,26 @@ int mdiobus_c45_write_nested(struct mii_bus *bus, int addr, int devad,
12101210
}
12111211
EXPORT_SYMBOL(mdiobus_c45_write_nested);
12121212

1213+
/*
1214+
* __mdiobus_modify - Convenience function for modifying a given mdio device
1215+
* register
1216+
* @bus: the mii_bus struct
1217+
* @addr: the phy address
1218+
* @regnum: register number to write
1219+
* @mask: bit mask of bits to clear
1220+
* @set: bit mask of bits to set
1221+
*/
1222+
int __mdiobus_modify(struct mii_bus *bus, int addr, u32 regnum, u16 mask,
1223+
u16 set)
1224+
{
1225+
int err;
1226+
1227+
err = __mdiobus_modify_changed(bus, addr, regnum, mask, set);
1228+
1229+
return err < 0 ? err : 0;
1230+
}
1231+
EXPORT_SYMBOL_GPL(__mdiobus_modify);
1232+
12131233
/**
12141234
* mdiobus_modify - Convenience function for modifying a given mdio device
12151235
* register
@@ -1224,10 +1244,10 @@ int mdiobus_modify(struct mii_bus *bus, int addr, u32 regnum, u16 mask, u16 set)
12241244
int err;
12251245

12261246
mutex_lock(&bus->mdio_lock);
1227-
err = __mdiobus_modify_changed(bus, addr, regnum, mask, set);
1247+
err = __mdiobus_modify(bus, addr, regnum, mask, set);
12281248
mutex_unlock(&bus->mdio_lock);
12291249

1230-
return err < 0 ? err : 0;
1250+
return err;
12311251
}
12321252
EXPORT_SYMBOL_GPL(mdiobus_modify);
12331253

include/linux/mdio.h

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,8 @@ static inline void mii_c73_mod_linkmode(unsigned long *adv, u16 *lpa)
537537

538538
int __mdiobus_read(struct mii_bus *bus, int addr, u32 regnum);
539539
int __mdiobus_write(struct mii_bus *bus, int addr, u32 regnum, u16 val);
540+
int __mdiobus_modify(struct mii_bus *bus, int addr, u32 regnum, u16 mask,
541+
u16 set);
540542
int __mdiobus_modify_changed(struct mii_bus *bus, int addr, u32 regnum,
541543
u16 mask, u16 set);
542544

@@ -564,6 +566,30 @@ int mdiobus_c45_modify(struct mii_bus *bus, int addr, int devad, u32 regnum,
564566
int mdiobus_c45_modify_changed(struct mii_bus *bus, int addr, int devad,
565567
u32 regnum, u16 mask, u16 set);
566568

569+
static inline int __mdiodev_read(struct mdio_device *mdiodev, u32 regnum)
570+
{
571+
return __mdiobus_read(mdiodev->bus, mdiodev->addr, regnum);
572+
}
573+
574+
static inline int __mdiodev_write(struct mdio_device *mdiodev, u32 regnum,
575+
u16 val)
576+
{
577+
return __mdiobus_write(mdiodev->bus, mdiodev->addr, regnum, val);
578+
}
579+
580+
static inline int __mdiodev_modify(struct mdio_device *mdiodev, u32 regnum,
581+
u16 mask, u16 set)
582+
{
583+
return __mdiobus_modify(mdiodev->bus, mdiodev->addr, regnum, mask, set);
584+
}
585+
586+
static inline int __mdiodev_modify_changed(struct mdio_device *mdiodev,
587+
u32 regnum, u16 mask, u16 set)
588+
{
589+
return __mdiobus_modify_changed(mdiodev->bus, mdiodev->addr, regnum,
590+
mask, set);
591+
}
592+
567593
static inline int mdiodev_read(struct mdio_device *mdiodev, u32 regnum)
568594
{
569595
return mdiobus_read(mdiodev->bus, mdiodev->addr, regnum);

0 commit comments

Comments
 (0)