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 --- 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