u-boot/drivers/mmc
Sean Anderson 21c84bb111 mmc: sdhci: Rework SDHCI_QUIRK_BROKEN_R1B
As noted in commit 3a6383207b ("mmc: sdhci: add the quirk for broken
r1b response"), some MMC controllers don't always set the transfer
complete bit with R1b responses.

According to the SD Host Controller Simplified Specification v4.20,

> In the case of a command pairing with response-with-busy[, Transfer
> Complete] is set when busy is de-asserted. Refer to DAT Line Active
> and Command Inhibit (DAT) in the Present State register.

By polling the DAT Line Active bit in the present state register, we can
detect when we are no longer busy, without waiting for a long timeout.
This results in much faster reads/writes on buggy controllers.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Tested-by: Henrik Grimler <henrik@grimler.se>
2023-11-01 10:01:10 +09:00
..
am654_sdhci.c drivers: use dev_read_addr_ptr when cast to pointer 2023-05-06 17:28:18 +08:00
arm_pl180_mmci.c mmc: arm_pl180_mmci: Enable HWFC for specific versions of MCI 2021-10-29 18:22:32 +09:00
arm_pl180_mmci.h mmc: arm_pl180_mmci: Enable HWFC for specific versions of MCI 2021-10-29 18:22:32 +09:00
aspeed_sdhci.c mmc/aspeed: Enable controller clocks 2022-07-06 14:31:29 -04:00
atmel_sdhci.c atmel_sdhci: Force card-detect if MMC_CAP_NONREMOVABLE. 2023-07-24 14:21:00 +03:00
bcm2835_sdhci.c dm: treewide: Rename dev_get_platdata() to dev_get_plat() 2020-12-13 16:51:09 -07:00
bcm2835_sdhost.c mmc: bcm2835-host: let firmware manage the clock divisor 2023-03-24 14:43:20 +00:00
bcmstb_sdhci.c dm: treewide: Rename dev_get_platdata() to dev_get_plat() 2020-12-13 16:51:09 -07:00
ca_dw_mmc.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
davinci_mmc.c drivers: use dev_read_addr_ptr when cast to pointer 2023-05-06 17:28:18 +08:00
dw_mmc.c mmc: dw_mmc: Keep vqmmc-supply enable count in balance 2023-08-14 09:14:41 -04:00
exynos_dw_mmc.c common: Drop linux/printk.h from common header 2023-09-24 09:54:57 -04:00
f_sdh30.c mmc: f_sdh30: Add support for F_SDH30_E51 2022-10-24 18:01:32 +09:00
fsl_esdhc.c global: Migrate CONFIG_SYS_FSL* symbols to the CFG_SYS namespace 2022-11-10 10:08:55 -05:00
fsl_esdhc_imx.c common: Drop linux/printk.h from common header 2023-09-24 09:54:57 -04:00
fsl_esdhc_spl.c global: Move remaining CONFIG_SYS_* to CFG_SYS_* 2022-12-05 16:06:08 -05:00
ftsdc010_mci.c mmc: ftsdc010: make command timeout 250 ms as in the comment 2022-10-24 18:01:07 +09:00
ftsdc010_mci.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
gen_atmel_mci.c global: Move remaining CONFIG_SYS_* to CFG_SYS_* 2022-12-05 16:06:08 -05:00
hi6220_dw_mmc.c mmc: hi6220_dw_mmc: add compatible for HC2910 support 2023-05-03 09:05:24 -04:00
iproc_sdhci.c drivers: mmc: iproc_sdhci: enable HS200 mode 2021-03-02 13:53:37 +01:00
jz_mmc.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
Kconfig mmc: spl: select SPL_BLK for SPL_DM_MMC 2023-11-01 08:48:49 +09:00
kona_sdhci.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
Makefile mmc: sh_sdhi: Drop unused driver 2023-10-27 11:21:28 +02:00
meson_gx_mmc.c mmc: meson_gx_mmc: use mmc_pwrseq instead of meson_mmc_pwrseq 2021-02-19 15:10:46 +08:00
meson_gx_mmc.h dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
mmc-pwrseq.c mmc: pwrseq: add mmc-pwrseq file to provide a generic interface 2021-02-19 15:10:41 +08:00
mmc-uclass.c blk: Use a macro for the typical block size 2023-10-10 16:19:29 -04:00
mmc.c common: Drop linux/printk.h from common header 2023-09-24 09:54:57 -04:00
mmc_boot.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
mmc_bootdev.c bootstd: Use bootdev instead of bootdevice 2023-07-16 23:13:17 +08:00
mmc_legacy.c blk: Rename if_type to uclass_id 2022-09-25 08:30:05 -06:00
mmc_private.h doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
mmc_spi.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
mmc_write.c mmc: erase: Use TRIM erase when available 2023-04-10 12:17:24 +09:00
msm_sdhci.c mmc: msm_sdhci: Add SDCC version 5.0.0 support 2022-07-25 13:02:04 -04:00
mtk-sd.c common: Drop linux/printk.h from common header 2023-09-24 09:54:57 -04:00
mv_sdhci.c mmc: mv_sdhci: Depend on DM_MMC 2023-04-10 12:17:58 +09:00
mvebu_mmc.c mmc: mvebu: convert to driver model 2021-04-08 08:50:52 +02:00
mxcmmc.c treewide: convert bd_t to struct bd_info by coccinelle 2020-07-17 09:30:13 -04:00
mxsmmc.c treewide: Simply conditions with the new OF_REAL 2021-09-25 09:46:15 -06:00
nexell_dw_mmc.c mmc: dwmmc: Change designware MMC 'clksel' callback function to return status 2021-01-15 17:48:36 +08:00
npcm_sdhci.c mmc: npcm_sdhci: Fix use of CONFIG_IS_ENABLED on DM_REGULATOR 2023-04-08 03:53:23 +02:00
octeontx_hsmmc.c cyclic: Use schedule() instead of WATCHDOG_RESET() 2022-09-18 10:26:33 +02:00
octeontx_hsmmc.h mmc: Add MMC controller driver for OcteonTX / TX2 2020-08-25 08:01:16 +02:00
omap_hsmmc.c dm: treewide: Use uclass_first_device_err when accessing one device 2022-10-17 21:17:12 -06:00
owl_mmc.c mmc: actions: add MMC driver for Actions OWL S700/S900 2022-01-18 12:48:17 -05:00
pci_mmc.c mmc: pci: Drop the superfluous cast 2023-11-01 09:58:57 +09:00
pic32_sdhci.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
piton_mmc.c drivers: use dev_read_addr_ptr when cast to pointer 2023-05-06 17:28:18 +08:00
renesas-sdhi.c mmc: renesas-sdhi: Fix error handling in rzg2l_sdhi_setup 2023-10-27 11:21:28 +02:00
rockchip_dw_mmc.c mmc: rockchip_dw_mmc: Fix get_mmc_clk return value 2023-03-19 13:20:21 +08:00
rockchip_sdhci.c mmc: rockchip_sdhci: Disable DMA mode using a device tree property 2023-05-18 08:34:45 +08:00
rpmb.c mmc: rpmb: Fix driver routing memory alignment with tmp buffer 2021-07-30 17:12:15 +08:00
s5p_sdhci.c Revert "mmc: s5p_sdhci: unset the SDHCI_QUIRK_BROKEN_R1B" 2023-05-15 17:14:46 -04:00
sandbox_mmc.c sandbox: mmc: Start off with a zeroed file 2023-01-23 18:11:39 -05:00
sdhci-adma.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
sdhci-cadence.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
sdhci.c mmc: sdhci: Rework SDHCI_QUIRK_BROKEN_R1B 2023-11-01 10:01:10 +09:00
sh_mmcif.c cyclic: Use schedule() instead of WATCHDOG_RESET() 2022-09-18 10:26:33 +02:00
sh_mmcif.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
snps_dw_mmc.c dm: treewide: Rename ofdata_to_platdata() to of_to_plat() 2020-12-13 16:51:09 -07:00
socfpga_dw_mmc.c mmc: dwmmc: socfpga: Get "fifo-mode" property from DT 2021-06-22 12:02:32 +08:00
sti_sdhci.c common: Drop linux/printk.h from common header 2023-09-24 09:54:57 -04:00
stm32_sdmmc2.c common: Drop linux/printk.h from common header 2023-09-24 09:54:57 -04:00
sunxi_mmc.c sunxi: add Allwinner R528/T113 SoC support 2023-10-22 23:41:52 +01:00
tangier_sdhci.c dm: treewide: Rename dev_get_platdata() to dev_get_plat() 2020-12-13 16:51:09 -07:00
tegra_mmc.c drivers: use dev_read_addr_ptr when cast to pointer 2023-05-06 17:28:18 +08:00
tmio-common.c mmc: tmio: Disable 1/1024 clock divider on Renesas R-Car platforms 2023-10-27 11:21:28 +02:00
tmio-common.h mmc: tmio: Replace ifdeffery with IS_ENABLED/CONFIG_IS_ENABLED macros 2023-04-07 17:13:27 +02:00
uniphier-sd.c dm: treewide: Rename 'platdata' variables to just 'plat' 2020-12-13 16:51:08 -07:00
xenon_sdhci.c common: Drop linux/printk.h from common header 2023-09-24 09:54:57 -04:00
zynq_sdhci.c mmc: zynq_sdhci: Dll reset only for ZynqMP platform 2023-07-21 09:00:38 +02:00