net: mdio-uclass: add dm_phy_find_by_ofnode() helper
Add helper to resolve PHY node from it's ofnode via DM MDIO subsystem. Signed-off-by: Marek Behún <marek.behun@nic.cz> Reviewed-by: Ramon Fried <rfried.dev@gmail.com> Reviewed-by: Stefan Roese <sr@denx.de>
This commit is contained in:
parent
a2b2542992
commit
00b1bad961
2 changed files with 31 additions and 0 deletions
|
@ -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);
|
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
|
* dm_mdio_phy_connect - Wrapper over phy_connect for DM MDIO
|
||||||
*
|
*
|
||||||
|
|
|
@ -129,6 +129,28 @@ static int dm_mdio_pre_remove(struct udevice *dev)
|
||||||
return 0;
|
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 phy_device *dm_mdio_phy_connect(struct udevice *mdiodev, int phyaddr,
|
||||||
struct udevice *ethdev,
|
struct udevice *ethdev,
|
||||||
phy_interface_t interface)
|
phy_interface_t interface)
|
||||||
|
|
Loading…
Reference in a new issue