Message ID | 20230831-qcom-tcpc-v5-1-5e2661dc6c1d@quicinc.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | [v5] usb: typec: qcom: Update the logic of regulator enable and disable | expand |
On Thu, Aug 31, 2023 at 06:19:45PM +0800, Hui Liu via B4 Relay wrote: > From: Hui Liu <quic_huliu@quicinc.com> > > Removed the call logic of disable and enable regulator > in reset function. Enable the regulator in qcom_pmic_typec_start > function and disable it in qcom_pmic_typec_stop function to > avoid unbalanced regulator disable warnings. > > Fixes: a4422ff22142 ("usb: typec: qcom: Add Qualcomm PMIC Type-C driver") > Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > Acked-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > Tested-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> # rb5 > Signed-off-by: Hui Liu <quic_huliu@quicinc.com> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > --- > Changes in v5: > - Removed Reviewed-by: Guenter Roeck <linux@roeck-us.net> > - Updated V4 history > - Link to v4: https://lore.kernel.org/r/20230830-qcom-tcpc-v4-1-c19b0984879b@quicinc.com > > Changes in v4: > - Rephrased commit text > - Link to v3: https://lore.kernel.org/r/20230828-qcom-tcpc-v3-1-e95b7afa34d9@quicinc.com > > Changes in v3: > - Take Bryan's proposal to remove enable/disable operation in pdphy > enable and pdphy disable function, then enable regulator in pdphy start > function and disable it in pdphy stop function. > - Link to v2: https://lore.kernel.org/r/20230824-qcom-tcpc-v2-1-3dd8c3424564@quicinc.com > > Changes in v2: > - Add Fixes tag > - Link to v1: https://lore.kernel.org/r/20230823-qcom-tcpc-v1-1-fa81a09ca056@quicinc.com > --- > drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c > index bb0b8479d80f..52c81378e36e 100644 > --- a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c > +++ b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c > @@ -381,10 +381,6 @@ static int qcom_pmic_typec_pdphy_enable(struct pmic_typec_pdphy *pmic_typec_pdph > struct device *dev = pmic_typec_pdphy->dev; > int ret; > > - ret = regulator_enable(pmic_typec_pdphy->vdd_pdphy); > - if (ret) > - return ret; > - > /* PD 2.0, DR=TYPEC_DEVICE, PR=TYPEC_SINK */ > ret = regmap_update_bits(pmic_typec_pdphy->regmap, > pmic_typec_pdphy->base + USB_PDPHY_MSG_CONFIG_REG, > @@ -422,8 +418,6 @@ static int qcom_pmic_typec_pdphy_disable(struct pmic_typec_pdphy *pmic_typec_pdp > ret = regmap_write(pmic_typec_pdphy->regmap, > pmic_typec_pdphy->base + USB_PDPHY_EN_CONTROL_REG, 0); > > - regulator_disable(pmic_typec_pdphy->vdd_pdphy); > - > return ret; > } > > @@ -447,6 +441,10 @@ int qcom_pmic_typec_pdphy_start(struct pmic_typec_pdphy *pmic_typec_pdphy, > int i; > int ret; > > + ret = regulator_enable(pmic_typec_pdphy->vdd_pdphy); > + if (ret) > + return ret; > + > pmic_typec_pdphy->tcpm_port = tcpm_port; > > ret = pmic_typec_pdphy_reset(pmic_typec_pdphy); > @@ -467,6 +465,8 @@ void qcom_pmic_typec_pdphy_stop(struct pmic_typec_pdphy *pmic_typec_pdphy) > disable_irq(pmic_typec_pdphy->irq_data[i].irq); > > qcom_pmic_typec_pdphy_reset_on(pmic_typec_pdphy); > + > + regulator_disable(pmic_typec_pdphy->vdd_pdphy); > } > > struct pmic_typec_pdphy *qcom_pmic_typec_pdphy_alloc(struct device *dev) > > --- > base-commit: bbb9e06d2c6435af9c62074ad7048910eeb2e7bc > change-id: 20230822-qcom-tcpc-d41954ac65fa > > Best regards, > -- > Hui Liu <quic_huliu@quicinc.com>
diff --git a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c index bb0b8479d80f..52c81378e36e 100644 --- a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c +++ b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c @@ -381,10 +381,6 @@ static int qcom_pmic_typec_pdphy_enable(struct pmic_typec_pdphy *pmic_typec_pdph struct device *dev = pmic_typec_pdphy->dev; int ret; - ret = regulator_enable(pmic_typec_pdphy->vdd_pdphy); - if (ret) - return ret; - /* PD 2.0, DR=TYPEC_DEVICE, PR=TYPEC_SINK */ ret = regmap_update_bits(pmic_typec_pdphy->regmap, pmic_typec_pdphy->base + USB_PDPHY_MSG_CONFIG_REG, @@ -422,8 +418,6 @@ static int qcom_pmic_typec_pdphy_disable(struct pmic_typec_pdphy *pmic_typec_pdp ret = regmap_write(pmic_typec_pdphy->regmap, pmic_typec_pdphy->base + USB_PDPHY_EN_CONTROL_REG, 0); - regulator_disable(pmic_typec_pdphy->vdd_pdphy); - return ret; } @@ -447,6 +441,10 @@ int qcom_pmic_typec_pdphy_start(struct pmic_typec_pdphy *pmic_typec_pdphy, int i; int ret; + ret = regulator_enable(pmic_typec_pdphy->vdd_pdphy); + if (ret) + return ret; + pmic_typec_pdphy->tcpm_port = tcpm_port; ret = pmic_typec_pdphy_reset(pmic_typec_pdphy); @@ -467,6 +465,8 @@ void qcom_pmic_typec_pdphy_stop(struct pmic_typec_pdphy *pmic_typec_pdphy) disable_irq(pmic_typec_pdphy->irq_data[i].irq); qcom_pmic_typec_pdphy_reset_on(pmic_typec_pdphy); + + regulator_disable(pmic_typec_pdphy->vdd_pdphy); } struct pmic_typec_pdphy *qcom_pmic_typec_pdphy_alloc(struct device *dev)