[PATCH v2] mci: imx-esdhc: implement reset quirks for i.MX6 DualLite/Solo
Sascha Hauer
s.hauer at pengutronix.de
Sun May 8 23:41:45 PDT 2016
On Wed, May 04, 2016 at 03:25:57PM +0200, Stefan Christ 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>
Nice fix. Applied, thanks
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list