]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/mmc/host/sdhci-s3c.c
mmc: sdhci: Use work structs instead of tasklets
[karo-tx-linux.git] / drivers / mmc / host / sdhci-s3c.c
index 926aaf6acc678d43e7abc28e96890c18886d6563..2a4d843c32891b30bbb459c456590b06acf33daf 100644 (file)
@@ -296,9 +296,12 @@ static void sdhci_cmu_set_clock(struct sdhci_host *host, unsigned int clock)
        unsigned long timeout;
        u16 clk = 0;
 
-       /* don't bother if the clock is going off */
-       if (clock == 0)
+       /* If the clock is going off, set to 0 at clock control register */
+       if (clock == 0) {
+               sdhci_writew(host, 0, SDHCI_CLOCK_CONTROL);
+               host->clock = clock;
                return;
+       }
 
        sdhci_s3c_set_clock(host, clock);
 
@@ -392,7 +395,7 @@ static void sdhci_s3c_notify_change(struct platform_device *dev, int state)
                        clk_disable_unprepare(sc->clk_io);
 #endif
                }
-               tasklet_schedule(&host->card_tasklet);
+               schedule_work(&host->card_detect_work);
                spin_unlock_irqrestore(&host->lock, flags);
        }
 }
@@ -608,6 +611,7 @@ static int sdhci_s3c_probe(struct platform_device *pdev)
        host->hw_name = "samsung-hsmmc";
        host->ops = &sdhci_s3c_ops;
        host->quirks = 0;
+       host->quirks2 = 0;
        host->irq = irq;
 
        /* Setup quirks for the controller */