| From b7dfa695afc40d5396ed84b9f25aa3754de23e39 Mon Sep 17 00:00:00 2001 |
| From: Trac Hoang <trac.hoang@broadcom.com> |
| Date: Thu, 9 May 2019 10:24:26 -0700 |
| Subject: mmc: sdhci-iproc: cygnus: Set NO_HISPD bit to fix HS50 data hold time problem |
| |
| From: Trac Hoang <trac.hoang@broadcom.com> |
| |
| commit b7dfa695afc40d5396ed84b9f25aa3754de23e39 upstream. |
| |
| The iproc host eMMC/SD controller hold time does not meet the |
| specification in the HS50 mode. This problem can be mitigated |
| by disabling the HISPD bit; thus forcing the controller output |
| data to be driven on the falling clock edges rather than the |
| rising clock edges. |
| |
| This change applies only to the Cygnus platform. |
| |
| Stable tag (v4.12+) chosen to assist stable kernel maintainers so that |
| the change does not produce merge conflicts backporting to older kernel |
| versions. In reality, the timing bug existed since the driver was first |
| introduced but there is no need for this driver to be supported in kernel |
| versions that old. |
| |
| Cc: stable@vger.kernel.org # v4.12+ |
| Signed-off-by: Trac Hoang <trac.hoang@broadcom.com> |
| Signed-off-by: Scott Branden <scott.branden@broadcom.com> |
| Acked-by: Adrian Hunter <adrian.hunter@intel.com> |
| Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/mmc/host/sdhci-iproc.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/mmc/host/sdhci-iproc.c |
| +++ b/drivers/mmc/host/sdhci-iproc.c |
| @@ -196,7 +196,8 @@ static const struct sdhci_ops sdhci_ipro |
| }; |
| |
| static const struct sdhci_pltfm_data sdhci_iproc_cygnus_pltfm_data = { |
| - .quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK, |
| + .quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK | |
| + SDHCI_QUIRK_NO_HISPD_BIT, |
| .quirks2 = SDHCI_QUIRK2_ACMD23_BROKEN | SDHCI_QUIRK2_HOST_OFF_CARD_ON, |
| .ops = &sdhci_iproc_32only_ops, |
| }; |