dwc3-msm: Add support to vote USB FORCE_MEM_CORE_ON

USB FORCE_MEM_CORE_ON is need to set 1 with GCC_USB30_MASTER_CLK to
retain USB controller CSR when system is into CXPC (i.e. using MX
instead of CX). Without this bit set, USB controller CSR is not
retain once coming out of CXPC. Add support to vote this as clock
and tie with USB GDSC functionality.

Change-Id: I25e65a2d06848ef84ec5fd2041db8c6a8d9a7b4e
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
This commit is contained in:
Mayank Rana 2020-06-03 12:26:10 -07:00
commit f1984dceeb

View file

@ -399,6 +399,7 @@ struct dwc3_msm {
struct list_head req_complete_list;
struct clk *xo_clk;
struct clk *core_clk;
struct clk *core_csr_clk;
long core_clk_rate;
long core_clk_rate_hs;
struct clk *iface_clk;
@ -2178,7 +2179,15 @@ static int dwc3_msm_config_gdsc(struct dwc3_msm *mdwc, int on)
dev_err(mdwc->dev, "unable to enable usb3 gdsc\n");
return ret;
}
ret = clk_prepare_enable(mdwc->core_csr_clk);
if (ret) {
regulator_disable(mdwc->dwc3_gdsc);
dev_err(mdwc->dev, "unable to enable core_csr_clks\n");
return ret;
}
} else {
clk_disable_unprepare(mdwc->core_csr_clk);
ret = regulator_disable(mdwc->dwc3_gdsc);
if (ret) {
dev_err(mdwc->dev, "unable to disable usb3 gdsc\n");
@ -3435,6 +3444,10 @@ static int dwc3_msm_get_clk_gdsc(struct dwc3_msm *mdwc)
return ret;
}
mdwc->core_csr_clk = devm_clk_get(mdwc->dev, "core_csr_clk");
if (IS_ERR(mdwc->core_csr_clk))
mdwc->core_csr_clk = NULL;
mdwc->core_reset = devm_reset_control_get(mdwc->dev, "core_reset");
if (IS_ERR(mdwc->core_reset)) {
dev_err(mdwc->dev, "failed to get core_reset\n");