u-boot/drivers/mmc
Andrew Gabbasov 01b77353e4 fsl_esdhc: Do not clear interrupt status bits until data processed
After waiting for the command completion event, the interrupt status
bits, that occured to be set by that time, are cleared by writing them
back. It is supposed, that it should be command related bits (command
complete and may be command errors).

However, in some cases the DMA already completes by that time before
the full transaction completes. The corresponding DINT bit gets set
and then cleared before even entering the loop, waiting for data part
completion. That waiting loop never gets this bit set, causing the
operation to hang. This is reported to happen, for example, for write
operation of 1 sector to upper area (block #7400000) of SanDisk Ultra II
8GB card.

The solution could be to explicitly clear only command related interrupt
status bits. However, since subsequent processing does not rely on
any command bits state, it could be easier just to remove clearing
of any bits at that point, leaving them all until all data processing
completes. After that the whole register will be cleared at once.

Also, on occasion, interrupts masking moved to before writing the command,
just for the case there should be no chance of interrupt between the first
command and interrupts masking.

Reported-by: Dirk Behme <dirk.behme@de.bosch.com>
Signed-off-by: Andrew Gabbasov <andrew_gabbasov@mentor.com>
Acked-by: Dirk Behme <dirk.behme@de.bosch.com>
Signed-off-by: Andy Fleming <afleming@freescale.com>
2013-06-13 16:52:19 -05:00
..
arm_pl180_mmci.c mmc: add support for write protection 2013-03-08 16:41:13 -05:00
arm_pl180_mmci.h u8500: Separating mmc config parameters from driver 2012-09-01 14:58:20 +02:00
bcm2835_sdhci.c ARM: bcm2835: fix get_timer() to return ms 2013-04-04 08:14:54 +02:00
bfin_sdh.c Merge u-boot/master into u-boot-ti/master 2013-03-11 12:16:13 -04:00
davinci_mmc.c davinci, mmc: Added a delay reading ext CSD register 2013-05-06 16:26:24 -05:00
dw_mmc.c mmc: dw-mmc: support DesignWare MMC Controller 2012-10-22 02:56:25 -05:00
exynos_dw_mmc.c EXYNOS: mmc: support DesignWare Controller for Samsung-SoC 2012-11-27 17:26:47 -06:00
fsl_esdhc.c fsl_esdhc: Do not clear interrupt status bits until data processed 2013-06-13 16:52:19 -05:00
ftsdc010_mci.c mmc: update Faraday FTSDC010 for rw performance 2013-05-15 18:18:15 -05:00
gen_atmel_mci.c mmc: atmel_mci: add mmc card support 2013-05-12 16:48:11 +02:00
Makefile Merge branch 'u-boot/master' into 'u-boot-arm/master' 2013-05-30 14:45:06 +02:00
mmc_spi.c mmc: add support for write protection 2013-03-08 16:41:13 -05:00
mmc.c mmc write bug fix 2013-06-13 16:46:57 -05:00
mv_sdhci.c mmc: sdhci: return error when failed add_sdhci(). 2013-05-06 16:26:24 -05:00
mxcmmc.c mmc: add support for write protection 2013-03-08 16:41:13 -05:00
mxsmmc.c imx: Move some header files from arch-mxs to imx-common 2013-04-22 10:22:22 +02:00
omap_hsmmc.c palmas: rename twl6035_mmc1_poweron_ldo with an palmas generic function 2013-05-10 08:25:55 -04:00
pxa_mmc_gen.c mmc: Remove incorrect cmd->flags usage 2012-09-06 15:23:13 -05:00
pxa_mmc.h pxa: move mmc drivers to drivers/mmc 2009-02-20 03:47:50 +01:00
s5p_sdhci.c mmc: sdhci: return error when failed add_sdhci(). 2013-05-06 16:26:24 -05:00
sdhci.c mmc: sdhci: Enable 8-bit bus width only for 3.0 spec onwards 2013-06-13 16:44:49 -05:00
sh_mmcif.c mmc: add support for write protection 2013-03-08 16:41:13 -05:00
sh_mmcif.h mmc: sh_mmcif: add support for Renesas MMCIF 2011-07-15 20:29:21 -05:00
spear_sdhci.c sdhci: Add sdhci support for spear devices 2013-05-06 16:26:24 -05:00
tegra_mmc.c mmc: Tegra: Add SD bus power/voltage function and MMC pad init call. 2013-03-14 11:06:44 -07:00
zynq_sdhci.c mmc: Add support for Xilinx Zynq sdhci controller 2013-04-30 11:39:27 +02:00