ASoC: arizona: Free speaker thermal IRQs in CODEC remove
The thermal warning IRQs for the speaker are requested in CODEC probe but never freed. This patch frees them in CODEC remove. Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
f55532a0c0
commit
54dca7015a
|
@ -249,6 +249,18 @@ int arizona_init_spk(struct snd_soc_codec *codec)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(arizona_init_spk);
|
||||
|
||||
int arizona_free_spk(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
struct arizona *arizona = priv->arizona;
|
||||
|
||||
arizona_free_irq(arizona, ARIZONA_IRQ_SPK_OVERHEAT_WARN, arizona);
|
||||
arizona_free_irq(arizona, ARIZONA_IRQ_SPK_OVERHEAT, arizona);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(arizona_free_spk);
|
||||
|
||||
static const struct snd_soc_dapm_route arizona_mono_routes[] = {
|
||||
{ "OUT1R", NULL, "OUT1L" },
|
||||
{ "OUT2R", NULL, "OUT2L" },
|
||||
|
|
|
@ -307,6 +307,8 @@ extern int arizona_init_spk(struct snd_soc_codec *codec);
|
|||
extern int arizona_init_gpio(struct snd_soc_codec *codec);
|
||||
extern int arizona_init_mono(struct snd_soc_codec *codec);
|
||||
|
||||
extern int arizona_free_spk(struct snd_soc_codec *codec);
|
||||
|
||||
extern int arizona_init_dai(struct arizona_priv *priv, int dai);
|
||||
|
||||
int arizona_set_output_mode(struct snd_soc_codec *codec, int output,
|
||||
|
|
|
@ -1108,6 +1108,9 @@ static int cs47l24_codec_remove(struct snd_soc_codec *codec)
|
|||
priv->core.arizona->dapm = NULL;
|
||||
|
||||
arizona_free_irq(arizona, ARIZONA_IRQ_DSP_IRQ1, priv);
|
||||
|
||||
arizona_free_spk(codec);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1960,6 +1960,8 @@ static int wm5102_codec_remove(struct snd_soc_codec *codec)
|
|||
|
||||
priv->core.arizona->dapm = NULL;
|
||||
|
||||
arizona_free_spk(codec);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -2298,6 +2298,8 @@ static int wm5110_codec_remove(struct snd_soc_codec *codec)
|
|||
|
||||
arizona_free_irq(arizona, ARIZONA_IRQ_DSP_IRQ1, priv);
|
||||
|
||||
arizona_free_spk(codec);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1072,6 +1072,8 @@ static int wm8997_codec_remove(struct snd_soc_codec *codec)
|
|||
|
||||
priv->core.arizona->dapm = NULL;
|
||||
|
||||
arizona_free_spk(codec);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1324,6 +1324,8 @@ static int wm8998_codec_remove(struct snd_soc_codec *codec)
|
|||
|
||||
priv->core.arizona->dapm = NULL;
|
||||
|
||||
arizona_free_spk(codec);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue