net: phy: at803x: disable vddio regulator
authorMichael Walle <michael@walle.cc>
Thu, 30 Jan 2020 17:54:02 +0000 (18:54 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 31 Jan 2020 15:54:48 +0000 (07:54 -0800)
The probe() might enable a VDDIO regulator, which needs to be disabled
again before calling regulator_put(). Add a remove() function.

Fixes: 2f664823a470 ("net: phy: at803x: add device tree binding")
Signed-off-by: Michael Walle <michael@walle.cc>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/at803x.c

index aee62610bade557525f13241aa6bd38fb812eeec..481cf48c9b9e463feb0f4efd17f05c9d74bbef43 100644 (file)
@@ -489,6 +489,14 @@ static int at803x_probe(struct phy_device *phydev)
        return at803x_parse_dt(phydev);
 }
 
+static void at803x_remove(struct phy_device *phydev)
+{
+       struct at803x_priv *priv = phydev->priv;
+
+       if (priv->vddio)
+               regulator_disable(priv->vddio);
+}
+
 static int at803x_clk_out_config(struct phy_device *phydev)
 {
        struct at803x_priv *priv = phydev->priv;
@@ -711,6 +719,7 @@ static struct phy_driver at803x_driver[] = {
        .name                   = "Qualcomm Atheros AR8035",
        .phy_id_mask            = AT803X_PHY_ID_MASK,
        .probe                  = at803x_probe,
+       .remove                 = at803x_remove,
        .config_init            = at803x_config_init,
        .set_wol                = at803x_set_wol,
        .get_wol                = at803x_get_wol,
@@ -726,6 +735,7 @@ static struct phy_driver at803x_driver[] = {
        .name                   = "Qualcomm Atheros AR8030",
        .phy_id_mask            = AT803X_PHY_ID_MASK,
        .probe                  = at803x_probe,
+       .remove                 = at803x_remove,
        .config_init            = at803x_config_init,
        .link_change_notify     = at803x_link_change_notify,
        .set_wol                = at803x_set_wol,
@@ -741,6 +751,7 @@ static struct phy_driver at803x_driver[] = {
        .name                   = "Qualcomm Atheros AR8031/AR8033",
        .phy_id_mask            = AT803X_PHY_ID_MASK,
        .probe                  = at803x_probe,
+       .remove                 = at803x_remove,
        .config_init            = at803x_config_init,
        .set_wol                = at803x_set_wol,
        .get_wol                = at803x_get_wol,