diff mbox series

Revert "mmc: sdhci: Remove unneeded quirk2 flag of O2 SD host controller"

Message ID 20190905045557.8812-1-drake@endlessm.com
State New
Headers show
Series Revert "mmc: sdhci: Remove unneeded quirk2 flag of O2 SD host controller" | expand

Commit Message

Daniel Drake Sept. 5, 2019, 4:55 a.m. UTC
This reverts commit 414126f9e5abf1973c661d24229543a9458fa8ce.

This commit broke eMMC storage access on a new consumer MiniPC based on
AMD SoC, which has eMMC connected to:

02:00.0 SD Host controller: O2 Micro, Inc. Device 8620 (rev 01) (prog-if 01)
	Subsystem: O2 Micro, Inc. Device 0002

During probe, several errors are seen including:

  mmc1: Got data interrupt 0x02000000 even though no data operation was in progress.
  mmc1: Timeout waiting for hardware interrupt.
  mmc1: error -110 whilst initialising MMC card

Reverting this commit allows the eMMC storage to be detected & usable
again.

Signed-off-by: Daniel Drake <drake@endlessm.com>
---
 drivers/mmc/host/sdhci-pci-o2micro.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Ulf Hansson Sept. 8, 2019, 10:32 a.m. UTC | #1
On Thu, 5 Sep 2019 at 06:56, Daniel Drake <drake@endlessm.com> wrote:
>
> This reverts commit 414126f9e5abf1973c661d24229543a9458fa8ce.
>
> This commit broke eMMC storage access on a new consumer MiniPC based on
> AMD SoC, which has eMMC connected to:
>
> 02:00.0 SD Host controller: O2 Micro, Inc. Device 8620 (rev 01) (prog-if 01)
>         Subsystem: O2 Micro, Inc. Device 0002
>
> During probe, several errors are seen including:
>
>   mmc1: Got data interrupt 0x02000000 even though no data operation was in progress.
>   mmc1: Timeout waiting for hardware interrupt.
>   mmc1: error -110 whilst initialising MMC card
>
> Reverting this commit allows the eMMC storage to be detected & usable
> again.
>
> Signed-off-by: Daniel Drake <drake@endlessm.com>

Until we find another solution... applied for fixes, thanks!

Kind regards
Uffe


> ---
>  drivers/mmc/host/sdhci-pci-o2micro.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/sdhci-pci-o2micro.c b/drivers/mmc/host/sdhci-pci-o2micro.c
> index 9dc4548271b4..19944b0049db 100644
> --- a/drivers/mmc/host/sdhci-pci-o2micro.c
> +++ b/drivers/mmc/host/sdhci-pci-o2micro.c
> @@ -432,7 +432,6 @@ int sdhci_pci_o2_probe_slot(struct sdhci_pci_slot *slot)
>                                         mmc_hostname(host->mmc));
>                                 host->flags &= ~SDHCI_SIGNALING_330;
>                                 host->flags |= SDHCI_SIGNALING_180;
> -                               host->quirks2 |= SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD;
>                                 host->mmc->caps2 |= MMC_CAP2_NO_SD;
>                                 host->mmc->caps2 |= MMC_CAP2_NO_SDIO;
>                                 pci_write_config_dword(chip->pdev,
> @@ -682,6 +681,7 @@ static const struct sdhci_ops sdhci_pci_o2_ops = {
>  const struct sdhci_pci_fixes sdhci_o2 = {
>         .probe = sdhci_pci_o2_probe,
>         .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
> +       .quirks2 = SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD,
>         .probe_slot = sdhci_pci_o2_probe_slot,
>  #ifdef CONFIG_PM_SLEEP
>         .resume = sdhci_pci_o2_resume,
> --
> 2.20.1
>
diff mbox series

Patch

diff --git a/drivers/mmc/host/sdhci-pci-o2micro.c b/drivers/mmc/host/sdhci-pci-o2micro.c
index 9dc4548271b4..19944b0049db 100644
--- a/drivers/mmc/host/sdhci-pci-o2micro.c
+++ b/drivers/mmc/host/sdhci-pci-o2micro.c
@@ -432,7 +432,6 @@  int sdhci_pci_o2_probe_slot(struct sdhci_pci_slot *slot)
 					mmc_hostname(host->mmc));
 				host->flags &= ~SDHCI_SIGNALING_330;
 				host->flags |= SDHCI_SIGNALING_180;
-				host->quirks2 |= SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD;
 				host->mmc->caps2 |= MMC_CAP2_NO_SD;
 				host->mmc->caps2 |= MMC_CAP2_NO_SDIO;
 				pci_write_config_dword(chip->pdev,
@@ -682,6 +681,7 @@  static const struct sdhci_ops sdhci_pci_o2_ops = {
 const struct sdhci_pci_fixes sdhci_o2 = {
 	.probe = sdhci_pci_o2_probe,
 	.quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
+	.quirks2 = SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD,
 	.probe_slot = sdhci_pci_o2_probe_slot,
 #ifdef CONFIG_PM_SLEEP
 	.resume = sdhci_pci_o2_resume,