In case of SDHCI_TIMEOUT_CONTROL write only 4 bits and not the whole byte to avoid touching other unrelated bits in the i.MX6 SYS_CTRL register. E.g. IPP_RST_N shouldn't be touched accidently. Signed-off-by: Dirk Behme <dirk.behme@xxxxxxxxxxxx> --- drivers/mmc/host/sdhci-esdhc-imx.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c index 1dd5ba8..1af3a2a 100644 --- a/drivers/mmc/host/sdhci-esdhc-imx.c +++ b/drivers/mmc/host/sdhci-esdhc-imx.c @@ -362,6 +362,18 @@ static void esdhc_writeb_le(struct sdhci_host *host, u8 val, int reg) esdhc_clrset_le(host, mask, new_val, reg); return; + case SDHCI_TIMEOUT_CONTROL: + /* + * On i.MX6 the timeout value DTOCV is 4 bit large. Touch only + * these 4 bits (lower nibble of the byte), but not the upper + * nibble of the byte. The upper nibble of the byte contains + * IPP_RST_N which should keep the reset value, i.e. 1, and + * shouldn't be touched here. + */ + if (is_imx6q_usdhc(imx_data)) { + esdhc_clrset_le(host, 0x0f, val, reg); + return; + } } esdhc_clrset_le(host, 0xff, val, reg); -- 1.8.2 -- 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