|
@@ -888,6 +888,16 @@ static unsigned int esdhc_get_max_timeout_count(struct sdhci_host *host)
|
|
|
return esdhc_is_usdhc(imx_data) ? 1 << 28 : 1 << 27;
|
|
|
}
|
|
|
|
|
|
+static void esdhc_set_timeout(struct sdhci_host *host, struct mmc_command *cmd)
|
|
|
+{
|
|
|
+ struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
|
|
|
+ struct pltfm_imx_data *imx_data = pltfm_host->priv;
|
|
|
+
|
|
|
+ /* use maximum timeout counter */
|
|
|
+ sdhci_writeb(host, esdhc_is_usdhc(imx_data) ? 0xF : 0xE,
|
|
|
+ SDHCI_TIMEOUT_CONTROL);
|
|
|
+}
|
|
|
+
|
|
|
static struct sdhci_ops sdhci_esdhc_ops = {
|
|
|
.read_l = esdhc_readl_le,
|
|
|
.read_w = esdhc_readw_le,
|
|
@@ -899,6 +909,7 @@ static struct sdhci_ops sdhci_esdhc_ops = {
|
|
|
.get_min_clock = esdhc_pltfm_get_min_clock,
|
|
|
.get_max_timeout_count = esdhc_get_max_timeout_count,
|
|
|
.get_ro = esdhc_pltfm_get_ro,
|
|
|
+ .set_timeout = esdhc_set_timeout,
|
|
|
.set_bus_width = esdhc_pltfm_set_bus_width,
|
|
|
.set_uhs_signaling = esdhc_set_uhs_signaling,
|
|
|
.reset = esdhc_reset,
|