
On Wed, Apr 27, 2022 at 1:42 PM Marek Behún kabel@kernel.org wrote:
From: Marek Behún marek.behun@nic.cz
Add helper to resolve PHY node from it's ofnode via DM MDIO subsystem.
Signed-off-by: Marek Behún marek.behun@nic.cz
include/miiphy.h | 9 +++++++++ net/mdio-uclass.c | 22 ++++++++++++++++++++++ 2 files changed, 31 insertions(+)
diff --git a/include/miiphy.h b/include/miiphy.h index 110921f20d..c66a1845b5 100644 --- a/include/miiphy.h +++ b/include/miiphy.h @@ -188,6 +188,15 @@ int dm_mdio_write(struct udevice *mdio_dev, int addr, int devad, int reg, u16 va */ int dm_mdio_reset(struct udevice *mdio_dev);
+/**
- dm_phy_find_by_ofnode - Find PHY device by ofnode
- @phynode: PHY's ofnode
- Return: pointer to phy_device, or NULL on error
- */
+struct phy_device *dm_phy_find_by_ofnode(ofnode phynode);
/**
- dm_mdio_phy_connect - Wrapper over phy_connect for DM MDIO
diff --git a/net/mdio-uclass.c b/net/mdio-uclass.c index 7593618d9a..4401492ca0 100644 --- a/net/mdio-uclass.c +++ b/net/mdio-uclass.c @@ -129,6 +129,28 @@ static int dm_mdio_pre_remove(struct udevice *dev) return 0; }
+struct phy_device *dm_phy_find_by_ofnode(ofnode phynode) +{
struct mdio_perdev_priv *pdata;
struct udevice *mdiodev;
u32 phy_addr;
if (ofnode_read_u32(phynode, "reg", &phy_addr))
return NULL;
if (uclass_get_device_by_ofnode(UCLASS_MDIO,
ofnode_get_parent(phynode),
&mdiodev))
return NULL;
if (device_probe(mdiodev))
return NULL;
pdata = dev_get_uclass_priv(mdiodev);
return phy_find_by_mask(pdata->mii_bus, BIT(phy_addr));
+}
struct phy_device *dm_mdio_phy_connect(struct udevice *mdiodev, int phyaddr, struct udevice *ethdev, phy_interface_t interface) -- 2.35.1
Reviewed-by: Ramon Fried rfried.dev@gmail.com