From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shawn Lin Subject: [PATCH 4/5] mmc: sdhci: Don't try to switch to unsupported voltage Date: Wed, 21 Sep 2016 09:43:52 +0800 Message-ID: <1474422233-29355-5-git-send-email-shawn.lin@rock-chips.com> References: <1474422233-29355-1-git-send-email-shawn.lin@rock-chips.com> Return-path: In-Reply-To: <1474422233-29355-1-git-send-email-shawn.lin@rock-chips.com> Sender: linux-kernel-owner@vger.kernel.org To: Ulf Hansson Cc: Adrian Hunter , Jaehoon Chung , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Ziyuan Xu , Shawn Lin List-Id: linux-rockchip.vger.kernel.org From: Ziyuan Xu Sdhci shouldn't switch to the unsupported voltage if claiming that it can not support the requested voltage. Let's fix it. Signed-off-by: Ziyuan Xu Signed-off-by: Shawn Lin --- drivers/mmc/host/sdhci.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 4805566..b1f1edd 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -1845,7 +1845,8 @@ static int sdhci_start_signal_voltage_switch(struct mmc_host *mmc, switch (ios->signal_voltage) { case MMC_SIGNAL_VOLTAGE_330: - if (!(host->flags & SDHCI_SIGNALING_330)) + if (!(host->flags & SDHCI_SIGNALING_330) || + !(host->caps & SDHCI_CAN_VDD_330)) return -EINVAL; /* Set 1.8V Signal Enable in the Host Control2 register to 0 */ ctrl &= ~SDHCI_CTRL_VDD_180; @@ -1872,7 +1873,8 @@ static int sdhci_start_signal_voltage_switch(struct mmc_host *mmc, return -EAGAIN; case MMC_SIGNAL_VOLTAGE_180: - if (!(host->flags & SDHCI_SIGNALING_180)) + if (!(host->flags & SDHCI_SIGNALING_180) || + !(host->caps & SDHCI_CAN_VDD_180)) return -EINVAL; if (!IS_ERR(mmc->supply.vqmmc)) { ret = mmc_regulator_set_vqmmc(mmc, ios); -- 2.3.7