Commit 0fb16976 authored by Calvin Johnson's avatar Calvin Johnson Committed by David S. Miller

net: phy: Introduce fwnode_mdio_find_device()

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: default avatarCalvin Johnson <calvin.johnson@oss.nxp.com>
Signed-off-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
Acked-by: default avatarGrant Likely <grant.likely@arm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e71305ac
...@@ -347,16 +347,7 @@ EXPORT_SYMBOL(of_mdiobus_register); ...@@ -347,16 +347,7 @@ EXPORT_SYMBOL(of_mdiobus_register);
*/ */
struct mdio_device *of_mdio_find_device(struct device_node *np) struct mdio_device *of_mdio_find_device(struct device_node *np)
{ {
struct device *d; return fwnode_mdio_find_device(of_fwnode_handle(np));
if (!np)
return NULL;
d = bus_find_device_by_of_node(&mdio_bus_type, np);
if (!d)
return NULL;
return to_mdio_device(d);
} }
EXPORT_SYMBOL(of_mdio_find_device); EXPORT_SYMBOL(of_mdio_find_device);
......
...@@ -2875,6 +2875,29 @@ static bool phy_drv_supports_irq(struct phy_driver *phydrv) ...@@ -2875,6 +2875,29 @@ static bool phy_drv_supports_irq(struct phy_driver *phydrv)
return phydrv->config_intr && phydrv->handle_interrupt; 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 * phy_probe - probe and init a PHY device
* @dev: device to probe and init * @dev: device to probe and init
......
...@@ -1377,10 +1377,17 @@ struct phy_device *phy_device_create(struct mii_bus *bus, int addr, u32 phy_id, ...@@ -1377,10 +1377,17 @@ struct phy_device *phy_device_create(struct mii_bus *bus, int addr, u32 phy_id,
bool is_c45, bool is_c45,
struct phy_c45_device_ids *c45_ids); struct phy_c45_device_ids *c45_ids);
#if IS_ENABLED(CONFIG_PHYLIB) #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); struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45);
int phy_device_register(struct phy_device *phy); int phy_device_register(struct phy_device *phy);
void phy_device_free(struct phy_device *phydev); void phy_device_free(struct phy_device *phydev);
#else #else
static inline
struct mdio_device *fwnode_mdio_find_device(struct fwnode_handle *fwnode)
{
return 0;
}
static inline static inline
struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45) struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment