Hi Venkat, Some doubts below. On Sat, Aug 18, 2012 at 12:22 AM, Venkatraman S <svenkatr@xxxxxx> wrote: > SYSCONFIG register of HSMMC IP is managed by the omap hwmod > abstraction layer. At init only right? > Resetting the IP and configuring the correct > SYSCONFIG mode is centrally managed by hwmod. > > Remove code which manipulates IP reset and SYSCONFIG directly in the > driver. I am not sure if mmc needs a reset. However IMHO In case it needs a reset the hwmod way could be to use omap_hwmod_reset However I fear it may be an issue with dt. or may be sysc could be restored something like [1] if it doesnt need reset even the check for the SYSSTATUS could be considered for removal. [1] http://www.mail-archive.com/linux-mmc@xxxxxxxxxxxxxxx/msg12041.html > > Signed-off-by: Venkatraman S <svenkatr@xxxxxx> > --- > drivers/mmc/host/omap_hsmmc.c | 24 ++---------------------- > 1 file changed, 2 insertions(+), 22 deletions(-) > > diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c > index da4f5a7..4bc55ac 100644 > --- a/drivers/mmc/host/omap_hsmmc.c > +++ b/drivers/mmc/host/omap_hsmmc.c > @@ -44,7 +44,6 @@ > #include <plat/cpu.h> > > /* OMAP HSMMC Host Controller Registers */ > -#define OMAP_HSMMC_SYSCONFIG 0x0010 > #define OMAP_HSMMC_SYSSTATUS 0x0014 > #define OMAP_HSMMC_CON 0x002C > #define OMAP_HSMMC_BLK 0x0104 > @@ -576,21 +575,8 @@ static int omap_hsmmc_context_restore(struct omap_hsmmc_host *host) > if (host->context_loss == context_loss) > return 1; > > - /* Wait for hardware reset */ > - timeout = jiffies + msecs_to_jiffies(MMC_TIMEOUT_MS); > - while ((OMAP_HSMMC_READ(host->base, SYSSTATUS) & RESETDONE) != RESETDONE > - && time_before(jiffies, timeout)) > - ; > - > - /* Do software reset */ > - OMAP_HSMMC_WRITE(host->base, SYSCONFIG, SOFTRESET); > - timeout = jiffies + msecs_to_jiffies(MMC_TIMEOUT_MS); > - while ((OMAP_HSMMC_READ(host->base, SYSSTATUS) & RESETDONE) != RESETDONE > - && time_before(jiffies, timeout)) > - ; > - > - OMAP_HSMMC_WRITE(host->base, SYSCONFIG, > - OMAP_HSMMC_READ(host->base, SYSCONFIG) | AUTOIDLE); > + if (!OMAP_HSMMC_READ(host->base, SYSSTATUS) & RESETDONE) > + return 1; Should this check be removed. > > if (host->pdata->controller_flags & OMAP_HSMMC_SUPPORTS_DUAL_VOLT) { > if (host->power_mode != MMC_POWER_OFF && > @@ -1593,10 +1579,6 @@ static void omap_hsmmc_conf_bus_power(struct omap_hsmmc_host *host) > value = OMAP_HSMMC_READ(host->base, CAPA); > OMAP_HSMMC_WRITE(host->base, CAPA, value | capa); > > - /* Set the controller to AUTO IDLE mode */ > - value = OMAP_HSMMC_READ(host->base, SYSCONFIG); > - OMAP_HSMMC_WRITE(host->base, SYSCONFIG, value | AUTOIDLE); > - > /* Set SD bus power bit */ > set_sd_bus_power(host); > } > @@ -1654,8 +1636,6 @@ static int omap_hsmmc_regs_show(struct seq_file *s, void *data) > > pm_runtime_get_sync(host->dev); > > - seq_printf(s, "SYSCONFIG:\t0x%08x\n", > - OMAP_HSMMC_READ(host->base, SYSCONFIG)); > seq_printf(s, "CON:\t\t0x%08x\n", > OMAP_HSMMC_READ(host->base, CON)); > seq_printf(s, "HCTL:\t\t0x%08x\n", > -- > 1.7.11.1.25.g0e18bef > > -- > To unsubscribe from this list: send the line "unsubscribe linux-omap" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- 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