ASoC: Hook up DC servo completion IRQ for WM8994 and WM8958
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 12 Jul 2011 06:47:17 +0000 (15:47 +0900)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 13 Jul 2011 15:38:14 +0000 (00:38 +0900)
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/codecs/wm8994.c

index 3fd7422df408c856172567be03818e489a7f19d0..d2dcaa29c7cad99c7d0b1ae9984c82d5ce51cc1b 100644 (file)
@@ -2932,6 +2932,12 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
                break;
        }
 
+       ret = wm8994_request_irq(codec->control_data, WM8994_IRQ_DCS_DONE,
+                                wm_hubs_dcs_done, "DC servo done",
+                                &wm8994->hubs);
+       if (ret == 0)
+               wm8994->hubs.dcs_done_irq = true;
+
        switch (control->type) {
        case WM8994:
                if (wm8994->micdet_irq) {
@@ -3173,6 +3179,8 @@ err_irq:
        wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC1_SHRT, wm8994);
        if (wm8994->micdet_irq)
                free_irq(wm8994->micdet_irq, wm8994);
+       wm8994_free_irq(codec->control_data, WM8994_IRQ_DCS_DONE,
+                       &wm8994->hubs);
 err:
        kfree(wm8994);
        return ret;
@@ -3187,6 +3195,9 @@ static int  wm8994_codec_remove(struct snd_soc_codec *codec)
 
        pm_runtime_disable(codec->dev);
 
+       wm8994_free_irq(codec->control_data, WM8994_IRQ_DCS_DONE,
+                       &wm8994->hubs);
+
        switch (control->type) {
        case WM8994:
                if (wm8994->micdet_irq)