|
@@ -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)
|