Received: by 2002:a25:824b:0:0:0:0:0 with SMTP id d11csp1110091ybn; Tue, 24 Sep 2019 15:02:22 -0700 (PDT) X-Google-Smtp-Source: APXvYqy+uJtoeK7DTy6Wzg49/ASaZ/es6P76rAfinKmXQmW+4kGVzxHDS4DQaSNCm1RtCw3inGBx X-Received: by 2002:a1c:9ad1:: with SMTP id c200mr2891234wme.165.1569362542369; Tue, 24 Sep 2019 15:02:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1569362542; cv=none; d=google.com; s=arc-20160816; b=X/w5XUURvbHWDDYhilOBETyaIvoS2hxQJ/NOMlnwKJlguptPQAWdVctHg/qBbxRfDr NOT+3XCR/o5gLOO9/XLpwHqXMnfKNuyqXx3un6707hc61K8QRGex7THS1Y7bCXqbk8KQ FVz5QNmaaq524yBxs5kKZG3MP0iwC4XtjhdAbPjLG7NFhWxt+x9zin25IEX3kZPbinRy nXpExdpxChHgPKrHT26GLM6AaavcZ9h81xiX+1mt5UIcZgI3hPYPGJE97D0fNSc3LWjr r6QAxnkWOd0E5ZTHzs0krby5IRe8lSJRBHzFFglch1iGw8BUBkog8pK4rN845GSdNgHc pIbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=4tD4lOpKSdEFl4ORgTLmFU/YqRAcS8oyNVlRTOTIUOs=; b=On34qnfyVgIjmuwNBAbm5X7u6HWYB/+rBfoQMCx2qb7fQSIcwHP0hMduGE/Lp4+Wn5 jqxksUJH4Zp12TIXvGq50pNTBRS0Xg9Ww0dYa7qO4G/mjibmYc0EBMI4UaV2kfddovI8 4v8a/hWTgoBuZXU/gKn7LCoFkzd0MzMFCHngQCSE0tC5HRWDNuZJsD6Mv7N3duM7m2mE hp/Y+lr+OyhzYs/2Eb1DtY+4nloTSRw2UII53FE8IoMMNesHP7XzWSkG3UN8ZJ8yYqSb VFMPHTeQb11EmcPymUzGt/hD0GHUUjNlXsEbxUgZ9VDz80OsCny1BpEWmjSa1Vj9xzsS FggA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BWvpLGLP; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f15si2016337edm.414.2019.09.24.15.01.57; Tue, 24 Sep 2019 15:02:22 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BWvpLGLP; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2436834AbfIVTbZ (ORCPT + 99 others); Sun, 22 Sep 2019 15:31:25 -0400 Received: from mail.kernel.org ([198.145.29.99]:45806 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391816AbfIVSsv (ORCPT ); Sun, 22 Sep 2019 14:48:51 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 53B58208C2; Sun, 22 Sep 2019 18:48:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1569178131; bh=OOYbtDl++mAga3Ve0irijuGjJiSWW+eTKM4eu1A5L8A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BWvpLGLP+suvdcJttj5tzf1i437GdMSB9/15RQpU2WP9sO3Rn7s7t45nObxP7rqoz cAFIUNSHRc4gPmZKCQ+hppY+My/yxxFfnUZxqMkYpvapHcVf4NJFokGITAn5H0c1B4 Xv9PheH4kVfpiTDSyw3WnBVhwUVjyAE1FWU/WHo8= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Al Cooper , Adrian Hunter , Ulf Hansson , Sasha Levin , linux-mmc@vger.kernel.org Subject: [PATCH AUTOSEL 5.3 183/203] mmc: sdhci: Fix incorrect switch to HS mode Date: Sun, 22 Sep 2019 14:43:29 -0400 Message-Id: <20190922184350.30563-183-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190922184350.30563-1-sashal@kernel.org> References: <20190922184350.30563-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Al Cooper [ Upstream commit c894e33ddc1910e14d6f2a2016f60ab613fd8b37 ] When switching from any MMC speed mode that requires 1.8v (HS200, HS400 and HS400ES) to High Speed (HS) mode, the system ends up configured for SDR12 with a 50MHz clock which is an illegal mode. This happens because the SDHCI_CTRL_VDD_180 bit in the SDHCI_HOST_CONTROL2 register is left set and when this bit is set, the speed mode is controlled by the SDHCI_CTRL_UHS field in the SDHCI_HOST_CONTROL2 register. The SDHCI_CTRL_UHS field will end up being set to 0 (SDR12) by sdhci_set_uhs_signaling() because there is no UHS mode being set. The fix is to change sdhci_set_uhs_signaling() to set the SDHCI_CTRL_UHS field to SDR25 (which is the same as HS) for any switch to HS mode. This was found on a new eMMC controller that does strict checking of the speed mode and the corresponding clock rate. It caused the switch to HS400 mode to fail because part of the sequence to switch to HS400 requires a switch from HS200 to HS before going to HS400. Suggested-by: Adrian Hunter Signed-off-by: Al Cooper Signed-off-by: Ulf Hansson Signed-off-by: Sasha Levin --- drivers/mmc/host/sdhci.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index a5dc5aae973e6..c66e66fbaeb40 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -1849,7 +1849,9 @@ void sdhci_set_uhs_signaling(struct sdhci_host *host, unsigned timing) ctrl_2 |= SDHCI_CTRL_UHS_SDR104; else if (timing == MMC_TIMING_UHS_SDR12) ctrl_2 |= SDHCI_CTRL_UHS_SDR12; - else if (timing == MMC_TIMING_UHS_SDR25) + else if (timing == MMC_TIMING_SD_HS || + timing == MMC_TIMING_MMC_HS || + timing == MMC_TIMING_UHS_SDR25) ctrl_2 |= SDHCI_CTRL_UHS_SDR25; else if (timing == MMC_TIMING_UHS_SDR50) ctrl_2 |= SDHCI_CTRL_UHS_SDR50; -- 2.20.1