Re: [PATCH 20/32] omap_hsmmc: put MMC regulator to sleep

Andrew Morton
2009-07-24T22:51:55Z

On Fri, 10 Jul 2009 15:42:27 +0300
Adrian Hunter <adrian.hunter@nokia.com> wrote:

> +static int omap_mmc_regsleep_to_enabled(struct mmc_omap_host *host)
> +{
> + unsigned long timeout;
> +
> + dev_dbg(mmc_dev(host->mmc), "REGSLEEP -> ENABLED\n");
> +
> + clk_enable(host->fclk);
> + clk_enable(host->iclk);
> +
> + if (clk_enable(host->dbclk))
> + dev_dbg(mmc_dev(host->mmc),
> + "Enabling debounce clk failed\n");
> +
> + omap_mmc_restore_ctx(host);
> +
> + /*
> + * We turned off interrupts and bus power. Interrupts
> + * are turned on by 'mmc_omap_start_command()' so we
> + * just need to turn on the bus power here.
> + */
> + OMAP_HSMMC_WRITE(host->base, HCTL,
> + OMAP_HSMMC_READ(host->base, HCTL) | SDBP);
> +
> + timeout = jiffies + msecs_to_jiffies(MMC_TIMEOUT_MS);
> + while ((OMAP_HSMMC_READ(host->base, HCTL) & SDBP) != SDBP &&
> + time_before(jiffies, timeout))
> + ;
> +
> + if (mmc_slot(host).set_sleep)
> + mmc_slot(host).set_sleep(host->dev, host->slot_id,
> + 0, host->vdd, 0);
> +
> + host->dpm_state = ENABLED;
> +
> + return 0;
> +}

We take no action if the wait for SDBP timed out?