linux_dsm_epyc7002/drivers/mmc/host
Loic Poulain a89e7bcb18 mmc: sdhci-msm: Disable CDR function on TX
The Clock Data Recovery (CDR) circuit allows to automatically adjust
the RX sampling-point/phase for high frequency cards (SDR104, HS200...).
CDR is automatically enabled during DLL configuration.
However, according to the APQ8016 reference manual, this function
must be disabled during TX and tuning phase in order to prevent any
interferences during tuning challenges and unexpected phase alteration
during TX transfers.

This patch enables/disables CDR according to the current transfer mode.

This fixes sporadic write transfer issues observed with some SDR104 and
HS200 cards.

Inspired by sdhci-msm downstream patch:
https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/432516/

Reported-by: Leonid Segal <leonid.s@variscite.com>
Reported-by: Manabu Igusa <migusa@arrowjapan.com>
Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Acked-by: Georgi Djakov <georgi.djakov@linaro.org>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
2018-12-17 08:26:24 +01:00
..
alcor.c mmc: add new Alcor Micro Cardreader SD/MMC driver 2018-12-17 08:26:24 +01:00
android-goldfish.c mmc: android-goldfish: fix bad logic of sg_copy_{from,to}_buffer conversion 2018-08-21 16:06:17 +02:00
atmel-mci.c mmc: convert to DEFINE_SHOW_ATTRIBUTE 2018-12-17 08:26:24 +01:00
au1xmmc.c mmc: au1xmmc: handle highmem pages 2018-05-29 12:24:26 +02:00
bcm2835.c mmc: bcm2835: Properly handle dmaengine_prep_slave_sg 2018-12-17 08:26:24 +01:00
cavium-octeon.c mmc: cavium-octeon: Convert to use module_platform_driver 2017-08-30 15:03:38 +02:00
cavium-thunderx.c mmc: cavium: Fix use-after-free in of_platform_device_destroy 2017-09-08 15:38:22 +02:00
cavium.c mmc: cavium: catch all errors when getting regulators 2017-10-30 11:50:33 +01:00
cavium.h mmc: cavium: Add scatter-gather DMA support 2017-04-24 21:42:10 +02:00
cb710-mmc.c
cb710-mmc.h mmc: cb710: use to_platform_device() 2016-01-05 18:04:57 +01:00
cqhci.c mmc: cqhci: support for command queue enabled host 2017-12-11 12:44:34 +01:00
cqhci.h mmc: cqhci: Ensure macro parameters are wrapped in parentheses 2017-12-11 13:11:21 +01:00
davinci_mmc.c mmc: host: simplify getting .drvdata 2018-05-02 15:08:48 +02:00
dw_mmc-bluefield.c mmc: dw_mmc-bluefield: simplify the probe() function 2018-12-17 08:26:24 +01:00
dw_mmc-exynos.c mmc: dw_mmc-exynos: Add tuning for sdr and ddr timing for USH-I mode 2018-10-08 12:02:22 +02:00
dw_mmc-exynos.h mmc: dw_mmc: exynos: Support eMMC's HS400 mode 2015-03-23 14:13:28 +01:00
dw_mmc-hi3798cv200.c mmc: dw_mmc: hi3798cv200: add MMC_CAP_CMD23 cap 2018-10-08 11:40:43 +02:00
dw_mmc-k3.c mmc: dw_mmc: Fix out-of-bounds access for slot's caps 2018-02-27 15:12:25 +01:00
dw_mmc-pci.c mmc: dw_mmc: remove the deprecated "num-slots" 2018-03-15 09:27:11 +01:00
dw_mmc-pltfm.c mmc: dw_mmc: Remove the public dw_mmc header file 2017-02-13 13:19:59 +01:00
dw_mmc-pltfm.h
dw_mmc-rockchip.c mmc: dw_mmc: fix misleading comment in dw_mci_rk3288_set_ios 2018-05-02 15:08:38 +02:00
dw_mmc-zx.c mmc: dw_mmc: Fix out-of-bounds access for slot's caps 2018-02-27 15:12:25 +01:00
dw_mmc-zx.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dw_mmc.c mmc: dw_mmc: fix card threshold control configuration 2018-07-03 10:57:16 +02:00
dw_mmc.h mmc: dw_mmc: add support for hi3798cv200 specific extensions of dw-mshc 2018-03-15 14:43:22 +01:00
jz4740_mmc.c mmc: jz4740: Use PTR_ERR_OR_ZERO in jz4740_mmc_request_gpios() 2018-12-17 08:26:24 +01:00
Kconfig mmc: add new Alcor Micro Cardreader SD/MMC driver 2018-12-17 08:26:24 +01:00
Makefile mmc: add new Alcor Micro Cardreader SD/MMC driver 2018-12-17 08:26:24 +01:00
meson-gx-mmc.c mmc: meson-gx: add device reset 2018-05-21 10:50:45 +02:00
meson-mx-sdio.c mmc: meson-mx-sdio: check devm_kasprintf for failure 2018-12-17 08:26:24 +01:00
mmc_spi.c mmc: spi: Convert to use GPIO descriptors 2018-12-17 08:26:24 +01:00
mmci_qcom_dml.c mmc: mmci: add dma_error callback 2018-10-09 09:13:03 +02:00
mmci_qcom_dml.h mmc: mmci: Add and implement a ->dma_setup() callback for qcom dml 2018-08-01 12:01:13 +02:00
mmci_stm32_sdmmc.c mmc: mmci: add stm32 sdmmc variant 2018-10-09 09:16:53 +02:00
mmci.c mmc: mmci: send stop command if sbc error issue 2018-12-17 08:26:24 +01:00
mmci.h mmc: mmci: add stm32 sdmmc variant 2018-10-09 09:16:53 +02:00
moxart-mmc.c mmc: moxart: constify mmc_host_ops structures 2017-08-30 14:01:41 +02:00
mtk-sd.c mmc: mediatek: drop too much code of tuning method 2018-10-15 15:00:29 +02:00
mvsdio.c mmc: mvsdio: Enable MMC_CAP_ERASE 2018-05-31 15:02:16 +02:00
mvsdio.h
mxcmmc.c mmc: mxcmmc: replace spin_lock_irqsave with spin_lock in ISR 2018-10-08 11:40:43 +02:00
mxs-mmc.c mmc: mxs-mmc: Implement CMD23 support 2017-02-13 13:20:27 +01:00
of_mmc_spi.c mmc: spi: Convert to use GPIO descriptors 2018-12-17 08:26:24 +01:00
omap_hsmmc.c mmc: convert to DEFINE_SHOW_ATTRIBUTE 2018-12-17 08:26:24 +01:00
omap.c MMC: OMAP: fix broken MMC on OMAP15XX/OMAP5910/OMAP310 2018-12-04 14:34:51 +01:00
pxamci.c mmc: pxa: Use GPIO descriptor for power 2018-12-17 08:26:24 +01:00
pxamci.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
renesas_sdhi_core.c mmc: tmio: introduce mask for 'always 1' bits 2018-12-17 08:26:24 +01:00
renesas_sdhi_internal_dmac.c mmc: renesas_sdhi: align compatibility properties for H3 and M3-W 2018-12-17 08:26:24 +01:00
renesas_sdhi_sys_dmac.c mmc: renesas_sdhi: align compatibility properties for H3 and M3-W 2018-12-17 08:26:24 +01:00
renesas_sdhi.h mmc: use SPDX identifier for Renesas drivers 2018-10-08 11:40:43 +02:00
rtsx_pci_sdmmc.c misc: rtsx: Move Realtek Card Reader Driver to misc 2017-11-29 10:16:44 +00:00
rtsx_usb_sdmmc.c mmc: rtsx_usb: Enable MMC_CAP_ERASE to allow erase/discard/trim requests 2018-05-08 09:43:27 +02:00
s3cmci.c mmc: convert to DEFINE_SHOW_ATTRIBUTE 2018-12-17 08:26:24 +01:00
s3cmci.h mmc: s3cmci: Register cpufreq notifier only on S3C24xx 2016-07-25 10:34:46 +02:00
sdhci_f_sdh30.c mmc: sdhci_f_sdh30: add ACPI support 2018-01-11 15:50:53 +01:00
sdhci-acpi.c Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-10-23 13:32:18 +01:00
sdhci-bcm-kona.c mmc: sdhci-*: Don't emit error msg if sdhci_add_host() fails 2018-05-29 12:24:26 +02:00
sdhci-brcmstb.c mmc: sdhci: enable/disable the clock in sdhci_pltfm_suspend/resume 2017-08-30 15:03:44 +02:00
sdhci-cadence.c mmc: sdhci-cadence: include <linux/bits.h> instead of <linux/bitops.h> 2018-12-17 08:26:24 +01:00
sdhci-cns3xxx.c mmc: sdhci-pltfm: Drop define for SDHCI_PLTFM_PMOPS 2016-07-29 11:29:04 +02:00
sdhci-dove.c mmc: sdhci-pltfm: Drop define for SDHCI_PLTFM_PMOPS 2016-07-29 11:29:04 +02:00
sdhci-esdhc-imx.c mmc: sdhci: imx: Use the slot GPIO descriptor 2018-12-17 08:26:24 +01:00
sdhci-esdhc.h mmc: sdhci-of-esdhc: workaround for unreliable pulse width detection 2018-12-17 08:26:24 +01:00
sdhci-iproc.c mmc: sdhci-iproc: Add ACPI support 2018-10-08 11:40:43 +02:00
sdhci-msm.c mmc: sdhci-msm: Disable CDR function on TX 2018-12-17 08:26:24 +01:00
sdhci-of-arasan.c mmc: sdhci-of-arasan: Add Support for AM654 MMC and PHY 2018-10-09 08:59:26 +02:00
sdhci-of-at91.c mmc: sdhci-of-at91: make function sdhci_at91_set_uhs_signaling static 2017-10-30 11:46:01 +01:00
sdhci-of-dwcmshc.c mmc: sdhci-of-dwcmshc: solve 128MB DMA boundary limitation 2018-10-08 11:40:43 +02:00
sdhci-of-esdhc.c mmc: sdhci-of-esdhc: workaround for unreliable pulse width detection 2018-12-17 08:26:24 +01:00
sdhci-of-hlwd.c mmc: sdhci-pltfm: Drop define for SDHCI_PLTFM_PMOPS 2016-07-29 11:29:04 +02:00
sdhci-omap.c mmc: sdhci-omap: Remove redundant structure assignments 2018-12-17 08:26:24 +01:00
sdhci-pci-arasan.c mmc:host:sdhci-pci:Addition of Arasan PCI Controller with integrated phy. 2018-01-04 12:46:11 +01:00
sdhci-pci-core.c mmc: sdhci-pci: Add max-frequency device property for Intel controllers 2018-12-17 08:26:24 +01:00
sdhci-pci-data.c mmc: sdhci-pci: Use ACPI DSM to get driver strength for some Intel devices 2017-04-24 21:41:28 +02:00
sdhci-pci-dwc-mshc.c mmc: sdhci-pci-dwc-mshc: synopsys dwc mshc support 2018-07-16 11:21:45 +02:00
sdhci-pci-o2micro.c mmc: sdhci-pci-o2micro: Add quirk for O2 Micro dev 0x8620 rev 0x01 2018-10-08 11:40:43 +02:00
sdhci-pci.h mmc: sdhci-pci-dwc-mshc: synopsys dwc mshc support 2018-07-16 11:21:45 +02:00
sdhci-pic32.c mmc: sdhci-*: Don't emit error msg if sdhci_add_host() fails 2018-05-29 12:24:26 +02:00
sdhci-pltfm.c mmc: sdhci-pltfm: Convert DT properties to generic device properties 2018-10-08 11:40:43 +02:00
sdhci-pltfm.h mmc: sdhci-pltfm: Convert DT properties to generic device properties 2018-10-08 11:40:43 +02:00
sdhci-pxav2.c mmc: sdhci-*: Don't emit error msg if sdhci_add_host() fails 2018-05-29 12:24:26 +02:00
sdhci-pxav3.c mmc: sdhci: pxav3: Delete GPIO handling 2018-10-08 11:40:43 +02:00
sdhci-s3c.c mmc: sdhci-*: Don't emit error msg if sdhci_add_host() fails 2018-05-29 12:24:26 +02:00
sdhci-sirf.c mmc: sdhci: sirf: Use the slot GPIO descriptor 2018-10-08 11:40:43 +02:00
sdhci-spear.c mmc: sdhci: spear: Use the slot GPIO descriptor 2018-10-08 11:40:43 +02:00
sdhci-sprd.c mmc: sdhci-sprd: Add Spreadtrum's initial host controller 2018-10-08 11:40:43 +02:00
sdhci-st.c mmc: sdhci-*: Don't emit error msg if sdhci_add_host() fails 2018-05-29 12:24:26 +02:00
sdhci-tegra.c mmc: tegra: fix inconsistent IS_ERR and PTR_ERR 2018-10-08 11:40:43 +02:00
sdhci-xenon-phy.c mmc: Convert to using %pOFn instead of device_node.name 2018-10-08 11:40:43 +02:00
sdhci-xenon.c mmc: sdhci-xenon: wait 5ms after set 1.8V signal enable 2017-12-19 08:53:04 +01:00
sdhci-xenon.h mmc: sdhci-xenon: Fix clock resource by adding an optional bus clock 2017-10-04 10:50:36 +02:00
sdhci.c mmc: sdhci: Handle auto-command errors 2018-12-17 08:26:24 +01:00
sdhci.h mmc: sdhci: Handle auto-command errors 2018-12-17 08:26:24 +01:00
sdricoh_cs.c mmc: sdricoh_cs: constify mmc_host_ops structures 2017-08-30 14:01:44 +02:00
sh_mmcif.c mmc: use SPDX identifier for Renesas drivers 2018-10-08 11:40:43 +02:00
sunxi-mmc.c mmc: sunxi: Use new timing mode for A64 eMMC controller 2018-10-08 11:40:43 +02:00
tifm_sd.c mmc: tifm_sd: Mark expected switch fall-through 2018-10-08 11:40:43 +02:00
tmio_mmc_core.c mmc: host: tmio: Use GPIO descriptors 2018-12-17 08:26:24 +01:00
tmio_mmc.c mmc: tmio: remove TMIO_MMC_HAVE_HIGH_REG flag 2018-10-15 14:39:45 +02:00
tmio_mmc.h mmc: tmio: introduce mask for 'always 1' bits 2018-12-17 08:26:24 +01:00
toshsd.c mmc: toshsd: constify mmc_host_ops structures 2017-08-30 14:01:42 +02:00
toshsd.h mmc: add Toshiba PCI SD controller driver 2014-11-26 14:30:58 +01:00
uniphier-sd.c mmc: uniphier-sd: avoid using broken DMA RX channel 2018-10-15 14:53:21 +02:00
usdhi6rol0.c mmc: use SPDX identifier for Renesas drivers 2018-10-08 11:40:43 +02:00
ushc.c mmc: ushc: handle highmem pages 2018-05-21 15:49:20 +02:00
via-sdmmc.c mmc: Convert timers to use timer_setup() 2017-11-02 15:20:28 +01:00
vub300.c mmc: vub300: Use common code in __download_offload_pseudocode() 2017-11-02 15:20:29 +01:00
wbsd.c mmc: wbsd: handle highmem pages 2018-05-21 15:49:21 +02:00
wbsd.h
wmt-sdmmc.c mmc: host: simplify getting .drvdata 2018-05-02 15:08:48 +02:00