On 5/03/19 4:59 AM, Yinbo Zhu wrote: > From: Yinbo Zhu <yinbo.zhu@xxxxxxx> > > eSDHC-A001: The data timeout counter (SYSCTL[DTOCV]) is not > reliable for DTOCV values 0x4(2^17 SD clock), 0x8(2^21 SD clock), > and 0xC(2^25 SD clock). The data timeout counter can count from > 2^13–2^27, but for values 2^17, 2^21, and 2^25, the timeout > counter counts for only 2^13 SD clocks. > A-008358: The data timeout counter value loaded into the timeout > counter is less than expected and can result into early timeout > error in case of eSDHC data transactions. The table below shows > the expected vs actual timeout period for different values of > SYSCTL[DTOCV]: > these two erratum has the same quirk to control it, and set > SDHCI_QUIRK_RESET_AFTER_REQUEST to fix above issue. > > Signed-off-by: Yinbo Zhu <yinbo.zhu@xxxxxxx> Acked-by: Adrian Hunter <adrian.hunter@xxxxxxxxx> > --- > drivers/mmc/host/sdhci-of-esdhc.c | 4 +++- > 1 files changed, 3 insertions(+), 1 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-of-esdhc.c b/drivers/mmc/host/sdhci-of-esdhc.c > index 9da53e5..1ac1133 100644 > --- a/drivers/mmc/host/sdhci-of-esdhc.c > +++ b/drivers/mmc/host/sdhci-of-esdhc.c > @@ -1074,8 +1074,10 @@ static int sdhci_esdhc_probe(struct platform_device *pdev) > if (esdhc->vendor_ver > VENDOR_V_22) > host->quirks &= ~SDHCI_QUIRK_NO_BUSY_IRQ; > > - if (of_find_compatible_node(NULL, NULL, "fsl,p2020-esdhc")) > + if (of_find_compatible_node(NULL, NULL, "fsl,p2020-esdhc")) { > host->quirks2 |= SDHCI_QUIRK_RESET_AFTER_REQUEST; > + host->quirks2 |= SDHCI_QUIRK_BROKEN_TIMEOUT_VAL; > + } > > if (of_device_is_compatible(np, "fsl,p5040-esdhc") || > of_device_is_compatible(np, "fsl,p5020-esdhc") || >