Merge "mmc: sdhci-msm: Set dll to good phase while sending cmd13 in tuning"
This commit is contained in:
commit
0179cf4d43
1 changed files with 17 additions and 0 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue