Please disregard this patch. I just realized that this was already sent
out and the current upstream behavior is the result of discussion
regarding this patch.

Am Mittwoch, den 05.06.2013, 15:13 +0200 schrieb Lucas Stach:
> From: Sascha Hauer <s.ha...@pengutronix.de>
> 
> The i.MX ESDHC controller version register is a mess:
> 
> - i.MX25 has a v1 controller which identifies itself as v2
> - i.MX6Q has a v3 controller which identifies itself as v4
> - i.MX35,51,53 have v2 controllers which identify themselves correctly
> 
> Additionally on i.MX the register is located at offset 0xfc instead of
> 0xfe. The i.MX6 had a quirk around it which converted v4 into v3. Instead
> of reading the real version register, all other SoCs used to return
> the value from 0xfe which contains 0x0 for all SoCs, so all controllers
> except i.MX6q were identified as version v1.
> 
> This patch fixes this by returning the version based on the devtype
> data leaving the useless version register untouched.
> 
> Signed-off-by: Sascha Hauer <s.ha...@pengutronix.de>
> Signed-off-by: Lucas Stach <l.st...@pengutronix.de>
> ---
>  drivers/mmc/host/sdhci-esdhc-imx.c | 14 ++++++++------
>  1 file changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c 
> b/drivers/mmc/host/sdhci-esdhc-imx.c
> index c9317ed..8f0d8c7 100644
> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
> @@ -258,12 +258,14 @@ static u16 esdhc_readw_le(struct sdhci_host *host, int 
> reg)
>       struct pltfm_imx_data *imx_data = pltfm_host->priv;
>  
>       if (unlikely(reg == SDHCI_HOST_VERSION)) {
> -             reg ^= 2;
> -             if (is_imx6q_usdhc(imx_data)) {
> -                     /*
> -                      * The usdhc register returns a wrong host version.
> -                      * Correct it here.
> -                      */
> +             switch (imx_data->devtype) {
> +             case IMX25_ESDHC:
> +                     return SDHCI_SPEC_100;
> +             case IMX35_ESDHC:
> +             case IMX51_ESDHC:
> +             case IMX53_ESDHC:
> +                     return SDHCI_SPEC_200;
> +             case IMX6Q_USDHC:
>                       return SDHCI_SPEC_300;
>               }
>       }

-- 
Pengutronix e.K.                           | Lucas Stach                 |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-5076 |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to