ASoC: codecs: wcd934x: fix resource leaks on component remove
commit798590cc7d
upstream. Make sure to release allocated MBHC resources also on component remove. This is specifically needed to allow probe deferrals of the sound card which otherwise fails when reprobing the codec component. Fixes:9fb9b1690f
("ASoC: codecs: wcd934x: add mbhc support") Cc: stable@vger.kernel.org # 5.14 Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Signed-off-by: Johan Hovold <johan+linaro@kernel.org> Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20230705123018.30903-6-johan+linaro@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
bb241ae928
commit
8b11d2f0e5
|
@ -3044,6 +3044,17 @@ static int wcd934x_mbhc_init(struct snd_soc_component *component)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void wcd934x_mbhc_deinit(struct snd_soc_component *component)
|
||||||
|
{
|
||||||
|
struct wcd934x_codec *wcd = snd_soc_component_get_drvdata(component);
|
||||||
|
|
||||||
|
if (!wcd->mbhc)
|
||||||
|
return;
|
||||||
|
|
||||||
|
wcd_mbhc_deinit(wcd->mbhc);
|
||||||
|
}
|
||||||
|
|
||||||
static int wcd934x_comp_probe(struct snd_soc_component *component)
|
static int wcd934x_comp_probe(struct snd_soc_component *component)
|
||||||
{
|
{
|
||||||
struct wcd934x_codec *wcd = dev_get_drvdata(component->dev);
|
struct wcd934x_codec *wcd = dev_get_drvdata(component->dev);
|
||||||
|
@ -3077,6 +3088,7 @@ static void wcd934x_comp_remove(struct snd_soc_component *comp)
|
||||||
{
|
{
|
||||||
struct wcd934x_codec *wcd = dev_get_drvdata(comp->dev);
|
struct wcd934x_codec *wcd = dev_get_drvdata(comp->dev);
|
||||||
|
|
||||||
|
wcd934x_mbhc_deinit(comp);
|
||||||
wcd_clsh_ctrl_free(wcd->clsh_ctrl);
|
wcd_clsh_ctrl_free(wcd->clsh_ctrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue