Takashi Iwai 327f61
From 8b6dc6b2d60221e90703babbc141f063b8a07e72 Mon Sep 17 00:00:00 2001
Takashi Iwai 327f61
From: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Takashi Iwai 327f61
Date: Wed, 4 Dec 2019 09:54:46 +0100
Takashi Iwai 327f61
Subject: [PATCH] mmc: sdhci-of-esdhc: Revert "mmc: sdhci-of-esdhc: add erratum A-009204 support"
Takashi Iwai 327f61
Git-commit: 8b6dc6b2d60221e90703babbc141f063b8a07e72
Takashi Iwai 327f61
Patch-mainline: v5.5-rc3
Takashi Iwai 327f61
References: bsc#1051510
Takashi Iwai 327f61
Takashi Iwai 327f61
This reverts commit 5dd195522562542bc6ebe6e7bd47890d8b7ca93c.
Takashi Iwai 327f61
Takashi Iwai 327f61
First, the fix seems to be plain wrong, since the erratum suggests
Takashi Iwai 327f61
waiting 5ms before setting setting SYSCTL[RSTD], but this msleep()
Takashi Iwai 327f61
happens after the call of sdhci_reset() which is where that bit gets
Takashi Iwai 327f61
set (if SDHCI_RESET_DATA is in mask).
Takashi Iwai 327f61
Takashi Iwai 327f61
Second, walking the whole device tree to figure out if some node has a
Takashi Iwai 327f61
"fsl,p2020-esdhc" compatible string is hugely expensive - about 70 to
Takashi Iwai 327f61
100 us on our mpc8309 board. Walking the device tree is done under a
Takashi Iwai 327f61
raw_spin_lock, so this is obviously really bad on an -rt system, and a
Takashi Iwai 327f61
waste of time on all.
Takashi Iwai 327f61
Takashi Iwai 327f61
In fact, since esdhc_reset() seems to get called around 100 times per
Takashi Iwai 327f61
second, that mpc8309 now spends 0.8% of its time determining that
Takashi Iwai 327f61
it is not a p2020. Whether those 100 calls/s are normal or due to some
Takashi Iwai 327f61
other bug or misconfiguration, regularly hitting a 100 us
Takashi Iwai 327f61
non-preemptible window is unacceptable.
Takashi Iwai 327f61
Takashi Iwai 327f61
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Takashi Iwai 327f61
Cc: stable@vger.kernel.org
Takashi Iwai 327f61
Link: https://lore.kernel.org/r/20191204085447.27491-1-linux@rasmusvillemoes.dk
Takashi Iwai 327f61
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Takashi Iwai 327f61
Acked-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 327f61
Takashi Iwai 327f61
---
Takashi Iwai 327f61
 drivers/mmc/host/sdhci-of-esdhc.c | 3 ---
Takashi Iwai 327f61
 1 file changed, 3 deletions(-)
Takashi Iwai 327f61
Takashi Iwai 327f61
diff --git a/drivers/mmc/host/sdhci-of-esdhc.c b/drivers/mmc/host/sdhci-of-esdhc.c
Takashi Iwai 327f61
index 5cca3fa4610b..7f87a90bf56a 100644
Takashi Iwai 327f61
--- a/drivers/mmc/host/sdhci-of-esdhc.c
Takashi Iwai 327f61
+++ b/drivers/mmc/host/sdhci-of-esdhc.c
Takashi Iwai 327f61
@@ -764,9 +764,6 @@ static void esdhc_reset(struct sdhci_host *host, u8 mask)
Takashi Iwai 327f61
 	sdhci_writel(host, host->ier, SDHCI_INT_ENABLE);
Takashi Iwai 327f61
 	sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE);
Takashi Iwai 327f61
 
Takashi Iwai 327f61
-	if (of_find_compatible_node(NULL, NULL, "fsl,p2020-esdhc"))
Takashi Iwai 327f61
-		mdelay(5);
Takashi Iwai 327f61
-
Takashi Iwai 327f61
 	if (mask & SDHCI_RESET_ALL) {
Takashi Iwai 327f61
 		val = sdhci_readl(host, ESDHC_TBCTL);
Takashi Iwai 327f61
 		val &= ~ESDHC_TB_EN;
Takashi Iwai 327f61
-- 
Takashi Iwai 327f61
2.16.4
Takashi Iwai 327f61