diff options
author | Marek Vasut <marek.vasut+renesas@mailbox.org> | 2023-05-31 00:51:26 +0200 |
---|---|---|
committer | Marek Vasut <marek.vasut+renesas@mailbox.org> | 2023-06-10 13:34:05 +0200 |
commit | 68a4d15061097ef4938b8e4f93af15286aac81ec (patch) | |
tree | 5f5aa688ca367107f3481b13a4809cd7b82d8cea | |
parent | 495fc04b6d24f3d4cb1661c85e2da1a7fa35ac92 (diff) | |
download | u-boot-68a4d15061097ef4938b8e4f93af15286aac81ec.zip u-boot-68a4d15061097ef4938b8e4f93af15286aac81ec.tar.gz u-boot-68a4d15061097ef4938b8e4f93af15286aac81ec.tar.bz2 |
net: phy: Bind ETH_PHY uclass driver to each new PHY
In case a new PHY is created and DM_ETH_PHY is enabled, bind a
generic PHY driver from ETH_PHY uclass to the PHY to have a
matching DM representation of that PHY.
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
-rw-r--r-- | drivers/net/phy/ethernet_id.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/net/phy/ethernet_id.c b/drivers/net/phy/ethernet_id.c index a715e83..877a51c 100644 --- a/drivers/net/phy/ethernet_id.c +++ b/drivers/net/phy/ethernet_id.c @@ -7,6 +7,8 @@ #include <common.h> #include <dm/device_compat.h> +#include <dm/device-internal.h> +#include <dm/lists.h> #include <phy.h> #include <linux/delay.h> #include <asm/gpio.h> @@ -17,6 +19,8 @@ struct phy_device *phy_connect_phy_id(struct mii_dev *bus, struct udevice *dev, struct phy_device *phydev; struct ofnode_phandle_args phandle_args; struct gpio_desc gpio; + const char *node_name; + struct udevice *pdev; ofnode node; u32 id, assert, deassert; u16 vendor, device; @@ -72,5 +76,18 @@ struct phy_device *phy_connect_phy_id(struct mii_dev *bus, struct udevice *dev, if (phydev) phydev->node = node; + if (IS_ENABLED(CONFIG_DM_ETH_PHY) && ofnode_valid(node)) { + node_name = ofnode_get_name(node); + ret = device_bind_driver_to_node(dev, "eth_phy_generic_drv", + node_name, node, + &pdev); + if (ret) + return NULL; + + ret = device_probe(pdev); + if (ret) + return NULL; + } + return phydev; } |