[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210215070218.1188903-1-nathan@nathanrossi.com>
Date: Mon, 15 Feb 2021 07:02:18 +0000
From: Nathan Rossi <nathan@...hanrossi.com>
To: netdev@...r.kernel.org
Cc: Nathan Rossi <nathan@...hanrossi.com>,
Nathan Rossi <nathan.rossi@...i.com>,
Andrew Lunn <andrew@...n.ch>,
Heiner Kallweit <hkallweit1@...il.com>,
"David S. Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>
Subject: [PATCH] of: of_mdio: Handle properties for non-phy mdio devices
From: Nathan Rossi <nathan.rossi@...i.com>
The documentation for MDIO bindings describes the "broken-turn-around",
"reset-assert-us", and "reset-deassert-us" properties such that any MDIO
device can define them. Other MDIO devices may require these properties
in order to correctly function on the MDIO bus.
Enable the parsing and configuration associated with these properties by
moving the associated OF parsing to a common function
of_mdiobus_child_parse and use it to apply these properties for both
PHYs and other MDIO devices.
Signed-off-by: Nathan Rossi <nathan.rossi@...i.com>
---
drivers/net/mdio/of_mdio.c | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/drivers/net/mdio/of_mdio.c b/drivers/net/mdio/of_mdio.c
index 4daf94bb56..c28db49b72 100644
--- a/drivers/net/mdio/of_mdio.c
+++ b/drivers/net/mdio/of_mdio.c
@@ -42,6 +42,18 @@ static int of_get_phy_id(struct device_node *device, u32 *phy_id)
return -EINVAL;
}
+static void of_mdiobus_child_parse(struct mii_bus *mdio, struct mdio_device
+ *mdiodev, struct device_node *node, u32 addr)
+{
+ if (of_property_read_bool(node, "broken-turn-around"))
+ mdio->phy_ignore_ta_mask |= 1 << addr;
+
+ of_property_read_u32(node, "reset-assert-us",
+ &mdiodev->reset_assert_delay);
+ of_property_read_u32(node, "reset-deassert-us",
+ &mdiodev->reset_deassert_delay);
+}
+
static struct mii_timestamper *of_find_mii_timestamper(struct device_node *node)
{
struct of_phandle_args arg;
@@ -76,13 +88,7 @@ int of_mdiobus_phy_device_register(struct mii_bus *mdio, struct phy_device *phy,
phy->irq = mdio->irq[addr];
}
- if (of_property_read_bool(child, "broken-turn-around"))
- mdio->phy_ignore_ta_mask |= 1 << addr;
-
- of_property_read_u32(child, "reset-assert-us",
- &phy->mdio.reset_assert_delay);
- of_property_read_u32(child, "reset-deassert-us",
- &phy->mdio.reset_deassert_delay);
+ of_mdiobus_child_parse(mdio, &phy->mdio, child, addr);
/* Associate the OF node with the device structure so it
* can be looked up later */
@@ -158,6 +164,8 @@ static int of_mdiobus_register_device(struct mii_bus *mdio,
if (IS_ERR(mdiodev))
return PTR_ERR(mdiodev);
+ of_mdiobus_child_parse(mdio, mdiodev, child, addr);
+
/* Associate the OF node with the device structure so it
* can be looked up later.
*/
---
2.30.0
Powered by blists - more mailing lists