diff options
author | Mark Brown <broonie@linaro.org> | 2013-07-18 17:47:02 -0400 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-07-19 07:25:28 -0400 |
commit | 68defe585f333223f0f3733340136d1b02003062 (patch) | |
tree | 6ffa32b361ef52cc7b39edc7fca8cbf3c1c83559 | |
parent | 57e265c8d71fb94c130bfb31f589cc9e97fb3928 (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.c | 23 |
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 | ||