Commit b6052c3c authored by Christophe JAILLET's avatar Christophe JAILLET Committed by Mark Brown

ASoC: mediatek: mtk-btcvsd: Fix an error handling path in 'mtk_btcvsd_snd_probe()'

If an error occurs after a successful 'of_iomap()' call, it must be undone
by a corresponding 'iounmap()' call, as already done in the remove
function.

While at it, remove the useless initialization of 'ret' at the beginning of
the function.

Fixes: 4bd8597d ("ASoC: mediatek: add btcvsd driver")
Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/0c2ba562c3364e61bfbd5b3013a99dfa0d9045d7.1622989685.git.christophe.jaillet@wanadoo.frSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent d08c5b76
...@@ -1281,7 +1281,7 @@ static const struct snd_soc_component_driver mtk_btcvsd_snd_platform = { ...@@ -1281,7 +1281,7 @@ static const struct snd_soc_component_driver mtk_btcvsd_snd_platform = {
static int mtk_btcvsd_snd_probe(struct platform_device *pdev) static int mtk_btcvsd_snd_probe(struct platform_device *pdev)
{ {
int ret = 0; int ret;
int irq_id; int irq_id;
u32 offset[5] = {0, 0, 0, 0, 0}; u32 offset[5] = {0, 0, 0, 0, 0};
struct mtk_btcvsd_snd *btcvsd; struct mtk_btcvsd_snd *btcvsd;
...@@ -1337,7 +1337,8 @@ static int mtk_btcvsd_snd_probe(struct platform_device *pdev) ...@@ -1337,7 +1337,8 @@ static int mtk_btcvsd_snd_probe(struct platform_device *pdev)
btcvsd->bt_sram_bank2_base = of_iomap(dev->of_node, 1); btcvsd->bt_sram_bank2_base = of_iomap(dev->of_node, 1);
if (!btcvsd->bt_sram_bank2_base) { if (!btcvsd->bt_sram_bank2_base) {
dev_err(dev, "iomap bt_sram_bank2_base fail\n"); dev_err(dev, "iomap bt_sram_bank2_base fail\n");
return -EIO; ret = -EIO;
goto unmap_pkv_err;
} }
btcvsd->infra = syscon_regmap_lookup_by_phandle(dev->of_node, btcvsd->infra = syscon_regmap_lookup_by_phandle(dev->of_node,
...@@ -1345,7 +1346,8 @@ static int mtk_btcvsd_snd_probe(struct platform_device *pdev) ...@@ -1345,7 +1346,8 @@ static int mtk_btcvsd_snd_probe(struct platform_device *pdev)
if (IS_ERR(btcvsd->infra)) { if (IS_ERR(btcvsd->infra)) {
dev_err(dev, "cannot find infra controller: %ld\n", dev_err(dev, "cannot find infra controller: %ld\n",
PTR_ERR(btcvsd->infra)); PTR_ERR(btcvsd->infra));
return PTR_ERR(btcvsd->infra); ret = PTR_ERR(btcvsd->infra);
goto unmap_bank2_err;
} }
/* get offset */ /* get offset */
...@@ -1354,7 +1356,7 @@ static int mtk_btcvsd_snd_probe(struct platform_device *pdev) ...@@ -1354,7 +1356,7 @@ static int mtk_btcvsd_snd_probe(struct platform_device *pdev)
ARRAY_SIZE(offset)); ARRAY_SIZE(offset));
if (ret) { if (ret) {
dev_warn(dev, "%s(), get offset fail, ret %d\n", __func__, ret); dev_warn(dev, "%s(), get offset fail, ret %d\n", __func__, ret);
return ret; goto unmap_bank2_err;
} }
btcvsd->infra_misc_offset = offset[0]; btcvsd->infra_misc_offset = offset[0];
btcvsd->conn_bt_cvsd_mask = offset[1]; btcvsd->conn_bt_cvsd_mask = offset[1];
...@@ -1373,8 +1375,18 @@ static int mtk_btcvsd_snd_probe(struct platform_device *pdev) ...@@ -1373,8 +1375,18 @@ static int mtk_btcvsd_snd_probe(struct platform_device *pdev)
mtk_btcvsd_snd_set_state(btcvsd, btcvsd->tx, BT_SCO_STATE_IDLE); mtk_btcvsd_snd_set_state(btcvsd, btcvsd->tx, BT_SCO_STATE_IDLE);
mtk_btcvsd_snd_set_state(btcvsd, btcvsd->rx, BT_SCO_STATE_IDLE); mtk_btcvsd_snd_set_state(btcvsd, btcvsd->rx, BT_SCO_STATE_IDLE);
return devm_snd_soc_register_component(dev, &mtk_btcvsd_snd_platform, ret = devm_snd_soc_register_component(dev, &mtk_btcvsd_snd_platform,
NULL, 0); NULL, 0);
if (ret)
goto unmap_bank2_err;
return 0;
unmap_bank2_err:
iounmap(btcvsd->bt_sram_bank2_base);
unmap_pkv_err:
iounmap(btcvsd->bt_pkv_base);
return ret;
} }
static int mtk_btcvsd_snd_remove(struct platform_device *pdev) static int mtk_btcvsd_snd_remove(struct platform_device *pdev)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment