summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmad Fatoum <a.fatoum@pengutronix.de>2021-08-31 17:32:14 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2021-11-05 10:19:04 +0100
commit9eac57aa0aa2079904c2e6bf2b1f392d977714da (patch)
tree8e063b8f7e52f16ad497971c80c8ff63a710bed6
parent79accc24c71592d579e9b30b5901193a73da5a40 (diff)
downloadbarebox-9eac57aa0aa2079904c2e6bf2b1f392d977714da.tar.gz
barebox-9eac57aa0aa2079904c2e6bf2b1f392d977714da.tar.xz
net: designware: eqos: fix MDIO regression for STM32MP1 boards
The STM32MP1 boards call their mdio subnode mdio0, which is now skipped since ed8c7bdf8592 ("net: designware: eqos: set mdio bus device node"). Fix networking for them by only falling back to the mdio node name when a child node with the correct compatible could not be found. Fixes: ed8c7bdf8592 ("net: designware: eqos: set mdio bus device node") Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Reviewed-by: Rouven Czerwinski <r.czerwinski@pengutronix.de> Link: https://lore.barebox.org/20210831153214.31047-1-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/net/designware_eqos.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/designware_eqos.c b/drivers/net/designware_eqos.c
index f83e5d6d9b..399b5fa9e7 100644
--- a/drivers/net/designware_eqos.c
+++ b/drivers/net/designware_eqos.c
@@ -828,6 +828,7 @@ static void eqos_probe_dt(struct device_d *dev, struct eqos *eqos)
int eqos_probe(struct device_d *dev, const struct eqos_ops *ops, void *priv)
{
+ struct device_node *np = dev->device_node;
struct mii_bus *miibus;
struct resource *iores;
struct eqos *eqos;
@@ -866,7 +867,10 @@ int eqos_probe(struct device_d *dev, const struct eqos_ops *ops, void *priv)
miibus->read = eqos_mdio_read;
miibus->write = eqos_mdio_write;
miibus->priv = eqos;
- miibus->dev.device_node = of_get_child_by_name(dev->device_node, "mdio");
+
+ miibus->dev.device_node = of_get_compatible_child(np, "snps,dwmac-mdio");
+ if (!miibus->dev.device_node)
+ miibus->dev.device_node = of_get_child_by_name(np, "mdio");
ret = eqos_init(dev, eqos);
if (ret)