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:
Vijayavardhan Vennapusa
2012-06-06 14:14:25 +05:30
committed by Stephen Boyd
parent bdd7f012e9
commit d58272c741
2 changed files with 16 additions and 8 deletions

View File

@@ -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);

View File

@@ -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;