From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shawn Lin Subject: [RESEDN PATCH v2 3/4] mmc: sdhci: Don't try to switch to unsupported voltage Date: Fri, 23 Sep 2016 08:12:56 +0800 Message-ID: <1474589577-11193-3-git-send-email-shawn.lin@rock-chips.com> References: <1474589577-11193-1-git-send-email-shawn.lin@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1474589577-11193-1-git-send-email-shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+glpar-linux-rockchip=m.gmane.org-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org To: Ulf Hansson Cc: Shawn Lin , Ziyuan Xu , linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Adrian Hunter , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Jaehoon Chung , linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org 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 --- Changes in v2: None 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