Re: [PATCH 1/3] mmc: sdhci-esdhc-imx: Fix version register read

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

 



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.hauer@xxxxxxxxxxxxxx>
> 
> 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.hauer@xxxxxxxxxxxxxx>
> Signed-off-by: Lucas Stach <l.stach@xxxxxxxxxxxxxx>
> ---
>  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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




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

  Powered by Linux