diff options
Diffstat (limited to 'drivers/mmc/host/omap_hsmmc.c')
-rw-r--r-- | drivers/mmc/host/omap_hsmmc.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c index 53f8fa599cf5..69858e750203 100644 --- a/drivers/mmc/host/omap_hsmmc.c +++ b/drivers/mmc/host/omap_hsmmc.c | |||
@@ -982,6 +982,17 @@ static inline void omap_hsmmc_reset_controller_fsm(struct omap_hsmmc_host *host, | |||
982 | OMAP_HSMMC_WRITE(host->base, SYSCTL, | 982 | OMAP_HSMMC_WRITE(host->base, SYSCTL, |
983 | OMAP_HSMMC_READ(host->base, SYSCTL) | bit); | 983 | OMAP_HSMMC_READ(host->base, SYSCTL) | bit); |
984 | 984 | ||
985 | /* | ||
986 | * OMAP4 ES2 and greater has an updated reset logic. | ||
987 | * Monitor a 0->1 transition first | ||
988 | */ | ||
989 | if (mmc_slot(host).features & HSMMC_HAS_UPDATED_RESET) { | ||
990 | while ((!(OMAP_HSMMC_READ(host, SYSCTL) & bit)) | ||
991 | && (i++ < limit)) | ||
992 | cpu_relax(); | ||
993 | } | ||
994 | i = 0; | ||
995 | |||
985 | while ((OMAP_HSMMC_READ(host->base, SYSCTL) & bit) && | 996 | while ((OMAP_HSMMC_READ(host->base, SYSCTL) & bit) && |
986 | (i++ < limit)) | 997 | (i++ < limit)) |
987 | cpu_relax(); | 998 | cpu_relax(); |