cpcap: Flush work in suspend
authorColin Cross <ccross@android.com>
Thu, 23 Sep 2010 21:50:12 +0000 (14:50 -0700)
committerColin Cross <ccross@android.com>
Thu, 7 Oct 2010 00:03:10 +0000 (17:03 -0700)
Change-Id: I9a4ef87e84b53ad52f46554ad52ca5effb260f65
Signed-off-by: Colin Cross <ccross@android.com>
drivers/mfd/cpcap-irq.c

index 397caaae20a75f21b0b648c07bd53e5febd6856a..18f42875df2010856c3f65fe26054a31bf75465b 100644 (file)
@@ -434,7 +434,7 @@ int cpcap_irq_init(struct cpcap_device *cpcap)
 
        cpcap_irq_mask_all(cpcap);
 
-       data->workqueue = create_workqueue("cpcap_irq");
+       data->workqueue = create_singlethread_workqueue("cpcap_irq");
        INIT_WORK(&data->work, irq_work_func);
        mutex_init(&data->lock);
        wake_lock_init(&data->wake_lock, WAKE_LOCK_SUSPEND, "cpcap-irq");
@@ -635,8 +635,10 @@ EXPORT_SYMBOL_GPL(cpcap_irq_sense);
 int cpcap_irq_suspend(struct cpcap_device *cpcap)
 {
        struct spi_device *spi = cpcap->spi;
+       struct cpcap_irqdata *data = cpcap->irqdata;
 
        disable_irq(spi->irq);
+       flush_work(&data->work);
        return 0;
 }