|
@@ -1315,16 +1315,19 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
|
|
|
*/
|
|
|
if ((host->flags & SDHCI_NEEDS_RETUNING) &&
|
|
|
!(present_state & (SDHCI_DOING_WRITE | SDHCI_DOING_READ))) {
|
|
|
- /* eMMC uses cmd21 while sd and sdio use cmd19 */
|
|
|
- tuning_opcode = mmc->card->type == MMC_TYPE_MMC ?
|
|
|
- MMC_SEND_TUNING_BLOCK_HS200 :
|
|
|
- MMC_SEND_TUNING_BLOCK;
|
|
|
- spin_unlock_irqrestore(&host->lock, flags);
|
|
|
- sdhci_execute_tuning(mmc, tuning_opcode);
|
|
|
- spin_lock_irqsave(&host->lock, flags);
|
|
|
-
|
|
|
- /* Restore original mmc_request structure */
|
|
|
- host->mrq = mrq;
|
|
|
+ if (mmc->card) {
|
|
|
+ /* eMMC uses cmd21 but sd and sdio use cmd19 */
|
|
|
+ tuning_opcode =
|
|
|
+ mmc->card->type == MMC_TYPE_MMC ?
|
|
|
+ MMC_SEND_TUNING_BLOCK_HS200 :
|
|
|
+ MMC_SEND_TUNING_BLOCK;
|
|
|
+ spin_unlock_irqrestore(&host->lock, flags);
|
|
|
+ sdhci_execute_tuning(mmc, tuning_opcode);
|
|
|
+ spin_lock_irqsave(&host->lock, flags);
|
|
|
+
|
|
|
+ /* Restore original mmc_request structure */
|
|
|
+ host->mrq = mrq;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (mrq->sbc && !(host->flags & SDHCI_AUTO_CMD23))
|