Message ID | 20230530225131.949721-9-marek.vasut+renesas@mailbox.org |
---|---|
State | Accepted |
Commit | 68a4d15061097ef4938b8e4f93af15286aac81ec |
Delegated to: | Ramon Fried |
Headers | show |
Series | [01/14] net: eth-phy: staticize eth_phy_reset() | expand |
On Wed, May 31, 2023 at 1:51 AM Marek Vasut <marek.vasut+renesas@mailbox.org> wrote: > > 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> > --- > Cc: Geert Uytterhoeven <geert+renesas@glider.be> > Cc: Joe Hershberger <joe.hershberger@ni.com> > Cc: Michal Simek <michal.simek@amd.com> > Cc: Nishanth Menon <nm@ti.com> > Cc: Ramon Fried <rfried.dev@gmail.com> > --- > drivers/net/phy/ethernet_id.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/drivers/net/phy/ethernet_id.c b/drivers/net/phy/ethernet_id.c > index a715e83db98..877a51c3d00 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; > } > -- > 2.39.2 > Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
diff --git a/drivers/net/phy/ethernet_id.c b/drivers/net/phy/ethernet_id.c index a715e83db98..877a51c3d00 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; }
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> --- Cc: Geert Uytterhoeven <geert+renesas@glider.be> Cc: Joe Hershberger <joe.hershberger@ni.com> Cc: Michal Simek <michal.simek@amd.com> Cc: Nishanth Menon <nm@ti.com> Cc: Ramon Fried <rfried.dev@gmail.com> --- drivers/net/phy/ethernet_id.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)