RE: [PATCH] mmc: sdhci-esdhc-imx: implement reset quirks for i.MX6 DualLite/Solo

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





> -----Original Message-----
> From: linux-mmc-owner@xxxxxxxxxxxxxxx [mailto:linux-mmc-
> owner@xxxxxxxxxxxxxxx] On Behalf Of Stefan Christ
> Sent: Thursday, May 12, 2016 7:53 PM
> To: adrian.hunter@xxxxxxxxx; linux-mmc@xxxxxxxxxxxxxxx
> Cc: aisheng.dong@xxxxxxxxxxxxx; festevam@xxxxxxxxx
> Subject: [PATCH] mmc: sdhci-esdhc-imx: implement reset quirks for i.MX6
> DualLite/Solo
> 
> The ROM Code of i.MX6 Quad/Dual uses the MMC interfaces differently than
> the i.MX6 Solo/DualLite when it loads the bootloader from the interface:
> 
>                 Register DLL_CTRL(0x60)  Bit 25 FBCLK_SEL (0x48)
>     Quad:       0x0                      0
>     DualLite:   0x01000021               1
> 
> Since the linux kernel or bootloader 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 SoC. The errors look like:
> 
>     mmcblk1: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card
> status 0xb00
>     mmcblk1: retrying using single block read
>     mmcblk1: error -84 transferring data, sector 2, nr 6, cmd response 0x900, card
> status 0x0
>     blk_update_request: I/O error, dev mmcblk1, sector 2
>     mmcblk1: error -84 transferring data, sector 3, nr 5, cmd response 0x900, card
> status 0x0
>     blk_update_request: I/O error, dev mmcblk1, sector 3
> 
> The register DLL_CTRL is already reset. Reset also the bit FBCLK_SEL.
> 
> Signed-off-by: Stefan Christ <s.christ@xxxxxxxxx>
> ---
> Hi,
> 
> this patch is a follow up to
> 
>     http://www.spinics.net/lists/linux-mmc/msg36331.html

Hi Stefan, 
Aisheng also take this into consideration, please refer to

    http://www.spinics.net/lists/linux-mmc/msg36940.html

Seems this patch still not be in Ulf's branch. 

Regards,
Haibo
> 
>     mmc: sdhci-esdhci-imx: disable DLL delay line settings explicitly
> 
>     Disable DLL delay line settings explicitly during driver initialization
>     in case ROM/uBoot had set an invalid delay.
>     e.g. MX6DL ROM has set the default delay line(DLLCTRL) to 0x1000021,
>     the uSDHC clock timing will become marginal when works on DDR mode
>     due to default delay and will possibly see CRC errors in case the board
>     is not perfectly designed on the eMMC chip layout.
> 
>     Signed-off-by: Dong Aisheng <aisheng.dong@xxxxxxx>
> 
> It doesn't apply cleanly on Linus master branch, since the above patch is missing.
> 
> Mit freundlichen Grüßen / Kind regards,
>         Stefan Christ
> ---
>  drivers/mmc/host/sdhci-esdhc-imx.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-
> esdhc-imx.c
> index 4490808..9101556 100644
> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
> @@ -1191,6 +1191,10 @@ static int sdhci_esdhc_imx_probe(struct
> platform_device *pdev)
> 
>  		/* disable DLL_CTRL delay line settings */
>  		writel(0x0, host->ioaddr + ESDHC_DLL_CTRL);
> +
> +		/* reset bit FBCLK_SEL for i.MX6 Solo/DualLite ROM code */
> +		writel(readl(host->ioaddr + ESDHC_MIX_CTRL) & ~BIT(25),
> +			host->ioaddr + ESDHC_MIX_CTRL);
>  	}
> 
>  	if (imx_data->socdata->flags & ESDHC_FLAG_MAN_TUNING)
> --
> 1.9.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the
> body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at
> http://vger.kernel.org/majordomo-info.html
��.n��������+%������w��{.n�����{��i��)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥




[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux