On Tue, Aug 21, 2012 at 9:08 PM, Shubhrajyoti Datta <omaplinuxkernel@xxxxxxxxx> wrote: > 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? Yes. > > >> 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. > Actually it doesn't, as far as I know. That's why I propose it to be removed. > 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. > No - it's still needed to check that the IP is ready for use. >> >> 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