Commit 04dd656e authored by Olivier Moysan's avatar Olivier Moysan Committed by Mark Brown

ASoC: stm32: i2s: improve error management on probe deferral

Do not print an error trace when deferring probe for I2S driver.
Signed-off-by: default avatarEtienne Carriere <etienne.carriere@st.com>
Signed-off-by: default avatarOlivier Moysan <olivier.moysan@st.com>
Link: https://lore.kernel.org/r/20200203100814.22944-7-olivier.moysan@st.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent d49bd5ed
...@@ -831,25 +831,33 @@ static int stm32_i2s_parse_dt(struct platform_device *pdev, ...@@ -831,25 +831,33 @@ static int stm32_i2s_parse_dt(struct platform_device *pdev,
/* Get clocks */ /* Get clocks */
i2s->pclk = devm_clk_get(&pdev->dev, "pclk"); i2s->pclk = devm_clk_get(&pdev->dev, "pclk");
if (IS_ERR(i2s->pclk)) { if (IS_ERR(i2s->pclk)) {
dev_err(&pdev->dev, "Could not get pclk\n"); if (PTR_ERR(i2s->pclk) != -EPROBE_DEFER)
dev_err(&pdev->dev, "Could not get pclk: %ld\n",
PTR_ERR(i2s->pclk));
return PTR_ERR(i2s->pclk); return PTR_ERR(i2s->pclk);
} }
i2s->i2sclk = devm_clk_get(&pdev->dev, "i2sclk"); i2s->i2sclk = devm_clk_get(&pdev->dev, "i2sclk");
if (IS_ERR(i2s->i2sclk)) { if (IS_ERR(i2s->i2sclk)) {
dev_err(&pdev->dev, "Could not get i2sclk\n"); if (PTR_ERR(i2s->i2sclk) != -EPROBE_DEFER)
dev_err(&pdev->dev, "Could not get i2sclk: %ld\n",
PTR_ERR(i2s->i2sclk));
return PTR_ERR(i2s->i2sclk); return PTR_ERR(i2s->i2sclk);
} }
i2s->x8kclk = devm_clk_get(&pdev->dev, "x8k"); i2s->x8kclk = devm_clk_get(&pdev->dev, "x8k");
if (IS_ERR(i2s->x8kclk)) { if (IS_ERR(i2s->x8kclk)) {
dev_err(&pdev->dev, "missing x8k parent clock\n"); if (PTR_ERR(i2s->x8kclk) != -EPROBE_DEFER)
dev_err(&pdev->dev, "Could not get x8k parent clock: %ld\n",
PTR_ERR(i2s->x8kclk));
return PTR_ERR(i2s->x8kclk); return PTR_ERR(i2s->x8kclk);
} }
i2s->x11kclk = devm_clk_get(&pdev->dev, "x11k"); i2s->x11kclk = devm_clk_get(&pdev->dev, "x11k");
if (IS_ERR(i2s->x11kclk)) { if (IS_ERR(i2s->x11kclk)) {
dev_err(&pdev->dev, "missing x11k parent clock\n"); if (PTR_ERR(i2s->x11kclk) != -EPROBE_DEFER)
dev_err(&pdev->dev, "Could not get x11k parent clock: %ld\n",
PTR_ERR(i2s->x11kclk));
return PTR_ERR(i2s->x11kclk); return PTR_ERR(i2s->x11kclk);
} }
...@@ -907,7 +915,9 @@ static int stm32_i2s_probe(struct platform_device *pdev) ...@@ -907,7 +915,9 @@ static int stm32_i2s_probe(struct platform_device *pdev)
i2s->regmap = devm_regmap_init_mmio_clk(&pdev->dev, "pclk", i2s->regmap = devm_regmap_init_mmio_clk(&pdev->dev, "pclk",
i2s->base, i2s->regmap_conf); i2s->base, i2s->regmap_conf);
if (IS_ERR(i2s->regmap)) { if (IS_ERR(i2s->regmap)) {
dev_err(&pdev->dev, "regmap init failed\n"); if (PTR_ERR(i2s->regmap) != -EPROBE_DEFER)
dev_err(&pdev->dev, "Regmap init error %ld\n",
PTR_ERR(i2s->regmap));
return PTR_ERR(i2s->regmap); return PTR_ERR(i2s->regmap);
} }
...@@ -918,8 +928,11 @@ static int stm32_i2s_probe(struct platform_device *pdev) ...@@ -918,8 +928,11 @@ static int stm32_i2s_probe(struct platform_device *pdev)
ret = devm_snd_dmaengine_pcm_register(&pdev->dev, ret = devm_snd_dmaengine_pcm_register(&pdev->dev,
&stm32_i2s_pcm_config, 0); &stm32_i2s_pcm_config, 0);
if (ret) if (ret) {
if (ret != -EPROBE_DEFER)
dev_err(&pdev->dev, "PCM DMA register error %d\n", ret);
return ret; return ret;
}
/* Set SPI/I2S in i2s mode */ /* Set SPI/I2S in i2s mode */
ret = regmap_update_bits(i2s->regmap, STM32_I2S_CGFR_REG, ret = regmap_update_bits(i2s->regmap, STM32_I2S_CGFR_REG,
......
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