summaryrefslogtreecommitdiff
path: root/include/linux/mfd/pcf50633
diff options
context:
space:
mode:
authorPaul Fertser <fercerpav@gmail.com>2009-07-28 00:41:15 +0400
committerSamuel Ortiz <sameo@linux.intel.com>2009-09-17 11:46:53 +0400
commited52e62ebec9e703eb0b69704feaf1b6e847d882 (patch)
tree71f81470bf569105a09f9b330bf68ba428236f06 /include/linux/mfd/pcf50633
parent9c3664ddcee8d56c54bc6a735bbc3cf77723d85d (diff)
downloadlinux-ed52e62ebec9e703eb0b69704feaf1b6e847d882.tar.xz
mfd: use a dedicated workqueue for pcf50633 irq processing
Using the default kernel "events" workqueue causes problems with synchronous adc readings if initiated from some task on the same workqueue. I had a deadlock trying to use pcf50633_adc_sync_read from a power_supply class driver because the reading was initiated from the workqueue and it waited for the irq processing to complete (to get the result) and that was put on the same workqueue. Signed-off-by: Paul Fertser <fercerpav@gmail.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'include/linux/mfd/pcf50633')
-rw-r--r--include/linux/mfd/pcf50633/core.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/mfd/pcf50633/core.h b/include/linux/mfd/pcf50633/core.h
index c8f51c3c0a72..9aba7b779fbc 100644
--- a/include/linux/mfd/pcf50633/core.h
+++ b/include/linux/mfd/pcf50633/core.h
@@ -136,6 +136,7 @@ struct pcf50633 {
int irq;
struct pcf50633_irq irq_handler[PCF50633_NUM_IRQ];
struct work_struct irq_work;
+ struct workqueue_struct *work_queue;
struct mutex lock;
u8 mask_regs[5];