[PATCH net-next v2 3/3] net: mdio: improve reset handling in mdio_device.c

From: Buday Csaba
Date: Mon Nov 17 2025 - 04:44:16 EST


Change fwnode_property_read_u32() in mdio_device_register_reset()
to device_property_read_u32(), which is more appropriate here.

Make mdio_device_unregister_reset() truly reverse
mdio_device_register_reset() by setting the internal fields to
their default values.

Signed-off-by: Buday Csaba <buday.csaba@xxxxxxxxx>
---
V1 -> V2: rebase, leak fix removed, since it is already in base
---
drivers/net/phy/mdio_device.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/net/phy/mdio_device.c b/drivers/net/phy/mdio_device.c
index 749cf8cdb..2de401961 100644
--- a/drivers/net/phy/mdio_device.c
+++ b/drivers/net/phy/mdio_device.c
@@ -148,9 +148,9 @@ int mdio_device_register_reset(struct mdio_device *mdiodev)
mdiodev->reset_ctrl = reset;

/* Read optional firmware properties */
- fwnode_property_read_u32(dev_fwnode(&mdiodev->dev), "reset-assert-us",
+ device_property_read_u32(&mdiodev->dev, "reset-assert-us",
&mdiodev->reset_assert_delay);
- fwnode_property_read_u32(dev_fwnode(&mdiodev->dev), "reset-deassert-us",
+ device_property_read_u32(&mdiodev->dev, "reset-deassert-us",
&mdiodev->reset_deassert_delay);

return 0;
@@ -164,7 +164,11 @@ int mdio_device_register_reset(struct mdio_device *mdiodev)
void mdio_device_unregister_reset(struct mdio_device *mdiodev)
{
gpiod_put(mdiodev->reset_gpio);
+ mdiodev->reset_gpio = NULL;
reset_control_put(mdiodev->reset_ctrl);
+ mdiodev->reset_ctrl = NULL;
+ mdiodev->reset_assert_delay = 0;
+ mdiodev->reset_deassert_delay = 0;
}

void mdio_device_reset(struct mdio_device *mdiodev, int value)
--
2.39.5