mmc: host: msm: Don't check for core-dll lock during hs400es dll init

When initializing DLL in HS400 enhanced strobe-mode, no need to wait
for core dll lock. So skip this wait-on-lock step for hs400es in dll
init sequence.

Change-Id: I8cda0244cb5a397824c613a3c667470cd23e7288
Signed-off-by: Veerabhadrarao Badiganti <vbadigan@codeaurora.org>
This commit is contained in:
Veerabhadrarao Badiganti 2018-06-07 15:58:45 +05:30
parent 07c1b26257
commit 8c2f6269d1

View file

@ -801,19 +801,23 @@ static int msm_init_cm_dll(struct sdhci_host *host)
| CORE_CK_OUT_EN), host->ioaddr + | CORE_CK_OUT_EN), host->ioaddr +
msm_host_offset->CORE_DLL_CONFIG); msm_host_offset->CORE_DLL_CONFIG);
wait_cnt = 50; /* For hs400es mode, no need to wait for core dll lock */
/* Wait until DLL_LOCK bit of DLL_STATUS register becomes '1' */ if (!(msm_host->enhanced_strobe &&
while (!(readl_relaxed(host->ioaddr + mmc_card_strobe(msm_host->mmc->card))) {
msm_host_offset->CORE_DLL_STATUS) & CORE_DLL_LOCK)) { wait_cnt = 50;
/* max. wait for 50us sec for LOCK bit to be set */ /* Wait until DLL_LOCK bit of DLL_STATUS register becomes '1' */
if (--wait_cnt == 0) { while (!(readl_relaxed(host->ioaddr +
pr_err("%s: %s: DLL failed to LOCK\n", msm_host_offset->CORE_DLL_STATUS) & CORE_DLL_LOCK)) {
mmc_hostname(mmc), __func__); /* max. wait for 50us sec for LOCK bit to be set */
rc = -ETIMEDOUT; if (--wait_cnt == 0) {
goto out; pr_err("%s: %s: DLL failed to LOCK\n",
mmc_hostname(mmc), __func__);
rc = -ETIMEDOUT;
goto out;
}
/* wait for 1us before polling again */
udelay(1);
} }
/* wait for 1us before polling again */
udelay(1);
} }
out: out:
@ -3166,7 +3170,10 @@ static void sdhci_msm_set_clock(struct sdhci_host *host, unsigned int clock)
| CORE_HC_SELECT_IN_EN), host->ioaddr + | CORE_HC_SELECT_IN_EN), host->ioaddr +
msm_host_offset->CORE_VENDOR_SPEC); msm_host_offset->CORE_VENDOR_SPEC);
} }
if (!host->mmc->ios.old_rate && !msm_host->use_cdclp533) { /* No need to check for DLL lock for HS400es mode */
if (!host->mmc->ios.old_rate && !msm_host->use_cdclp533 &&
!((card && mmc_card_strobe(card) &&
msm_host->enhanced_strobe))) {
/* /*
* Poll on DLL_LOCK and DDR_DLL_LOCK bits in * Poll on DLL_LOCK and DDR_DLL_LOCK bits in
* CORE_DLL_STATUS to be set. This should get set * CORE_DLL_STATUS to be set. This should get set