[PATCH for-5.8] ASoC: amd: doesn't print error log if the return value is EPROBE_DEFER

Hui Wang hui.wang at canonical.com
Thu May 21 16:44:34 CEST 2020


The machine driver module and codec driver module don't have
dependency, it is possible that the machine driver is loaded ahead of
the codec driver, then the register_card() will fail and return
EPROBE_DEFER, in this case the driver should not print error log since
this is not a real failure.

For example, I saw this log from a machine with amd renoir audio:
acp_pdm_mach acp_pdm_mach.0: snd_soc_register_card(acp) failed: -517

After applying this patch, there is no error log to confuse users and
audio works after the codec driver is loaded.

Signed-off-by: Hui Wang <hui.wang at canonical.com>
---
 sound/soc/amd/acp-da7219-max98357a.c | 3 ++-
 sound/soc/amd/acp-rt5645.c           | 3 ++-
 sound/soc/amd/acp3x-rt5682-max9836.c | 3 ++-
 sound/soc/amd/renoir/acp3x-rn.c      | 7 ++++---
 4 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/sound/soc/amd/acp-da7219-max98357a.c b/sound/soc/amd/acp-da7219-max98357a.c
index 9414d7269c4f..a7e755a563e8 100644
--- a/sound/soc/amd/acp-da7219-max98357a.c
+++ b/sound/soc/amd/acp-da7219-max98357a.c
@@ -440,7 +440,8 @@ static int cz_probe(struct platform_device *pdev)
 	snd_soc_card_set_drvdata(card, machine);
 	ret = devm_snd_soc_register_card(&pdev->dev, &cz_card);
 	if (ret) {
-		dev_err(&pdev->dev,
+		if (ret != -EPROBE_DEFER)
+			dev_err(&pdev->dev,
 				"devm_snd_soc_register_card(%s) failed: %d\n",
 				cz_card.name, ret);
 		return ret;
diff --git a/sound/soc/amd/acp-rt5645.c b/sound/soc/amd/acp-rt5645.c
index 73b31f88a6b5..cffd24eae3a3 100644
--- a/sound/soc/amd/acp-rt5645.c
+++ b/sound/soc/amd/acp-rt5645.c
@@ -174,7 +174,8 @@ static int cz_probe(struct platform_device *pdev)
 	platform_set_drvdata(pdev, card);
 	ret = devm_snd_soc_register_card(&pdev->dev, &cz_card);
 	if (ret) {
-		dev_err(&pdev->dev,
+		if (ret != -EPROBE_DEFER)
+			dev_err(&pdev->dev,
 				"devm_snd_soc_register_card(%s) failed: %d\n",
 				cz_card.name, ret);
 		return ret;
diff --git a/sound/soc/amd/acp3x-rt5682-max9836.c b/sound/soc/amd/acp3x-rt5682-max9836.c
index e499c00e0c66..16bcaad9ead2 100644
--- a/sound/soc/amd/acp3x-rt5682-max9836.c
+++ b/sound/soc/amd/acp3x-rt5682-max9836.c
@@ -346,7 +346,8 @@ static int acp3x_probe(struct platform_device *pdev)
 
 	ret = devm_snd_soc_register_card(&pdev->dev, &acp3x_card);
 	if (ret) {
-		dev_err(&pdev->dev,
+		if (ret != -EPROBE_DEFER)
+			dev_err(&pdev->dev,
 				"devm_snd_soc_register_card(%s) failed: %d\n",
 				acp3x_card.name, ret);
 		return ret;
diff --git a/sound/soc/amd/renoir/acp3x-rn.c b/sound/soc/amd/renoir/acp3x-rn.c
index 306134b89a82..95b616fcad30 100644
--- a/sound/soc/amd/renoir/acp3x-rn.c
+++ b/sound/soc/amd/renoir/acp3x-rn.c
@@ -54,9 +54,10 @@ static int acp_probe(struct platform_device *pdev)
 	snd_soc_card_set_drvdata(card, machine);
 	ret = devm_snd_soc_register_card(&pdev->dev, card);
 	if (ret) {
-		dev_err(&pdev->dev,
-			"snd_soc_register_card(%s) failed: %d\n",
-			acp_card.name, ret);
+		if (ret != -EPROBE_DEFER)
+			dev_err(&pdev->dev,
+				"snd_soc_register_card(%s) failed: %d\n",
+				acp_card.name, ret);
 		return ret;
 	}
 	return 0;
-- 
2.17.1



More information about the Alsa-devel mailing list