mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-09-21 03:43:03 +00:00
Merge "dwc3-msm: Turn on 1.8V LDO before turning on 3.3V LDO"
This commit is contained in:
commit
f62f95b715
|
@ -17,6 +17,8 @@ Required properties :
|
||||||
'dwc3' sub node for "DWC3-USB3 Core device".
|
'dwc3' sub node for "DWC3-USB3 Core device".
|
||||||
"vdda33" : 3.3V analog voltage supply is applied to remove Dp & Dm pull
|
"vdda33" : 3.3V analog voltage supply is applied to remove Dp & Dm pull
|
||||||
downs for proper USB charger detection by charger driver.
|
downs for proper USB charger detection by charger driver.
|
||||||
|
"vdda18" : 1.8V analog voltage supply always required to be turned on
|
||||||
|
anytime the 3.3V supply is on.
|
||||||
|
|
||||||
Optional properties :
|
Optional properties :
|
||||||
- Refer to "Documentation/devicetree/bindings/arm/msm/msm_bus.txt" for
|
- Refer to "Documentation/devicetree/bindings/arm/msm/msm_bus.txt" for
|
||||||
|
|
|
@ -4377,6 +4377,7 @@
|
||||||
|
|
||||||
USB3_GDSC-supply = <&gdsc_usb30>;
|
USB3_GDSC-supply = <&gdsc_usb30>;
|
||||||
vdda33-supply = <&pma8084_l24>;
|
vdda33-supply = <&pma8084_l24>;
|
||||||
|
vdda18-supply = <&pma8084_l6>;
|
||||||
qcom,dwc-usb3-msm-tx-fifo-size = <29696>;
|
qcom,dwc-usb3-msm-tx-fifo-size = <29696>;
|
||||||
qcom,dwc-usb3-msm-qdss-tx-fifo-size = <8192>;
|
qcom,dwc-usb3-msm-qdss-tx-fifo-size = <8192>;
|
||||||
qcom,misc-ref = <&pma8084_misc>;
|
qcom,misc-ref = <&pma8084_misc>;
|
||||||
|
|
|
@ -568,6 +568,7 @@
|
||||||
|
|
||||||
USB3_GDSC-supply = <&gdsc_usb30>;
|
USB3_GDSC-supply = <&gdsc_usb30>;
|
||||||
vdda33-supply = <&pmd9635_l10>;
|
vdda33-supply = <&pmd9635_l10>;
|
||||||
|
vdda18-supply = <&pmd9635_l8>;
|
||||||
qcom,usb-dbm = <&dbm_1p5>;
|
qcom,usb-dbm = <&dbm_1p5>;
|
||||||
|
|
||||||
qcom,msm-bus,name = "usb3";
|
qcom,msm-bus,name = "usb3";
|
||||||
|
|
|
@ -880,6 +880,7 @@
|
||||||
"pmic_id_irq";
|
"pmic_id_irq";
|
||||||
USB3_GDSC-supply = <&gdsc_usb30>;
|
USB3_GDSC-supply = <&gdsc_usb30>;
|
||||||
vdda33-supply = <&pmd9635_l10>;
|
vdda33-supply = <&pmd9635_l10>;
|
||||||
|
vdda18-supply = <&pmd9635_l8>;
|
||||||
qcom,usb-dbm = <&dbm_1p5>;
|
qcom,usb-dbm = <&dbm_1p5>;
|
||||||
|
|
||||||
qcom,msm-bus,name = "usb3";
|
qcom,msm-bus,name = "usb3";
|
||||||
|
|
|
@ -1575,6 +1575,7 @@
|
||||||
|
|
||||||
vbus_dwc3-supply = <&pm8941_mvs1>;
|
vbus_dwc3-supply = <&pm8941_mvs1>;
|
||||||
vdda33-supply = <&pm8941_l24>;
|
vdda33-supply = <&pm8941_l24>;
|
||||||
|
vdda18-supply = <&pm8941_l6>;
|
||||||
qcom,misc-ref = <&pm8941_misc>;
|
qcom,misc-ref = <&pm8941_misc>;
|
||||||
dwc_usb3-adc_tm = <&pm8941_adc_tm>;
|
dwc_usb3-adc_tm = <&pm8941_adc_tm>;
|
||||||
qcom,dwc-usb3-msm-tx-fifo-size = <29696>;
|
qcom,dwc-usb3-msm-tx-fifo-size = <29696>;
|
||||||
|
|
|
@ -352,4 +352,5 @@
|
||||||
|
|
||||||
&usb3 {
|
&usb3 {
|
||||||
vdda33-supply = <&pm8994_l24>;
|
vdda33-supply = <&pm8994_l24>;
|
||||||
|
vdda18-supply = <&pm8994_l6>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -235,4 +235,5 @@
|
||||||
|
|
||||||
&usb3 {
|
&usb3 {
|
||||||
vdda33-supply = <&pma8084_l24>;
|
vdda33-supply = <&pma8084_l24>;
|
||||||
|
vdda18-supply = <&pma8084_l6>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -2693,6 +2693,7 @@
|
||||||
|
|
||||||
USB3_GDSC-supply = <&gdsc_usb30>;
|
USB3_GDSC-supply = <&gdsc_usb30>;
|
||||||
vdda33-supply = <&pm8994_l24>;
|
vdda33-supply = <&pm8994_l24>;
|
||||||
|
vdda18-supply = <&pm8994_l6>;
|
||||||
vbus_dwc3-supply = <&smbcharger_charger_otg>;
|
vbus_dwc3-supply = <&smbcharger_charger_otg>;
|
||||||
qcom,dwc-usb3-msm-tx-fifo-size = <29696>;
|
qcom,dwc-usb3-msm-tx-fifo-size = <29696>;
|
||||||
qcom,dwc-usb3-msm-qdss-tx-fifo-size = <8192>;
|
qcom,dwc-usb3-msm-qdss-tx-fifo-size = <8192>;
|
||||||
|
|
|
@ -1522,6 +1522,7 @@
|
||||||
|
|
||||||
USB3_GDSC-supply = <&gdsc_usb30>;
|
USB3_GDSC-supply = <&gdsc_usb30>;
|
||||||
vdda33-supply = <&pm8994_l24>;
|
vdda33-supply = <&pm8994_l24>;
|
||||||
|
vdda18-supply = <&pm8994_l6>;
|
||||||
vbus_dwc3-supply = <&smbcharger_charger_otg>;
|
vbus_dwc3-supply = <&smbcharger_charger_otg>;
|
||||||
qcom,dwc-usb3-msm-tx-fifo-size = <29696>;
|
qcom,dwc-usb3-msm-tx-fifo-size = <29696>;
|
||||||
qcom,dwc-usb3-msm-qdss-tx-fifo-size = <8192>;
|
qcom,dwc-usb3-msm-qdss-tx-fifo-size = <8192>;
|
||||||
|
|
|
@ -141,6 +141,9 @@ MODULE_PARM_DESC(dcp_max_current, "max current drawn for DCP charger");
|
||||||
#define DWC3_3P3_VOL_MIN 3075000 /* uV */
|
#define DWC3_3P3_VOL_MIN 3075000 /* uV */
|
||||||
#define DWC3_3P3_VOL_MAX 3200000 /* uV */
|
#define DWC3_3P3_VOL_MAX 3200000 /* uV */
|
||||||
#define DWC3_3P3_HPM_LOAD 30000 /* uA */
|
#define DWC3_3P3_HPM_LOAD 30000 /* uA */
|
||||||
|
#define DWC3_1P8_VOL_MIN 1800000 /* uV */
|
||||||
|
#define DWC3_1P8_VOL_MAX 1800000 /* uV */
|
||||||
|
#define DWC3_1P8_HPM_LOAD 30000 /* uA */
|
||||||
|
|
||||||
/* TZ SCM parameters */
|
/* TZ SCM parameters */
|
||||||
#define DWC3_MSM_RESTORE_SCM_CFG_CMD 0x2
|
#define DWC3_MSM_RESTORE_SCM_CFG_CMD 0x2
|
||||||
|
@ -181,6 +184,7 @@ struct dwc3_msm {
|
||||||
/* VBUS regulator if no OTG and running in host only mode */
|
/* VBUS regulator if no OTG and running in host only mode */
|
||||||
struct regulator *vbus_otg;
|
struct regulator *vbus_otg;
|
||||||
struct regulator *vdda33;
|
struct regulator *vdda33;
|
||||||
|
struct regulator *vdda18;
|
||||||
struct dwc3_ext_xceiv ext_xceiv;
|
struct dwc3_ext_xceiv ext_xceiv;
|
||||||
bool resume_pending;
|
bool resume_pending;
|
||||||
atomic_t pm_suspended;
|
atomic_t pm_suspended;
|
||||||
|
@ -2159,10 +2163,30 @@ static int dwc3_msm_remove_pulldown(struct dwc3_msm *mdwc, bool rm_pulldown)
|
||||||
if (!rm_pulldown)
|
if (!rm_pulldown)
|
||||||
goto disable_vdda33;
|
goto disable_vdda33;
|
||||||
|
|
||||||
|
ret = regulator_set_optimum_mode(mdwc->vdda18, DWC3_1P8_HPM_LOAD);
|
||||||
|
if (ret < 0) {
|
||||||
|
dev_err(mdwc->dev, "Unable to set HPM of vdda18:%d\n", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = regulator_set_voltage(mdwc->vdda18, DWC3_1P8_VOL_MIN,
|
||||||
|
DWC3_1P8_VOL_MAX);
|
||||||
|
if (ret) {
|
||||||
|
dev_err(mdwc->dev,
|
||||||
|
"Unable to set voltage for vdda18:%d\n", ret);
|
||||||
|
goto put_vdda18_lpm;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = regulator_enable(mdwc->vdda18);
|
||||||
|
if (ret) {
|
||||||
|
dev_err(mdwc->dev, "Unable to enable vdda18:%d\n", ret);
|
||||||
|
goto unset_vdda18;
|
||||||
|
}
|
||||||
|
|
||||||
ret = regulator_set_optimum_mode(mdwc->vdda33, DWC3_3P3_HPM_LOAD);
|
ret = regulator_set_optimum_mode(mdwc->vdda33, DWC3_3P3_HPM_LOAD);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(mdwc->dev, "Unable to set HPM of vdda33:%d\n", ret);
|
dev_err(mdwc->dev, "Unable to set HPM of vdda33:%d\n", ret);
|
||||||
return ret;
|
goto disable_vdda18;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = regulator_set_voltage(mdwc->vdda33, DWC3_3P3_VOL_MIN,
|
ret = regulator_set_voltage(mdwc->vdda33, DWC3_3P3_VOL_MIN,
|
||||||
|
@ -2197,6 +2221,22 @@ put_vdda33_lpm:
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
dev_err(mdwc->dev, "Unable to set (0) HPM of vdda33\n");
|
dev_err(mdwc->dev, "Unable to set (0) HPM of vdda33\n");
|
||||||
|
|
||||||
|
disable_vdda18:
|
||||||
|
ret = regulator_disable(mdwc->vdda18);
|
||||||
|
if (ret)
|
||||||
|
dev_err(mdwc->dev, "Unable to disable vdda18:%d\n", ret);
|
||||||
|
|
||||||
|
unset_vdda18:
|
||||||
|
ret = regulator_set_voltage(mdwc->vdda18, 0, DWC3_1P8_VOL_MAX);
|
||||||
|
if (ret)
|
||||||
|
dev_err(mdwc->dev,
|
||||||
|
"Unable to set (0) voltage for vdda18:%d\n", ret);
|
||||||
|
|
||||||
|
put_vdda18_lpm:
|
||||||
|
ret = regulator_set_optimum_mode(mdwc->vdda18, 0);
|
||||||
|
if (ret < 0)
|
||||||
|
dev_err(mdwc->dev, "Unable to set LPM of vdda18\n");
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2869,6 +2909,12 @@ static int dwc3_msm_probe(struct platform_device *pdev)
|
||||||
return PTR_ERR(mdwc->vdda33);
|
return PTR_ERR(mdwc->vdda33);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mdwc->vdda18 = devm_regulator_get(dev, "vdda18");
|
||||||
|
if (IS_ERR(mdwc->vdda18)) {
|
||||||
|
dev_err(&pdev->dev, "unable to get vdda18 supply\n");
|
||||||
|
return PTR_ERR(mdwc->vdda18);
|
||||||
|
}
|
||||||
|
|
||||||
ret = dwc3_msm_config_gdsc(mdwc, 1);
|
ret = dwc3_msm_config_gdsc(mdwc, 1);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(&pdev->dev, "unable to configure usb3 gdsc\n");
|
dev_err(&pdev->dev, "unable to configure usb3 gdsc\n");
|
||||||
|
|
Loading…
Reference in a new issue