usb: typec: qcom-pmic: fix pdphy start() error handling
authorJohan Hovold <johan+linaro@kernel.org>
Thu, 18 Apr 2024 14:57:30 +0000 (16:57 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 23 Apr 2024 23:28:22 +0000 (16:28 -0700)
Move disabling of the vdd-pdphy supply to the start() function which
enabled it for symmetry and to make sure that it is disabled as intended
in all error paths of pmic_typec_pdphy_reset() (i.e. not just when
qcom_pmic_typec_pdphy_enable() fails).

Cc: stable+noautosel@kernel.org # Not needed in any stable release, just a minor bugfix
Fixes: a4422ff22142 ("usb: typec: qcom: Add Qualcomm PMIC Type-C driver")
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20240418145730.4605-3-johan+linaro@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c

index 6560f4fc98d5a3444ab33cc2ab29cd83890ac06b..5b7f52b74a40aa70096499e34d6c32a38c08fd48 100644 (file)
@@ -475,10 +475,8 @@ static int qcom_pmic_typec_pdphy_enable(struct pmic_typec_pdphy *pmic_typec_pdph
 
        qcom_pmic_typec_pdphy_reset_off(pmic_typec_pdphy);
 done:
-       if (ret) {
-               regulator_disable(pmic_typec_pdphy->vdd_pdphy);
+       if (ret)
                dev_err(dev, "pdphy_enable fail %d\n", ret);
-       }
 
        return ret;
 }
@@ -524,12 +522,17 @@ static int qcom_pmic_typec_pdphy_start(struct pmic_typec *tcpm,
 
        ret = pmic_typec_pdphy_reset(pmic_typec_pdphy);
        if (ret)
-               return ret;
+               goto err_disable_vdd_pdhy;
 
        for (i = 0; i < pmic_typec_pdphy->nr_irqs; i++)
                enable_irq(pmic_typec_pdphy->irq_data[i].irq);
 
        return 0;
+
+err_disable_vdd_pdhy:
+       regulator_disable(pmic_typec_pdphy->vdd_pdphy);
+
+       return ret;
 }
 
 static void qcom_pmic_typec_pdphy_stop(struct pmic_typec *tcpm)