mmc: core: Enable HS mode first in the device and then in the host
While switching to HS mode, high speed mode timing should be selected in the device before changing the clock frequency in the host. But present driver first updates the frequency in host and then selects HS mode in device while selecting HS400 mode. This is a spec violation. Updated the sequence to comply with spec. Change-Id: I5b2c1f724d820daf9c0bca8651cf85bd0ff67655 Signed-off-by: Veerabhadrarao Badiganti <vbadigan@codeaurora.org>
This commit is contained in:
parent
8bb66a7e41
commit
b1d2009d04
1 changed files with 4 additions and 4 deletions
|
@ -1192,10 +1192,6 @@ static int mmc_select_hs400(struct mmc_card *card)
|
|||
if (host->caps & MMC_CAP_WAIT_WHILE_BUSY)
|
||||
send_status = false;
|
||||
|
||||
/* Reduce frequency to HS frequency */
|
||||
max_dtr = card->ext_csd.hs_max_dtr;
|
||||
mmc_set_clock(host, max_dtr);
|
||||
|
||||
/* Switch card to HS mode */
|
||||
val = EXT_CSD_TIMING_HS;
|
||||
err = __mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
|
||||
|
@ -1211,6 +1207,10 @@ static int mmc_select_hs400(struct mmc_card *card)
|
|||
/* Set host controller to HS timing */
|
||||
mmc_set_timing(card->host, MMC_TIMING_MMC_HS);
|
||||
|
||||
/* Reduce frequency to HS frequency */
|
||||
max_dtr = card->ext_csd.hs_max_dtr;
|
||||
mmc_set_clock(host, max_dtr);
|
||||
|
||||
if (!send_status) {
|
||||
err = mmc_switch_status(card);
|
||||
if (err)
|
||||
|
|
Loading…
Add table
Reference in a new issue