mdio_bus: Simplify reset handling and extend to non-DT systems
diff mbox series

Message ID 20200113130529.15372-1-geert+renesas@glider.be
State Accepted
Delegated to: David Miller
Headers show
Series
  • mdio_bus: Simplify reset handling and extend to non-DT systems
Related show

Commit Message

Geert Uytterhoeven Jan. 13, 2020, 1:05 p.m. UTC
Convert mdiobus_register_reset() from open-coded DT-only optional reset
handling to reset_control_get_optional_exclusive().  This not only
simplifies the code, but also adds support for lookup-based resets on
non-DT systems.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
Only tested on systems without PHY resets, with and without
CONFIG_RESET_CONTROLLER=y.

 drivers/net/phy/mdio_bus.c | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

Comments

Andrew Lunn Jan. 13, 2020, 1:28 p.m. UTC | #1
On Mon, Jan 13, 2020 at 02:05:29PM +0100, Geert Uytterhoeven wrote:
> Convert mdiobus_register_reset() from open-coded DT-only optional reset
> handling to reset_control_get_optional_exclusive().  This not only
> simplifies the code, but also adds support for lookup-based resets on
> non-DT systems.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> ---
> Only tested on systems without PHY resets, with and without
> CONFIG_RESET_CONTROLLER=y.

David, please could you test this.

But it Looks O.K. to me.

Reviewed-by: Andrew Lunn <andrew@lunn.ch>

    Andrew
Philipp Zabel Jan. 13, 2020, 2:02 p.m. UTC | #2
On Mon, 2020-01-13 at 14:05 +0100, Geert Uytterhoeven wrote:
> Convert mdiobus_register_reset() from open-coded DT-only optional reset
> handling to reset_control_get_optional_exclusive().  This not only
> simplifies the code, but also adds support for lookup-based resets on
> non-DT systems.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> ---
> Only tested on systems without PHY resets, with and without
> CONFIG_RESET_CONTROLLER=y.
> 
>  drivers/net/phy/mdio_bus.c | 16 +++++-----------
>  1 file changed, 5 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c
> index 229e480179ff1de4..8d753bb07227e561 100644
> --- a/drivers/net/phy/mdio_bus.c
> +++ b/drivers/net/phy/mdio_bus.c
> @@ -59,17 +59,11 @@ static int mdiobus_register_gpiod(struct mdio_device *mdiodev)
>  
>  static int mdiobus_register_reset(struct mdio_device *mdiodev)
>  {
> -	struct reset_control *reset = NULL;
> -
> -	if (mdiodev->dev.of_node)
> -		reset = of_reset_control_get_exclusive(mdiodev->dev.of_node,
> -						       "phy");
> -	if (IS_ERR(reset)) {
> -		if (PTR_ERR(reset) == -ENOENT || PTR_ERR(reset) == -ENOTSUPP)
> -			reset = NULL;
> -		else
> -			return PTR_ERR(reset);
> -	}
> +	struct reset_control *reset;
> +
> +	reset = reset_control_get_optional_exclusive(&mdiodev->dev, "phy");
> +	if (IS_ERR(reset))
> +		return PTR_ERR(reset);

Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>

regards
Philipp
David Miller Jan. 14, 2020, 7:03 p.m. UTC | #3
From: Geert Uytterhoeven <geert+renesas@glider.be>
Date: Mon, 13 Jan 2020 14:05:29 +0100

> Convert mdiobus_register_reset() from open-coded DT-only optional reset
> handling to reset_control_get_optional_exclusive().  This not only
> simplifies the code, but also adds support for lookup-based resets on
> non-DT systems.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>

Applied to net-next, thanks.

Patch
diff mbox series

diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c
index 229e480179ff1de4..8d753bb07227e561 100644
--- a/drivers/net/phy/mdio_bus.c
+++ b/drivers/net/phy/mdio_bus.c
@@ -59,17 +59,11 @@  static int mdiobus_register_gpiod(struct mdio_device *mdiodev)
 
 static int mdiobus_register_reset(struct mdio_device *mdiodev)
 {
-	struct reset_control *reset = NULL;
-
-	if (mdiodev->dev.of_node)
-		reset = of_reset_control_get_exclusive(mdiodev->dev.of_node,
-						       "phy");
-	if (IS_ERR(reset)) {
-		if (PTR_ERR(reset) == -ENOENT || PTR_ERR(reset) == -ENOTSUPP)
-			reset = NULL;
-		else
-			return PTR_ERR(reset);
-	}
+	struct reset_control *reset;
+
+	reset = reset_control_get_optional_exclusive(&mdiodev->dev, "phy");
+	if (IS_ERR(reset))
+		return PTR_ERR(reset);
 
 	mdiodev->reset_ctrl = reset;