aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorPeter Ujfalusi <peter.ujfalusi@ti.com>2013-06-24 09:42:03 -0400
committerMark Brown <broonie@linaro.org>2013-06-24 11:05:47 -0400
commitf60596d61fc238befd169ea394ba6a458fafd774 (patch)
treee06808bb04bc3fef4ec71ac5fc394011859daad0 /sound
parent9e895ace5d82df8929b16f58e9f515f6d54ab82d (diff)
ASoC: twl6040: Drop using devm_request_threaded_irq()
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>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/codecs/twl6040.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sound/soc/codecs/twl6040.c b/sound/soc/codecs/twl6040.c
index 9b9a6e587610..c2f2fdbfef96 100644
--- a/sound/soc/codecs/twl6040.c
+++ b/sound/soc/codecs/twl6040.c
@@ -1143,7 +1143,7 @@ static int twl6040_probe(struct snd_soc_codec *codec)
1143 1143
1144 mutex_init(&priv->mutex); 1144 mutex_init(&priv->mutex);
1145 1145
1146 ret = devm_request_threaded_irq(codec->dev, priv->plug_irq, NULL, 1146 ret = request_threaded_irq(priv->plug_irq, NULL,
1147 twl6040_audio_handler, IRQF_NO_SUSPEND, 1147 twl6040_audio_handler, IRQF_NO_SUSPEND,
1148 "twl6040_irq_plug", codec); 1148 "twl6040_irq_plug", codec);
1149 if (ret) { 1149 if (ret) {
@@ -1159,6 +1159,9 @@ static int twl6040_probe(struct snd_soc_codec *codec)
1159 1159
1160static int twl6040_remove(struct snd_soc_codec *codec) 1160static int twl6040_remove(struct snd_soc_codec *codec)
1161{ 1161{
1162 struct twl6040_data *priv = snd_soc_codec_get_drvdata(codec);
1163
1164 free_irq(priv->plug_irq, codec);
1162 twl6040_set_bias_level(codec, SND_SOC_BIAS_OFF); 1165 twl6040_set_bias_level(codec, SND_SOC_BIAS_OFF);
1163 1166
1164 return 0; 1167 return 0;