[PATCH] mci: imx-esdhc: implement reset quirks for i.MX6 DualLite/Solo
Fabio Estevam
festevam at gmail.com
Wed May 11 09:05:58 PDT 2016
Hi Stefan,
On Wed, May 4, 2016 at 10:20 AM, Stefan Christ <s.christ at phytec.de> wrote:
> First of all the reset values of MMC interfaces are differently between
> Quad and DualLite/Solo SoM.
>
> Register VEND_SPEC2(0xC8)
> Quad: 0x0
> DualLite: 0x00000006
> default: 0x00000006 (from i.MX6 Reference Manual)
>
> Furthermore the ROM Code of Quad and DualLite uses the MMC interfaces
> differently when it loads the bootloader from that device:
>
> Register DLL_CTRL(0x60) Bit 25 FBCLK_SEL (0x48)
> Quad: 0x0 0
> DualLite: 0x01000021 1
>
> Since the linux kernel and barebox driver doesn't reset all registers,
> the MMC interface is in an inconsistent state, which leads to boot
> failures for some eMMC devices on the i.MX6 DualLite SoM. The errors
> look like:
>
> mmcblk3: error -110 sending stop command, original cmd response 0x900, card status 0x400900
> mmcblk3: error -84 transferring data, sector 24578, nr 2, cmd response 0x900, card status 0x0
> mmcblk3: retrying using single block read
> mmcblk3: error -84 transferring data, sector 24578, nr 2, cmd response 0x900, card status 0x0
> blk_update_request: I/O error, dev mmcblk3, sector 24578
>
> It's sufficient to reset register DLL_CTRL and bit FBCLK_SEL. Register
> VEND_SPEC2 has no effect.
>
> Signed-off-by: Stefan Christ <s.christ at phytec.de>
Do you plan to fix this in the kernel driver as well?
Thanks
More information about the barebox
mailing list