linux/drivers/mmc/host
Yu Zhao 8c2c6a9aa9 mmc: sdhci-pci-o2micro: Add quirk for O2 Micro dev 0x8620 rev 0x01
[ Upstream commit 5169894982 ]

This device reports SDHCI_CLOCK_INT_STABLE even though it's not
ready to take SDHCI_CLOCK_CARD_EN. The symptom is that reading
SDHCI_CLOCK_CONTROL after enabling the clock shows absence of the
bit from the register (e.g. expecting 0x0000fa07 = 0x0000fa03 |
SDHCI_CLOCK_CARD_EN but only observed the first operand).

mmc1: Timeout waiting for hardware cmd interrupt.
mmc1: sdhci: ============ SDHCI REGISTER DUMP ===========
mmc1: sdhci: Sys addr:  0x00000000 | Version:  0x00000603
mmc1: sdhci: Blk size:  0x00000000 | Blk cnt:  0x00000000
mmc1: sdhci: Argument:  0x00000000 | Trn mode: 0x00000000
mmc1: sdhci: Present:   0x01ff0001 | Host ctl: 0x00000001
mmc1: sdhci: Power:     0x0000000f | Blk gap:  0x00000000
mmc1: sdhci: Wake-up:   0x00000000 | Clock:    0x0000fa03
mmc1: sdhci: Timeout:   0x00000000 | Int stat: 0x00000000
mmc1: sdhci: Int enab:  0x00ff0083 | Sig enab: 0x00ff0083
mmc1: sdhci: AC12 err:  0x00000000 | Slot int: 0x00000000
mmc1: sdhci: Caps:      0x25fcc8bf | Caps_1:   0x00002077
mmc1: sdhci: Cmd:       0x00000000 | Max curr: 0x005800c8
mmc1: sdhci: Resp[0]:   0x00000000 | Resp[1]:  0x00000000
mmc1: sdhci: Resp[2]:   0x00000000 | Resp[3]:  0x00000000
mmc1: sdhci: Host ctl2: 0x00000008
mmc1: sdhci: ADMA Err:  0x00000000 | ADMA Ptr: 0x00000000
mmc1: sdhci: ============================================

The problem happens during wakeup from S3. Adding a delay quirk
after power up reliably fixes the problem.

Signed-off-by: Yu Zhao <yuzhao@google.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-11-21 09:27:31 +01:00
..
android-goldfish.c mmc: android-goldfish: remove incorrect __iomem annotation 2015-09-01 14:19:11 +02:00
atmel-mci-regs.h mmc: atmel-mci: use endian agnostic IO 2015-03-25 09:46:18 +01:00
atmel-mci.c mmc: atmel-mci: remove useless include 2015-08-27 14:50:53 +02:00
au1xmmc.c mmc: host: drop owner assignment from platform_drivers 2014-10-20 16:20:56 +02:00
bfin_sdh.c mmc: bfin_sdh: Move away from using deprecated APIs 2013-10-30 20:26:36 -04:00
cb710-mmc.c mmc: cb710: Move away from using deprecated APIs 2013-10-30 20:26:37 -04:00
cb710-mmc.h mmc: host: use platform_{get,set}_drvdata() 2013-06-27 11:13:02 -04:00
davinci_mmc.c mmc: davinci: Constify platform_device_id 2015-06-01 09:06:49 +02:00
dw_mmc-exynos.c mmc: mmc: extend the mmc_send_tuning() 2015-10-27 10:38:41 +01:00
dw_mmc-exynos.h mmc: dw_mmc: exynos: Support eMMC's HS400 mode 2015-03-23 14:13:28 +01:00
dw_mmc-k3.c mmc: dw_mmc: k3: Fix modalias to make module auto-loading work 2015-06-01 09:07:05 +02:00
dw_mmc-pci.c mmc: dw_mmc-pci: Remove superflous #else condition on CONFIG_PM_SLEEP 2014-09-09 13:59:05 +02:00
dw_mmc-pltfm.c mmc: dw_mmc-pltfm: fix the potential NULL pointer dereference 2016-11-10 16:36:35 +01:00
dw_mmc-pltfm.h mmc: remove use of __devexit 2012-11-28 12:28:18 -08:00
dw_mmc-rockchip.c mmc: mmc: extend the mmc_send_tuning() 2015-10-27 10:38:41 +01:00
dw_mmc.c mmc: dw_mmc: fix falling from idmac to PIO mode when dw_mci_reset occurs 2018-03-28 18:40:13 +02:00
dw_mmc.h mmc: dw_mmc: fix the CardThreshold boundary at CardThrCtl register 2015-10-29 11:00:37 +01:00
jz4740_mmc.c mmc: jz4740: Fix race condition in IRQ mask update 2018-04-24 09:32:08 +02:00
Kconfig mmc: sdhci-acpi: Reduce Baytrail eMMC/SD/SDIO hangs 2016-09-07 08:32:37 +02:00
Makefile mmc: sdhci-pci: Build o2micro support in the same module 2015-10-26 16:00:05 +01:00
mmc_spi.c mmc: mmc_spi: Add Card Detect comments and fix CD GPIO case 2016-04-12 09:09:01 -07:00
mmci_qcom_dml.c mmc: mmci: Add qcom dml support to the driver. 2014-09-09 13:58:46 +02:00
mmci_qcom_dml.h mmc: mmci: Add qcom dml support to the driver. 2014-09-09 13:58:46 +02:00
mmci.c mmc: mmci: fix an ages old detection error 2016-03-03 15:07:15 -08:00
mmci.h mmc: mmci: Add Qcom specific rx_fifocnt logic. 2014-07-09 11:25:57 +02:00
moxart-mmc.c mmc: moxart: Fix module autoload for OF platform driver 2015-10-26 15:59:57 +01:00
mtk-sd.c mmc: mediatek: Fixed bug where clock frequency could be set wrong 2017-12-20 10:04:55 +01:00
mvsdio.c mmc: mvsdio: don't use devm_pinctrl_get_select_default() in probe 2015-01-19 09:56:21 +01:00
mvsdio.h
mxcmmc.c mmc: host: mxcmmc: Simplify a trivial if-return sequence 2015-06-01 09:07:02 +02:00
mxs-mmc.c mmc: mxs-mmc: Fix additional cycles after transmission stop 2017-01-26 08:23:48 +01:00
of_mmc_spi.c mmc: mmc_spi: Support CD/RO GPIOs 2013-08-24 23:45:22 -04:00
omap_hsmmc.c mmc: host: omap_hsmmc: checking for NULL instead of IS_ERR() 2018-03-24 10:58:43 +01:00
omap.c mmc: omap: Fix module autoload for OF platform driver 2015-10-26 15:59:58 +01:00
pxamci.c mmc: pxamci: fix potential oops 2016-10-07 15:23:41 +02:00
pxamci.h
rtsx_pci_sdmmc.c mmc: rtsx: Constify platform_device_id 2015-06-01 09:06:50 +02:00
rtsx_usb_sdmmc.c mmc: rtsx_usb_sdmmc: Handle runtime PM while changing the led 2016-10-28 03:01:35 -04:00
s3cmci.c mmc: s3cmci: include linux/interrupt.h for tasklet_struct 2017-11-08 10:06:28 +01:00
s3cmci.h mmc: s3cmci: port DMA code to dmaengine API 2014-07-09 11:26:13 +02:00
sdhci_f_sdh30.c mmc: sdhci_f_sdh30: Fix the size passed to sdhci_alloc_host 2015-06-01 09:06:46 +02:00
sdhci-acpi.c mmc: sdhci-acpi: Reduce Baytrail eMMC/SD/SDIO hangs 2016-09-07 08:32:37 +02:00
sdhci-bcm-kona.c mmc: sdhci-bcm-kona: fix logic to check for 8-bit data width 2015-10-26 15:59:55 +01:00
sdhci-bcm2835.c mmc: sdhci-bcm2835: Actually enable the clock 2015-06-01 09:56:07 +02:00
sdhci-cns3xxx.c mmc: sdhci: set the .remove to sdhci_pltfm_unregister() 2015-03-23 14:13:35 +01:00
sdhci-dove.c mmc: sdhci: set the .remove to sdhci_pltfm_unregister() 2015-03-23 14:13:35 +01:00
sdhci-esdhc-imx.c mmc: sdhci-esdhc-imx: increase the pad I/O drive strength for DDR50 card 2017-04-27 09:09:33 +02:00
sdhci-esdhc.h mmc: sdhci-of-esdhc: support both BE and LE host controller 2015-10-26 16:00:08 +01:00
sdhci-iproc.c mmc: sdhci-iproc: fix 32bit writes for TRANSFER_MODE register 2018-05-30 07:48:51 +02:00
sdhci-msm.c mmc: mmc: extend the mmc_send_tuning() 2015-10-27 10:38:41 +01:00
sdhci-of-arasan.c mmc: sdhci-of-arasan: Add the support for sdhci-5.1 2015-08-27 14:50:54 +02:00
sdhci-of-at91.c mmc: sdhci-of-at91: remove a line of dead code 2015-10-26 15:59:56 +01:00
sdhci-of-esdhc.c mmc: sdhci-of-esdhc: limit SD clock for ls1012a/ls1046a 2018-03-24 10:58:45 +01:00
sdhci-of-hlwd.c mmc: sdhci: set the .remove to sdhci_pltfm_unregister() 2015-03-23 14:13:35 +01:00
sdhci-pci-core.c mmc: sdhci-pci: Remove MMC_CAP_BUS_WIDTH_TEST for Intel controllers 2016-06-01 12:15:50 -07:00
sdhci-pci-data.c mmc: sdhci-pci: Add support for drive strength selection for SPT 2015-06-01 09:07:14 +02:00
sdhci-pci-o2micro.c mmc: sdhci-pci-o2micro: Add quirk for O2 Micro dev 0x8620 rev 0x01 2018-11-21 09:27:31 +01:00
sdhci-pci-o2micro.h mmc: sdhci-pci: Make sdhci_pci_o2_fujin2_pci_init() static 2015-10-26 16:00:05 +01:00
sdhci-pci.h mmc: sdhci-pci: Add support and PCI IDs for more Broxton host controllers 2016-04-20 15:42:14 +09:00
sdhci-pltfm.c mmc: sdhci-pltfm: Use of_property_read_u32 instead of open-coding it 2015-10-26 15:59:57 +01:00
sdhci-pltfm.h mmc: sdhci-pltfm: export pltfm suspend/resume api 2014-01-13 12:48:06 -05:00
sdhci-pxav2.c mmc: sdhci-{pxav2,pxav3}: Use of_match_ptr() macro 2015-06-01 09:06:53 +02:00
sdhci-pxav3.c mmc: sdhci-pxav3: fix error handling of armada_38x_quirks 2015-10-08 19:24:23 +02:00
sdhci-s3c-regs.h mmc: sdhci-s3c: remove platform dependencies 2013-04-19 13:51:23 +02:00
sdhci-s3c.c mmc: sdhci-s3c: Constify platform_device_id 2015-06-01 09:06:52 +02:00
sdhci-sirf.c mmc: mmc: extend the mmc_send_tuning() 2015-10-27 10:38:41 +01:00
sdhci-spear.c Update Viresh Kumar's email address 2015-07-17 16:39:53 -07:00
sdhci-st.c mmc: sdhci-st: Fix modalias to make module auto-loading work 2015-06-01 09:07:07 +02:00
sdhci-tegra.c mmc: sdhci-tegra: convert to use GPIO descriptors 2015-04-01 12:56:07 +02:00
sdhci.c mmc: sdhci: Do not disable interrupts while waiting for clock 2017-03-30 09:35:18 +02:00
sdhci.h mmc: sdhci: 64-bit DMA actually has 4-byte alignment 2016-09-15 08:27:44 +02:00
sdricoh_cs.c mmc: sdricoh_cs: Move away from using deprecated APIs 2013-10-30 20:28:32 -04:00
sh_mmcif.c mmc: sh_mmcif: Correct TX DMA channel allocation 2016-04-12 09:08:32 -07:00
sh_mobile_sdhi.c mmc: sh_mobile_sdhi: remove sh_mobile_sdhi_info 2015-03-05 21:54:26 +05:30
sunxi-mmc.c mmc: sunxi: Add card busy detection 2015-10-26 16:00:02 +01:00
tifm_sd.c mmc: Convert pr_warning to pr_warn 2014-09-24 10:13:09 +02:00
tmio_mmc_dma.c mmc: tmio: mmc: tmio: tmio_mmc_data has .chan_priv_?x 2015-03-05 21:54:17 +05:30
tmio_mmc_pio.c mmc: tmio: Fix timeout value for command request 2015-08-24 11:25:53 +02:00
tmio_mmc.c mmc: TMIO: Use devm_request_irq() 2015-06-01 09:06:48 +02:00
tmio_mmc.h mmc: tmio: mmc: tmio: tmio_mmc_data has .chan_priv_?x 2015-03-05 21:54:17 +05:30
toshsd.c mmc: toshsd: Fix unbalanced locking 2015-01-19 09:56:07 +01:00
toshsd.h mmc: add Toshiba PCI SD controller driver 2014-11-26 14:30:58 +01:00
usdhi6rol0.c mmc: usdhi6rol0: handle NULL data in timeout 2016-03-03 15:07:15 -08:00
ushc.c mmc: ushc: fix NULL-deref at probe 2017-03-30 09:35:17 +02:00
via-sdmmc.c mmc: via-sdmmc: Move away from using deprecated APIs 2013-10-30 20:28:36 -04:00
vub300.c mmc: vub300: Remove unneded semicolons 2015-10-26 15:59:54 +01:00
wbsd.c mmc: wbsd: Remove unneded semicolon 2015-10-26 15:59:53 +01:00
wbsd.h
wmt-sdmmc.c mmc: constify of_device_id array 2015-03-23 14:13:49 +01:00