u-boot/drivers
Oleksandr Tyshchenko 61a6cc27bc omap_hsmmc: omap4+/am335x: modify MMC controller internal fsm reset func
"mmc_send_cmd: timeout: No status update" error sometimes happens in
omap_hsmmc driver func mmc_send_cmd() when the MMC controller card
identification and selection sequence is executed for eMMC on OMAP4
boards.

It happens due to incorrect execution of CMD line reset procedure
for OMAP4. Because CMD(DAT) lines reset procedures are slightly
different for OMAP3 and OMAP4(AM335x,OMAP5,DRA7xx).

According to OMAP3 TRM:
Set SRC(SRD) bit in MMCHS_SYSCTL register to 0x1 and wait until
it returns to 0x0.

According to OMAP4(AM335x,OMAP5,DRA7xx) TRMs, CMD(DATA) lines reset
procedure steps must be as follows:
1. Initiate CMD(DAT) line reset by writing 0x1 to SRC(SRD) bit in
   MMCHS_SYSCTL register (SD_SYSCTL for AM335x).
2. Poll the SRC(SRD) bit until it is set to 0x1.
3. Wait until the SRC(SRD) bit returns to 0x0
  (reset procedure is completed).

Unfortunately, at present omap_hsmmc driver has support only for
OMAP3. And as result step #2 is missing for OMAP4(AM335x,OMAP5,DRA7xx).
This sometimes leads to the fact that the waiting loop which is
required in step #3 does not executed, because SRC bit does not set
yet (at the moment of checking a condition of a loop execution).
And as a result this can cause to timeout error when sending a
next command.

In the particular case (working with eMMC witch do not respond to
some SD specific command) due to incorrect reset sequence after
command SD_CMD_SEND_IF_COND which finished with CTO flag within
64 clock cycles, the next command MMC_CMD_APP_CMD leads to a
timeout error within 1s.

So, extend CMD(DATA) lines reset procedure in func
mmc_reset_controller_fsm() by adding the missing step #2 for
OMAP4+/AM335x boards.

Signed-off-by: Oleksandr Tyshchenko <oleksandr.tyshchenko@ti.com>
Acked-by: Pantelis Antoniou <panto@antoniou-consulting.com>
2013-09-17 20:03:44 +03:00
..
bios_emulator biosemu: include <asm/io.h> header 2013-04-02 16:23:35 -04:00
block ahci: convert to use libata functions and definitions 2013-09-06 13:09:07 -04:00
bootcount Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
crypto Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
dfu dfu, nand, ubi: add partubi alt settings for updating ubi partition 2013-08-26 21:56:34 +02:00
dma dma: apbh: Add special circular mode for LCD 2013-08-09 21:48:34 +02:00
fpga fpga: zynqpl: Clear loopback mode during device init 2013-08-12 08:52:01 +02:00
gpio Merge branch 'u-boot-atmel/master' into 'u-boot-arm/master' 2013-09-04 11:50:25 +02:00
hwmon Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
i2c fsl_i2c: add workaround for the erratum I2C A004447 2013-08-20 11:15:31 +02:00
input Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
misc Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
mmc omap_hsmmc: omap4+/am335x: modify MMC controller internal fsm reset func 2013-09-17 20:03:44 +03:00
mtd mtd: atmel_nand: pmecc: fix bug fail to correct bit error in 1024-bytes sector 2013-09-04 17:07:21 +02:00
net Merge branch 'u-boot-imx/master' into 'u-boot-arm/master' 2013-09-05 11:15:26 +02:00
pci powerpc/pcie: add PCIe version 3.x support 2013-08-09 12:41:41 -07:00
pcmcia Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
power Merge branch 'u-boot-samsung/master' into 'u-boot-arm/master' 2013-09-11 09:59:27 +02:00
qe Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
rtc Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
serial Merge branch 'u-boot-imx/master' into 'u-boot-arm/master' 2013-09-05 11:15:26 +02:00
sound Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
spi spi: mxs_spi: Configure chipselect after block reset 2013-08-27 19:39:39 +05:30
tpm Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
twserial Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
usb Merge branch 'u-boot-atmel/master' into 'u-boot-arm/master' 2013-09-04 11:50:25 +02:00
video Merge branch 'u-boot-ti/master' into 'u-boot-arm/master' 2013-09-04 14:06:56 +02:00
watchdog arm, am335x: add watchdog support 2013-08-28 11:44:59 -04:00