USB: msm_otg: Don't allow TCXO shutdown in host bus suspend
Currently otg driver is voting to allow TCXO shutdown in host bus suspend due to which devices connected in system suspend are not getting detected. Hence don't allow TCXO shutdown in host bus suspend. As long term solution, need HW rework for detecting connecting devices in host mode during system suspend. This is required to route D+ and D- lines to MPM for monitoring interrupt during system suspend. CRs-Fixed: 366111 Change-Id: Ic478a0e327b104eec64b5cfe2bd1f9369f8ef72e Signed-off-by: Vijayavardhan Vennapusa <vvreddy@codeaurora.org>
This commit is contained in:
committed by
Stephen Boyd
parent
bdd7f012e9
commit
d58272c741
@@ -843,10 +843,14 @@ static int msm_otg_suspend(struct msm_otg *motg)
|
|||||||
clk_disable_unprepare(motg->core_clk);
|
clk_disable_unprepare(motg->core_clk);
|
||||||
|
|
||||||
/* usb phy no more require TCXO clock, hence vote for TCXO disable */
|
/* usb phy no more require TCXO clock, hence vote for TCXO disable */
|
||||||
ret = msm_xo_mode_vote(motg->xo_handle, MSM_XO_MODE_OFF);
|
if (!host_bus_suspend) {
|
||||||
if (ret)
|
ret = msm_xo_mode_vote(motg->xo_handle, MSM_XO_MODE_OFF);
|
||||||
dev_err(otg->dev, "%s failed to devote for "
|
if (ret)
|
||||||
"TCXO D0 buffer%d\n", __func__, ret);
|
dev_err(phy->dev, "%s failed to devote for "
|
||||||
|
"TCXO D0 buffer%d\n", __func__, ret);
|
||||||
|
else
|
||||||
|
motg->lpm_flags |= XO_SHUTDOWN;
|
||||||
|
}
|
||||||
|
|
||||||
if (motg->caps & ALLOW_PHY_POWER_COLLAPSE &&
|
if (motg->caps & ALLOW_PHY_POWER_COLLAPSE &&
|
||||||
!host_bus_suspend && !dcp) {
|
!host_bus_suspend && !dcp) {
|
||||||
@@ -891,10 +895,13 @@ static int msm_otg_resume(struct msm_otg *motg)
|
|||||||
wake_lock(&motg->wlock);
|
wake_lock(&motg->wlock);
|
||||||
|
|
||||||
/* Vote for TCXO when waking up the phy */
|
/* Vote for TCXO when waking up the phy */
|
||||||
ret = msm_xo_mode_vote(motg->xo_handle, MSM_XO_MODE_ON);
|
if (motg->lpm_flags & XO_SHUTDOWN) {
|
||||||
if (ret)
|
ret = msm_xo_mode_vote(motg->xo_handle, MSM_XO_MODE_ON);
|
||||||
dev_err(phy->dev, "%s failed to vote for "
|
if (ret)
|
||||||
"TCXO D0 buffer%d\n", __func__, ret);
|
dev_err(phy->dev, "%s failed to vote for "
|
||||||
|
"TCXO D0 buffer%d\n", __func__, ret);
|
||||||
|
motg->lpm_flags &= ~XO_SHUTDOWN;
|
||||||
|
}
|
||||||
|
|
||||||
clk_prepare_enable(motg->core_clk);
|
clk_prepare_enable(motg->core_clk);
|
||||||
|
|
||||||
|
|||||||
@@ -335,6 +335,7 @@ struct msm_otg {
|
|||||||
unsigned long lpm_flags;
|
unsigned long lpm_flags;
|
||||||
#define PHY_PWR_COLLAPSED BIT(0)
|
#define PHY_PWR_COLLAPSED BIT(0)
|
||||||
#define PHY_RETENTIONED BIT(1)
|
#define PHY_RETENTIONED BIT(1)
|
||||||
|
#define XO_SHUTDOWN BIT(2)
|
||||||
int reset_counter;
|
int reset_counter;
|
||||||
unsigned long b_last_se0_sess;
|
unsigned long b_last_se0_sess;
|
||||||
unsigned long tmouts;
|
unsigned long tmouts;
|
||||||
|
|||||||
Reference in New Issue
Block a user