summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2026-09-08 15:17:58 +0100
committerMark Brown <broonie@kernel.org>2026-09-08 15:17:58 +0100
commit5bb30783e4e5782349b5bfafbaf982bf86285302 (patch)
tree0caf10506ad4447c135f84a0203e0c13a8c4d7b8
parentab52afd2f89dff1373d4f98be5787f0fc8f075ef (diff)
parent1e5e1344b36e1acc62bdbca192e6ae317909725f (diff)
downloadlinux-next-5bb30783e4e5782349b5bfafbaf982bf86285302.tar.gz
linux-next-5bb30783e4e5782349b5bfafbaf982bf86285302.zip
ASoC: mediatek: mt6797: Fix error handling
bui duc phuc <phucduc.bui@gmail.com> says: Hi all, This series fixes and cleans up error handling in the MT6797 ASoC driver. Compile tested only. Link: https://patch.msgid.link/20260821122840.41266-1-phucduc.bui@gmail.com
-rw-r--r--sound/soc/mediatek/mt6797/mt6797-afe-clk.c23
-rw-r--r--sound/soc/mediatek/mt6797/mt6797-afe-pcm.c8
2 files changed, 11 insertions, 20 deletions
diff --git a/sound/soc/mediatek/mt6797/mt6797-afe-clk.c b/sound/soc/mediatek/mt6797/mt6797-afe-clk.c
index 6f3e6acfcfab..2326496f8b27 100644
--- a/sound/soc/mediatek/mt6797/mt6797-afe-clk.c
+++ b/sound/soc/mediatek/mt6797/mt6797-afe-clk.c
@@ -43,12 +43,9 @@ int mt6797_init_clock(struct mtk_base_afe *afe)
for (i = 0; i < CLK_NUM; i++) {
afe_priv->clk[i] = devm_clk_get(afe->dev, aud_clks[i]);
- if (IS_ERR(afe_priv->clk[i])) {
- dev_err(afe->dev, "%s(), devm_clk_get %s fail, ret %ld\n",
- __func__, aud_clks[i],
- PTR_ERR(afe_priv->clk[i]));
- return PTR_ERR(afe_priv->clk[i]);
- }
+ if (IS_ERR(afe_priv->clk[i]))
+ return dev_err_probe(afe->dev, PTR_ERR(afe_priv->clk[i]),
+ "failed to get clock %s\n", aud_clks[i]);
}
return 0;
@@ -63,21 +60,21 @@ int mt6797_afe_enable_clock(struct mtk_base_afe *afe)
if (ret) {
dev_err(afe->dev, "%s(), clk_prepare_enable %s fail %d\n",
__func__, aud_clks[CLK_INFRA_SYS_AUD], ret);
- goto CLK_INFRA_SYS_AUDIO_ERR;
+ return ret;
}
ret = clk_prepare_enable(afe_priv->clk[CLK_INFRA_SYS_AUD_26M]);
if (ret) {
dev_err(afe->dev, "%s(), clk_prepare_enable %s fail %d\n",
__func__, aud_clks[CLK_INFRA_SYS_AUD_26M], ret);
- goto CLK_INFRA_SYS_AUD_26M_ERR;
+ goto CLK_INFRA_SYS_AUDIO_ERR;
}
ret = clk_prepare_enable(afe_priv->clk[CLK_TOP_MUX_AUD]);
if (ret) {
dev_err(afe->dev, "%s(), clk_prepare_enable %s fail %d\n",
__func__, aud_clks[CLK_TOP_MUX_AUD], ret);
- goto CLK_MUX_AUDIO_ERR;
+ goto CLK_INFRA_SYS_AUD_26M_ERR;
}
ret = clk_set_parent(afe_priv->clk[CLK_TOP_MUX_AUD],
@@ -93,13 +90,11 @@ int mt6797_afe_enable_clock(struct mtk_base_afe *afe)
if (ret) {
dev_err(afe->dev, "%s(), clk_prepare_enable %s fail %d\n",
__func__, aud_clks[CLK_TOP_MUX_AUD_BUS], ret);
- goto CLK_MUX_AUDIO_INTBUS_ERR;
+ goto CLK_MUX_AUDIO_ERR;
}
- return ret;
+ return 0;
-CLK_MUX_AUDIO_INTBUS_ERR:
- clk_disable_unprepare(afe_priv->clk[CLK_TOP_MUX_AUD_BUS]);
CLK_MUX_AUDIO_ERR:
clk_disable_unprepare(afe_priv->clk[CLK_TOP_MUX_AUD]);
CLK_INFRA_SYS_AUD_26M_ERR:
@@ -107,7 +102,7 @@ CLK_INFRA_SYS_AUD_26M_ERR:
CLK_INFRA_SYS_AUDIO_ERR:
clk_disable_unprepare(afe_priv->clk[CLK_INFRA_SYS_AUD]);
- return 0;
+ return ret;
}
int mt6797_afe_disable_clock(struct mtk_base_afe *afe)
diff --git a/sound/soc/mediatek/mt6797/mt6797-afe-pcm.c b/sound/soc/mediatek/mt6797/mt6797-afe-pcm.c
index f62a32f2f2b6..dfe67727fe47 100644
--- a/sound/soc/mediatek/mt6797/mt6797-afe-pcm.c
+++ b/sound/soc/mediatek/mt6797/mt6797-afe-pcm.c
@@ -754,10 +754,8 @@ static int mt6797_afe_pcm_dev_probe(struct platform_device *pdev)
/* initial audio related clock */
ret = mt6797_init_clock(afe);
- if (ret) {
- dev_err(dev, "init clock error\n");
+ if (ret)
return ret;
- }
/* regmap init */
afe->base_addr = devm_platform_ioremap_resource(pdev, 0);
@@ -800,10 +798,8 @@ static int mt6797_afe_pcm_dev_probe(struct platform_device *pdev)
ret = devm_request_irq(dev, irq_id, mt6797_afe_irq_handler,
IRQF_TRIGGER_NONE, "asys-isr", (void *)afe);
- if (ret) {
- dev_err(dev, "could not request_irq for asys-isr\n");
+ if (ret)
return ret;
- }
/* init sub_dais */
INIT_LIST_HEAD(&afe->sub_dais);