extcon: arizona: Use power efficient workqueue
authorMark Brown <broonie@linaro.org>
Thu, 18 Jul 2013 21:42:22 +0000 (22:42 +0100)
committerChanwoo Choi <cw00.choi@samsung.com>
Sun, 4 Aug 2013 23:53:34 +0000 (08:53 +0900)
None of the delayed work the driver schedules has particularly short delays
and it is not performance sensitive so let the scheduler run it wherever
is most efficient rather than in a per CPU workqueue by using the system
power efficient workqueue.

Signed-off-by: Mark Brown <broonie@linaro.org>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com>
drivers/extcon/extcon-arizona.c

index 7a1b4a7791baf9e1fb3f0932903736014582559d..e55713083c7887abe7baa60d24396126446bbf30 100644 (file)
@@ -890,8 +890,9 @@ static void arizona_micd_detect(struct work_struct *work)
 
 handled:
        if (info->detecting)
-               schedule_delayed_work(&info->micd_timeout_work,
-                                     msecs_to_jiffies(info->micd_timeout));
+               queue_delayed_work(system_power_efficient_wq,
+                                  &info->micd_timeout_work,
+                                  msecs_to_jiffies(info->micd_timeout));
 
        pm_runtime_mark_last_busy(info->dev);
        mutex_unlock(&info->lock);
@@ -912,8 +913,9 @@ static irqreturn_t arizona_micdet(int irq, void *data)
        mutex_unlock(&info->lock);
 
        if (debounce)
-               schedule_delayed_work(&info->micd_detect_work,
-                                     msecs_to_jiffies(debounce));
+               queue_delayed_work(system_power_efficient_wq,
+                                  &info->micd_detect_work,
+                                  msecs_to_jiffies(debounce));
        else
                arizona_micd_detect(&info->micd_detect_work.work);
 
@@ -967,12 +969,14 @@ static irqreturn_t arizona_jackdet(int irq, void *data)
        if (val == info->last_jackdet) {
                dev_dbg(arizona->dev, "Suppressing duplicate JACKDET\n");
                if (cancelled_hp)
-                       schedule_delayed_work(&info->hpdet_work,
-                                             msecs_to_jiffies(HPDET_DEBOUNCE));
+                       queue_delayed_work(system_power_efficient_wq,
+                                          &info->hpdet_work,
+                                          msecs_to_jiffies(HPDET_DEBOUNCE));
 
                if (cancelled_mic)
-                       schedule_delayed_work(&info->micd_timeout_work,
-                                             msecs_to_jiffies(info->micd_timeout));
+                       queue_delayed_work(system_power_efficient_wq,
+                                          &info->micd_timeout_work,
+                                          msecs_to_jiffies(info->micd_timeout));
 
                goto out;
        }
@@ -994,8 +998,9 @@ static irqreturn_t arizona_jackdet(int irq, void *data)
 
                        arizona_start_mic(info);
                } else {
-                       schedule_delayed_work(&info->hpdet_work,
-                                             msecs_to_jiffies(HPDET_DEBOUNCE));
+                       queue_delayed_work(system_power_efficient_wq,
+                                          &info->hpdet_work,
+                                          msecs_to_jiffies(HPDET_DEBOUNCE));
                }
 
                regmap_update_bits(arizona->regmap,