We want to get rid of the omap specific platform init code
callbacks as they don't play nice with device tree.

Let's convert the context loss check to be based on a
register state detection instead.

Cc: Andreas Fenkart <afenk...@gmail.com>
Cc: Balaji T K <balaj...@ti.com>
Signed-off-by: Tony Lindgren <t...@atomide.com>
---
 drivers/mmc/host/omap_hsmmc.c |   41 ++++++++---------------------------------
 1 file changed, 8 insertions(+), 33 deletions(-)

diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
index 6ac63df..aa97497 100644
--- a/drivers/mmc/host/omap_hsmmc.c
+++ b/drivers/mmc/host/omap_hsmmc.c
@@ -171,19 +171,19 @@ struct omap_hsmmc_host {
        unsigned char           bus_mode;
        unsigned char           power_mode;
        int                     suspended;
+       u32                     hctl;
+       u32                     capa;
        int                     irq;
        int                     use_dma, dma_ch;
        struct dma_chan         *tx_chan;
        struct dma_chan         *rx_chan;
        int                     slot_id;
        int                     response_busy;
-       int                     context_loss;
        int                     protect_card;
        int                     reqs_blocked;
        int                     use_reg;
        int                     req_in_progress;
        struct omap_hsmmc_next  next_data;
-
        struct  omap_mmc_platform_data  *pdata;
 };
 
@@ -597,25 +597,16 @@ static void omap_hsmmc_set_bus_mode(struct 
omap_hsmmc_host *host)
 static int omap_hsmmc_context_restore(struct omap_hsmmc_host *host)
 {
        struct mmc_ios *ios = &host->mmc->ios;
-       struct omap_mmc_platform_data *pdata = host->pdata;
-       int context_loss = 0;
        u32 hctl, capa;
        unsigned long timeout;
 
-       if (pdata->get_context_loss_count) {
-               context_loss = pdata->get_context_loss_count(host->dev);
-               if (context_loss < 0)
-                       return 1;
-       }
-
-       dev_dbg(mmc_dev(host->mmc), "context was %slost\n",
-               context_loss == host->context_loss ? "not " : "");
-       if (host->context_loss == context_loss)
-               return 1;
-
        if (!OMAP_HSMMC_READ(host->base, SYSSTATUS) & RESETDONE)
                return 1;
 
+       if (host->hctl == OMAP_HSMMC_READ(host->base, HCTL) &&
+           host->capa == OMAP_HSMMC_READ(host->base, CAPA))
+               return 0;
+
        if (host->pdata->controller_flags & OMAP_HSMMC_SUPPORTS_DUAL_VOLT) {
                if (host->power_mode != MMC_POWER_OFF &&
                    (1 << ios->vdd) <= MMC_VDD_23_24)
@@ -655,8 +646,6 @@ static int omap_hsmmc_context_restore(struct 
omap_hsmmc_host *host)
        omap_hsmmc_set_bus_mode(host);
 
 out:
-       host->context_loss = context_loss;
-
        dev_dbg(mmc_dev(host->mmc), "context is restored\n");
        return 0;
 }
@@ -666,15 +655,8 @@ out:
  */
 static void omap_hsmmc_context_save(struct omap_hsmmc_host *host)
 {
-       struct omap_mmc_platform_data *pdata = host->pdata;
-       int context_loss;
-
-       if (pdata->get_context_loss_count) {
-               context_loss = pdata->get_context_loss_count(host->dev);
-               if (context_loss < 0)
-                       return;
-               host->context_loss = context_loss;
-       }
+       host->hctl = OMAP_HSMMC_READ(host->base, HCTL);
+       host->capa = OMAP_HSMMC_READ(host->base, CAPA);
 }
 
 #else
@@ -1635,13 +1617,6 @@ static int omap_hsmmc_regs_show(struct seq_file *s, void 
*data)
 {
        struct mmc_host *mmc = s->private;
        struct omap_hsmmc_host *host = mmc_priv(mmc);
-       int context_loss = 0;
-
-       if (host->pdata->get_context_loss_count)
-               context_loss = host->pdata->get_context_loss_count(host->dev);
-
-       seq_printf(s, "mmc%d:\n ctx_loss:\t%d:%d\n\nregs:\n",
-                       mmc->index, host->context_loss, context_loss);
 
        if (host->suspended) {
                seq_printf(s, "host suspended, can't read registers\n");

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to