From 3dd19d0b73ea68522c64ef101639ef480748073b Mon Sep 17 00:00:00 2001 From: Karthikeyan Mani Date: Thu, 6 Jun 2019 14:10:53 -0700 Subject: [PATCH] asoc: wcd938x: initialize micb lock mutex Micb lock which is used to synchronize micbias control api is not initialized causing spin lock errors. Initialize the mutex to avoid the issue. Change-Id: I98c50fec8e8531333de643a85433d3e5973bfd14 Signed-off-by: Karthikeyan Mani --- asoc/codecs/wcd938x/wcd938x.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/asoc/codecs/wcd938x/wcd938x.c b/asoc/codecs/wcd938x/wcd938x.c index bf285052f7df..5141b3b0d957 100644 --- a/asoc/codecs/wcd938x/wcd938x.c +++ b/asoc/codecs/wcd938x/wcd938x.c @@ -2923,9 +2923,10 @@ static int wcd938x_probe(struct platform_device *pdev) goto err; } + mutex_init(&wcd938x->micb_lock); ret = wcd938x_add_slave_components(dev, &match); if (ret) - goto err; + goto err_lock_init; wcd938x_reset(dev); @@ -2934,13 +2935,19 @@ static int wcd938x_probe(struct platform_device *pdev) return component_master_add_with_match(dev, &wcd938x_comp_ops, match); +err_lock_init: + mutex_destroy(&wcd938x->micb_lock); err: return ret; } static int wcd938x_remove(struct platform_device *pdev) { + struct wcd938x_priv *wcd938x = NULL; + + wcd938x = platform_get_drvdata(pdev); component_master_del(&pdev->dev, &wcd938x_comp_ops); + mutex_destroy(&wcd938x->micb_lock); dev_set_drvdata(&pdev->dev, NULL); return 0;