Merge "mmc: sdhci-msm: Set dll to good phase while sending cmd13 in tuning"

This commit is contained in:
Linux Build Service Account 2017-07-17 05:28:27 -07:00 committed by Gerrit - the friendly Code Review server
commit 0179cf4d43

View file

@ -1139,6 +1139,7 @@ int sdhci_msm_execute_tuning(struct sdhci_host *host, u32 opcode)
bool drv_type_changed = false;
struct mmc_card *card = host->mmc->card;
int sts_retry;
u8 last_good_phase = 0;
/*
* Tuning is required for SDR104, HS200 and HS400 cards and
@ -1224,6 +1225,22 @@ retry:
mmc_wait_for_req(mmc, &mrq);
if (card && (cmd.error || data.error)) {
/*
* Set the dll to last known good phase while sending
* status command to ensure that status command won't
* fail due to bad phase.
*/
if (tuned_phase_cnt)
last_good_phase =
tuned_phases[tuned_phase_cnt-1];
else if (msm_host->saved_tuning_phase !=
INVALID_TUNING_PHASE)
last_good_phase = msm_host->saved_tuning_phase;
rc = msm_config_cm_dll_phase(host, last_good_phase);
if (rc)
goto kfree;
sts_cmd.opcode = MMC_SEND_STATUS;
sts_cmd.arg = card->rca << 16;
sts_cmd.flags = MMC_RSP_R1 | MMC_CMD_AC;