FAILED: patch "[PATCH] mmc: sdhci-of-esdhc: re-implement erratum A-009204 workaround" failed to apply to 4.14-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From f667216c5c7c967c3e568cdddefb51fe606bfe26 Mon Sep 17 00:00:00 2001
From: Yangbo Lu <[email protected]>
Date: Thu, 19 Dec 2019 11:23:35 +0800
Subject: [PATCH] mmc: sdhci-of-esdhc: re-implement erratum A-009204 workaround
The erratum A-009204 workaround patch was reverted because of incorrect implementation.
8b6dc6b mmc: sdhci-of-esdhc: Revert "mmc: sdhci-of-esdhc: add
erratum A-009204 support"
This patch is to re-implement the workaround (add a 5 ms delay before setting SYSCTL[RSTD] to make sure all the DMA transfers are finished).
drivers/mmc/host/sdhci-of-esdhc.c +10 -0
@@ -80,6 +80,7 @@ struct sdhci_esdhc {bool quirk_tuning_erratum_type1;bool quirk_tuning_erratum_type2;bool quirk_ignore_data_inhibit; +bool quirk_delay_before_data_reset;bool in_sw_tuning;unsigned int peripheral_clock;const struct esdhc_clk_fixup *clk_fixup;
@@ -759,6 +760,11 @@ static void esdhc_reset(struct sdhci_host *host, u8 mask)struct sdhci_esdhc *esdhc =sdhci_pltfm_priv (pltfm_host);u32 val; +if (esdhc->quirk_delay_before_data_reset && + (mask &SDHCI_RESET_DATA ) && + (host->flags &SDHCI_REQ_USE_DMA )) +mdelay (5 ); +sdhci_reset (host, mask);sdhci_writel (host, host->ier,SDHCI_INT_ENABLE );
@@ -1218,6 +1224,10 @@ static void esdhc_init(struct platform_device *pdev, struct sdhci_host *host)if (match) esdhc->clk_fixup = match->data; np = pdev->dev.of_node; + +if (of_device_is_compatible (np,"fsl,p2020-esdhc" )) + esdhc->quirk_delay_before_data_reset = true; + clk =of_clk_get (np,0 );if (!IS_ERR (clk)) {/*