diff options
author | Srinivas Kandagatla <srinivas.kandagatla@linaro.org> | 2020-11-18 15:26:24 +0000 |
---|---|---|
committer | Srinivas Kandagatla <srinivas.kandagatla@linaro.org> | 2020-11-18 16:07:25 +0000 |
commit | 07c8406f66d963fa0c4bc1792404268011a54501 (patch) | |
tree | 7c243e4152cf6e78aac61fb66b704d25113b203f | |
parent | 56cc6f1ae1903ac1c2a73841683356f07a366f13 (diff) |
ASoC: codecs: wcd934x: unregister clock provider during remove
mclk clock provider needs to be unregistered on driver remove so that
the driver does not fail to reload.
Fixes: a61f3b4f476e ("ASoC: wcd934x: add support to wcd9340/wcd9341 codec")
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
-rw-r--r-- | sound/soc/codecs/wcd934x.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sound/soc/codecs/wcd934x.c b/sound/soc/codecs/wcd934x.c index 40f682f5dab8..3197c701cdc5 100644 --- a/sound/soc/codecs/wcd934x.c +++ b/sound/soc/codecs/wcd934x.c @@ -2112,7 +2112,7 @@ static struct clk *wcd934x_register_mclk_output(struct wcd934x_codec *wcd) wcd->hw.init = &init; hw = &wcd->hw; - ret = clk_hw_register(wcd->dev->parent, hw); + ret = devm_clk_hw_register(wcd->dev->parent, hw); if (ret) return ERR_PTR(ret); @@ -5050,6 +5050,13 @@ static int wcd934x_codec_probe(struct platform_device *pdev) wcd934x_slim_dais, ARRAY_SIZE(wcd934x_slim_dais)); } +static int wcd934x_codec_remove(struct platform_device *pdev) +{ + of_clk_del_provider(pdev->dev.of_node); + + return 0; +} + static const struct platform_device_id wcd934x_driver_id[] = { { @@ -5061,6 +5068,7 @@ MODULE_DEVICE_TABLE(platform, wcd934x_driver_id); static struct platform_driver wcd934x_codec_driver = { .probe = &wcd934x_codec_probe, + .remove = wcd934x_codec_remove, .id_table = wcd934x_driver_id, .driver = { .name = "wcd934x-codec", |