ASoC: TWL4030: Module unloading fix
The module unloading path had several problems: - it freed up the private structure twice - it freed up the codec structure, which was allocated as part of the private structure - it did not freed up the reg_cache - it did not unregistered the dais and the codec Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
8c1264740e
commit
cb67286d66
|
@ -2152,8 +2152,6 @@ static int twl4030_soc_remove(struct platform_device *pdev)
|
||||||
twl4030_set_bias_level(codec, SND_SOC_BIAS_OFF);
|
twl4030_set_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||||
snd_soc_free_pcms(socdev);
|
snd_soc_free_pcms(socdev);
|
||||||
snd_soc_dapm_free(socdev);
|
snd_soc_dapm_free(socdev);
|
||||||
kfree(codec->private_data);
|
|
||||||
kfree(codec);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -2237,6 +2235,9 @@ static int __devexit twl4030_codec_remove(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct twl4030_priv *twl4030 = platform_get_drvdata(pdev);
|
struct twl4030_priv *twl4030 = platform_get_drvdata(pdev);
|
||||||
|
|
||||||
|
snd_soc_unregister_dais(&twl4030_dai[0], ARRAY_SIZE(twl4030_dai));
|
||||||
|
snd_soc_unregister_codec(&twl4030->codec);
|
||||||
|
kfree(twl4030->codec.reg_cache);
|
||||||
kfree(twl4030);
|
kfree(twl4030);
|
||||||
|
|
||||||
twl4030_codec = NULL;
|
twl4030_codec = NULL;
|
||||||
|
|
Loading…
Reference in New Issue