Skip to content

Commit

Permalink
net: phy: Introduce fwnode_mdio_find_device()
Browse files Browse the repository at this point in the history
Define fwnode_mdio_find_device() to get a pointer to the
mdio_device from fwnode passed to the function.

Refactor of_mdio_find_device() to use fwnode_mdio_find_device().

Signed-off-by: Calvin Johnson <calvin.johnson@oss.nxp.com>
Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Acked-by: Grant Likely <grant.likely@arm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Calvin Johnson authored and David S. Miller committed Jun 11, 2021
1 parent e71305a commit 0fb1697
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 10 deletions.
11 changes: 1 addition & 10 deletions drivers/net/mdio/of_mdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -347,16 +347,7 @@ EXPORT_SYMBOL(of_mdiobus_register);
*/
struct mdio_device *of_mdio_find_device(struct device_node *np)
{
struct device *d;

if (!np)
return NULL;

d = bus_find_device_by_of_node(&mdio_bus_type, np);
if (!d)
return NULL;

return to_mdio_device(d);
return fwnode_mdio_find_device(of_fwnode_handle(np));
}
EXPORT_SYMBOL(of_mdio_find_device);

Expand Down
23 changes: 23 additions & 0 deletions drivers/net/phy/phy_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -2875,6 +2875,29 @@ static bool phy_drv_supports_irq(struct phy_driver *phydrv)
return phydrv->config_intr && phydrv->handle_interrupt;
}

/**
* fwnode_mdio_find_device - Given a fwnode, find the mdio_device
* @fwnode: pointer to the mdio_device's fwnode
*
* If successful, returns a pointer to the mdio_device with the embedded
* struct device refcount incremented by one, or NULL on failure.
* The caller should call put_device() on the mdio_device after its use.
*/
struct mdio_device *fwnode_mdio_find_device(struct fwnode_handle *fwnode)
{
struct device *d;

if (!fwnode)
return NULL;

d = bus_find_device_by_fwnode(&mdio_bus_type, fwnode);
if (!d)
return NULL;

return to_mdio_device(d);
}
EXPORT_SYMBOL(fwnode_mdio_find_device);

/**
* phy_probe - probe and init a PHY device
* @dev: device to probe and init
Expand Down
7 changes: 7 additions & 0 deletions include/linux/phy.h
Original file line number Diff line number Diff line change
Expand Up @@ -1377,10 +1377,17 @@ struct phy_device *phy_device_create(struct mii_bus *bus, int addr, u32 phy_id,
bool is_c45,
struct phy_c45_device_ids *c45_ids);
#if IS_ENABLED(CONFIG_PHYLIB)
struct mdio_device *fwnode_mdio_find_device(struct fwnode_handle *fwnode);
struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45);
int phy_device_register(struct phy_device *phy);
void phy_device_free(struct phy_device *phydev);
#else
static inline
struct mdio_device *fwnode_mdio_find_device(struct fwnode_handle *fwnode)
{
return 0;
}

static inline
struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45)
{
Expand Down

0 comments on commit 0fb1697

Please sign in to comment.