aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@linaro.org>2013-07-18 17:47:02 -0400
committerMark Brown <broonie@linaro.org>2013-07-19 07:25:28 -0400
commit68defe585f333223f0f3733340136d1b02003062 (patch)
tree6ffa32b361ef52cc7b39edc7fca8cbf3c1c83559
parent57e265c8d71fb94c130bfb31f589cc9e97fb3928 (diff)
ASoC: wm8994: Use power efficient workqueue
The accessory detect debounce work 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> Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
-rw-r--r--sound/soc/codecs/wm8994.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
index 02c320f71cdf..24131a7f9390 100644
--- a/sound/soc/codecs/wm8994.c
+++ b/sound/soc/codecs/wm8994.c
@@ -819,8 +819,9 @@ static int clk_sys_event(struct snd_soc_dapm_widget *w,
819 * don't want false reports. 819 * don't want false reports.
820 */ 820 */
821 if (wm8994->jackdet && !wm8994->clk_has_run) { 821 if (wm8994->jackdet && !wm8994->clk_has_run) {
822 schedule_delayed_work(&wm8994->jackdet_bootstrap, 822 queue_delayed_work(system_power_efficient_wq,
823 msecs_to_jiffies(1000)); 823 &wm8994->jackdet_bootstrap,
824 msecs_to_jiffies(1000));
824 wm8994->clk_has_run = true; 825 wm8994->clk_has_run = true;
825 } 826 }
826 break; 827 break;
@@ -3487,7 +3488,8 @@ static irqreturn_t wm8994_mic_irq(int irq, void *data)
3487 3488
3488 pm_wakeup_event(codec->dev, 300); 3489 pm_wakeup_event(codec->dev, 300);
3489 3490
3490 schedule_delayed_work(&priv->mic_work, msecs_to_jiffies(250)); 3491 queue_delayed_work(system_power_efficient_wq,
3492 &priv->mic_work, msecs_to_jiffies(250));
3491 3493
3492 return IRQ_HANDLED; 3494 return IRQ_HANDLED;
3493} 3495}
@@ -3575,8 +3577,9 @@ static void wm8958_mic_id(void *data, u16 status)
3575 /* If nothing present then clear our statuses */ 3577 /* If nothing present then clear our statuses */
3576 dev_dbg(codec->dev, "Detected open circuit\n"); 3578 dev_dbg(codec->dev, "Detected open circuit\n");
3577 3579
3578 schedule_delayed_work(&wm8994->open_circuit_work, 3580 queue_delayed_work(system_power_efficient_wq,
3579 msecs_to_jiffies(2500)); 3581 &wm8994->open_circuit_work,
3582 msecs_to_jiffies(2500));
3580 return; 3583 return;
3581 } 3584 }
3582 3585
@@ -3690,8 +3693,9 @@ static irqreturn_t wm1811_jackdet_irq(int irq, void *data)
3690 WM1811_JACKDET_DB, 0); 3693 WM1811_JACKDET_DB, 0);
3691 3694
3692 delay = control->pdata.micdet_delay; 3695 delay = control->pdata.micdet_delay;
3693 schedule_delayed_work(&wm8994->mic_work, 3696 queue_delayed_work(system_power_efficient_wq,
3694 msecs_to_jiffies(delay)); 3697 &wm8994->mic_work,
3698 msecs_to_jiffies(delay));
3695 } else { 3699 } else {
3696 dev_dbg(codec->dev, "Jack not detected\n"); 3700 dev_dbg(codec->dev, "Jack not detected\n");
3697 3701
@@ -3940,8 +3944,9 @@ static irqreturn_t wm8958_mic_irq(int irq, void *data)
3940 id_delay = wm8994->wm8994->pdata.mic_id_delay; 3944 id_delay = wm8994->wm8994->pdata.mic_id_delay;
3941 3945
3942 if (wm8994->mic_detecting) 3946 if (wm8994->mic_detecting)
3943 schedule_delayed_work(&wm8994->mic_complete_work, 3947 queue_delayed_work(system_power_efficient_wq,
3944 msecs_to_jiffies(id_delay)); 3948 &wm8994->mic_complete_work,
3949 msecs_to_jiffies(id_delay));
3945 else 3950 else
3946 wm8958_button_det(codec, reg); 3951 wm8958_button_det(codec, reg);
3947 3952