]> git.karo-electronics.de Git - linux-beck.git/commitdiff
ASoC: twl6040: Drop using devm_request_threaded_irq()
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Mon, 24 Jun 2013 13:42:03 +0000 (15:42 +0200)
committerMark Brown <broonie@linaro.org>
Mon, 24 Jun 2013 15:05:47 +0000 (16:05 +0100)
We need to free the irq at twl6040_remove() which is called when the machine
driver has been removed (the card has been removed).
If we fail to do that, next time when the machine driver is loaded the
codec's probe will fail since the irq has been already requested.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
sound/soc/codecs/twl6040.c

index 9b9a6e587610540c310c39387791f588592e1a4c..c2f2fdbfef961e4eb23e391f6cb737e29888c10c 100644 (file)
@@ -1143,7 +1143,7 @@ static int twl6040_probe(struct snd_soc_codec *codec)
 
        mutex_init(&priv->mutex);
 
-       ret = devm_request_threaded_irq(codec->dev, priv->plug_irq, NULL,
+       ret = request_threaded_irq(priv->plug_irq, NULL,
                                        twl6040_audio_handler, IRQF_NO_SUSPEND,
                                        "twl6040_irq_plug", codec);
        if (ret) {
@@ -1159,6 +1159,9 @@ static int twl6040_probe(struct snd_soc_codec *codec)
 
 static int twl6040_remove(struct snd_soc_codec *codec)
 {
+       struct twl6040_data *priv = snd_soc_codec_get_drvdata(codec);
+
+       free_irq(priv->plug_irq, codec);
        twl6040_set_bias_level(codec, SND_SOC_BIAS_OFF);
 
        return 0;