diff options
| author | Christophe JAILLET <[email protected]> | 2022-04-03 06:58:27 +0000 |
|---|---|---|
| committer | Mark Brown <[email protected]> | 2022-04-08 14:43:55 +0000 |
| commit | ddfd534528146660de75ee84d6db10f10e778f95 (patch) | |
| tree | a94f62db89c83ecb7e30d557a1e59dc15a2aa33f /sound/soc/codecs/lpass-tx-macro.c | |
| parent | Make headphone work on Huawei Matebook D15 (diff) | |
| download | kernel-ddfd534528146660de75ee84d6db10f10e778f95.tar.gz kernel-ddfd534528146660de75ee84d6db10f10e778f95.zip | |
ASoC: codecs: Fix an error handling path in (rx|tx|va)_macro_probe()
After a successful lpass_macro_pds_init() call, lpass_macro_pds_exit() must
be called.
Add the missing call in the error handling path of the probe function and
use it.
Fixes: 9e3d83c52844 ("ASoC: codecs: Add power domains support in digital macro codecs")
Signed-off-by: Christophe JAILLET <[email protected]>
Link: https://lore.kernel.org/r/5b5a015a9b1dc8011c6a4053fa49da1f2531e47c.1648969065.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Mark Brown <[email protected]>
Diffstat (limited to 'sound/soc/codecs/lpass-tx-macro.c')
| -rw-r--r-- | sound/soc/codecs/lpass-tx-macro.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/sound/soc/codecs/lpass-tx-macro.c b/sound/soc/codecs/lpass-tx-macro.c index 714a411d5337..55503ba480bb 100644 --- a/sound/soc/codecs/lpass-tx-macro.c +++ b/sound/soc/codecs/lpass-tx-macro.c @@ -1828,8 +1828,10 @@ static int tx_macro_probe(struct platform_device *pdev) return PTR_ERR(tx->pds); base = devm_platform_ioremap_resource(pdev, 0); - if (IS_ERR(base)) - return PTR_ERR(base); + if (IS_ERR(base)) { + ret = PTR_ERR(base); + goto err; + } /* Update defaults for lpass sc7280 */ if (of_device_is_compatible(np, "qcom,sc7280-lpass-tx-macro")) { @@ -1846,8 +1848,10 @@ static int tx_macro_probe(struct platform_device *pdev) } tx->regmap = devm_regmap_init_mmio(dev, base, &tx_regmap_config); - if (IS_ERR(tx->regmap)) - return PTR_ERR(tx->regmap); + if (IS_ERR(tx->regmap)) { + ret = PTR_ERR(tx->regmap); + goto err; + } dev_set_drvdata(dev, tx); @@ -1907,6 +1911,8 @@ err_mclk: err_dcodec: clk_disable_unprepare(tx->macro); err: + lpass_macro_pds_exit(tx->pds); + return ret; } |
