ASoC: rockchip: Simplify probe error handling

bui duc phuc <phucduc.bui@gmail.com> says:

This series simplifies probe error handling across Rockchip ASoC drivers.

It replaces open-coded error handling with dev_err_probe() where
appropriate, removes redundant probe error messages, returns the
original error code directly, and fixes handling of -EPROBE_DEFER
returned by platform_get_irq_optional() in the Rockchip SAI driver
and devm_pinctrl_get() in the Rockchip I2S driver.

Compile tested only.

Link: https://patch.msgid.link/20260806052136.21034-1-phucduc.bui@gmail.com
This commit is contained in:
Mark Brown 2026-08-13 15:46:10 +01:00
commit 87331e2aa4
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0
8 changed files with 34 additions and 64 deletions

View File

@ -185,10 +185,8 @@ static int snd_rk_mc_probe(struct platform_device *pdev)
gpiod_set_consumer_name(machine->gpio_hp_en, "hp_en");
ret = snd_soc_of_parse_card_name(card, "rockchip,model");
if (ret) {
dev_err(card->dev, "SoC parse card name failed %d\n", ret);
if (ret)
return ret;
}
rk_dailink.codecs[0].of_node = of_parse_phandle(np,
"rockchip,audio-codec",
@ -207,10 +205,9 @@ static int snd_rk_mc_probe(struct platform_device *pdev)
}
ret = snd_soc_get_dai_name(&args, &rk_dailink.codecs[0].dai_name);
if (ret) {
dev_err(&pdev->dev, "Unable to get codec_dai_name\n");
return ret;
}
if (ret)
return dev_err_probe(&pdev->dev, ret,
"Unable to get codec_dai_name\n");
rk_dailink.cpus->of_node = of_parse_phandle(np, "rockchip,i2s-controller",
0);
@ -223,11 +220,8 @@ static int snd_rk_mc_probe(struct platform_device *pdev)
rk_dailink.platforms->of_node = rk_dailink.cpus->of_node;
ret = snd_soc_of_parse_audio_routing(card, "rockchip,routing");
if (ret) {
dev_err(&pdev->dev,
"Unable to parse 'rockchip,routing' property\n");
if (ret)
return ret;
}
snd_soc_card_set_drvdata(card, machine);

View File

@ -767,16 +767,14 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
/* try to prepare related clocks */
i2s->hclk = devm_clk_get_enabled(&pdev->dev, "i2s_hclk");
if (IS_ERR(i2s->hclk)) {
dev_err(&pdev->dev, "Can't retrieve i2s bus clock\n");
return PTR_ERR(i2s->hclk);
}
if (IS_ERR(i2s->hclk))
return dev_err_probe(&pdev->dev, PTR_ERR(i2s->hclk),
"Can't retrieve i2s bus clock\n");
i2s->mclk = devm_clk_get(&pdev->dev, "i2s_clk");
if (IS_ERR(i2s->mclk)) {
dev_err(&pdev->dev, "Can't retrieve i2s master clock\n");
return PTR_ERR(i2s->mclk);
}
if (IS_ERR(i2s->mclk))
return dev_err_probe(&pdev->dev, PTR_ERR(i2s->mclk),
"Can't retrieve i2s master clock\n");
regs = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
if (IS_ERR(regs))
@ -792,7 +790,11 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
i2s->bclk_ratio = 64;
i2s->pinctrl = devm_pinctrl_get(&pdev->dev);
if (!IS_ERR(i2s->pinctrl)) {
if (IS_ERR(i2s->pinctrl)) {
if (PTR_ERR(i2s->pinctrl) == -EPROBE_DEFER)
return -EPROBE_DEFER;
dev_dbg(&pdev->dev, "failed to find i2s pinctrl\n");
} else {
i2s->bclk_on = pinctrl_lookup_state(i2s->pinctrl, "bclk_on");
if (!IS_ERR_OR_NULL(i2s->bclk_on)) {
i2s->bclk_off = pinctrl_lookup_state(i2s->pinctrl, "bclk_off");
@ -801,8 +803,6 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
return -EINVAL;
}
}
} else {
dev_dbg(&pdev->dev, "failed to find i2s pinctrl\n");
}
i2s_pinctrl_select_bclk_off(i2s);
@ -831,16 +831,12 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
&rockchip_i2s_component,
dai, 1);
if (ret) {
dev_err(&pdev->dev, "Could not register DAI\n");
if (ret)
return ret;
}
ret = devm_snd_dmaengine_pcm_register(&pdev->dev, NULL, 0);
if (ret) {
dev_err(&pdev->dev, "Could not register PCM\n");
if (ret)
return ret;
}
return 0;
}

View File

@ -1263,16 +1263,14 @@ static int rockchip_i2s_tdm_probe(struct platform_device *pdev)
i2s_tdm->tx_reset = devm_reset_control_get_optional_exclusive(&pdev->dev,
"tx-m");
if (IS_ERR(i2s_tdm->tx_reset)) {
ret = PTR_ERR(i2s_tdm->tx_reset);
return dev_err_probe(i2s_tdm->dev, ret,
return dev_err_probe(i2s_tdm->dev, PTR_ERR(i2s_tdm->tx_reset),
"Error in tx-m reset control\n");
}
i2s_tdm->rx_reset = devm_reset_control_get_optional_exclusive(&pdev->dev,
"rx-m");
if (IS_ERR(i2s_tdm->rx_reset)) {
ret = PTR_ERR(i2s_tdm->rx_reset);
return dev_err_probe(i2s_tdm->dev, ret,
return dev_err_probe(i2s_tdm->dev, PTR_ERR(i2s_tdm->rx_reset),
"Error in rx-m reset control\n");
}
@ -1363,17 +1361,12 @@ static int rockchip_i2s_tdm_probe(struct platform_device *pdev)
ret = devm_snd_soc_register_component(&pdev->dev,
&rockchip_i2s_tdm_component,
i2s_tdm->dai, 1);
if (ret) {
dev_err(&pdev->dev, "Could not register DAI\n");
if (ret)
goto err_suspend;
}
ret = devm_snd_dmaengine_pcm_register(&pdev->dev, NULL, 0);
if (ret) {
dev_err(&pdev->dev, "Could not register PCM\n");
if (ret)
goto err_suspend;
}
return 0;

View File

@ -428,11 +428,8 @@ static int snd_rk_mc_probe(struct platform_device *pdev)
/* Parse card name. */
ret = snd_soc_of_parse_card_name(card, "rockchip,model");
if (ret) {
dev_err(&pdev->dev,
"Soc parse card name failed %d\n", ret);
if (ret)
return ret;
}
/* register the soc card */
ret = devm_snd_soc_register_card(&pdev->dev, card);

View File

@ -630,10 +630,8 @@ static int rockchip_pdm_probe(struct platform_device *pdev)
&rockchip_pdm_component,
&rockchip_pdm_dai, 1);
if (ret) {
dev_err(&pdev->dev, "could not register dai: %d\n", ret);
if (ret)
goto err_suspend;
}
rockchip_pdm_rxctrl(pdm, 0);
@ -642,10 +640,8 @@ static int rockchip_pdm_probe(struct platform_device *pdev)
goto err_suspend;
ret = devm_snd_dmaengine_pcm_register(&pdev->dev, NULL, 0);
if (ret) {
dev_err(&pdev->dev, "could not register pcm: %d\n", ret);
if (ret)
goto err_suspend;
}
return 0;

View File

@ -191,11 +191,8 @@ static int snd_rk_mc_probe(struct platform_device *pdev)
rk_dailink.platforms->of_node = rk_dailink.cpus->of_node;
ret = snd_soc_of_parse_card_name(card, "rockchip,model");
if (ret) {
dev_err(&pdev->dev,
"Soc parse card name failed %d\n", ret);
if (ret)
goto put_cpu_of_node;
}
ret = devm_snd_soc_register_card(&pdev->dev, card);
if (ret) {

View File

@ -1428,12 +1428,13 @@ static int rockchip_sai_probe(struct platform_device *pdev)
"Failed to initialize regmap\n");
irq = platform_get_irq_optional(pdev, 0);
if (irq == -EPROBE_DEFER)
return irq;
if (irq > 0) {
ret = devm_request_irq(&pdev->dev, irq, rockchip_sai_isr,
IRQF_SHARED, node->name, sai);
if (ret)
return dev_err_probe(&pdev->dev, ret,
"Failed to request irq %d\n", irq);
return ret;
} else {
dev_dbg(&pdev->dev, "Asked for an IRQ but got %d\n", irq);
}
@ -1456,7 +1457,7 @@ static int rockchip_sai_probe(struct platform_device *pdev)
ret = rockchip_sai_parse_paths(sai, node);
if (ret)
return dev_err_probe(&pdev->dev, ret, "Failed to parse paths\n");
return ret;
/*
* From here on, all register accesses need to be wrapped in
@ -1471,18 +1472,14 @@ static int rockchip_sai_probe(struct platform_device *pdev)
return dev_err_probe(&pdev->dev, ret, "Failed to resume device\n");
ret = devm_snd_dmaengine_pcm_register(&pdev->dev, NULL, 0);
if (ret) {
dev_err(&pdev->dev, "Failed to register PCM: %d\n", ret);
if (ret)
goto err_runtime_suspend;
}
ret = devm_snd_soc_register_component(&pdev->dev,
&rockchip_sai_component,
dai, 1);
if (ret) {
dev_err(&pdev->dev, "Failed to register component: %d\n", ret);
if (ret)
goto err_runtime_suspend;
}
pm_runtime_use_autosuspend(&pdev->dev);
pm_runtime_put(&pdev->dev);

View File

@ -396,13 +396,13 @@ static int rk_spdif_probe(struct platform_device *pdev)
ret = devm_snd_dmaengine_pcm_register(&pdev->dev, NULL, 0);
if (ret)
return dev_err_probe(&pdev->dev, ret, "Could not register PCM\n");
return ret;
ret = devm_snd_soc_register_component(&pdev->dev,
&rk_spdif_component,
&rk_spdif_dai, 1);
if (ret)
return dev_err_probe(&pdev->dev, ret, "Could not register DAI\n");
return ret;
return 0;
}