summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlain Volmat <alain.volmat@foss.st.com>2025-12-18 13:48:27 +0300
committerMark Brown <broonie@kernel.org>2025-12-18 13:59:32 +0300
commitc266d19b7d4e5ed993ed9fca25ab9d11789c41ee (patch)
tree1f47112992d6899e3b7ff5d0aa9e9a78cc50ca68
parent8f0b4cce4481fb22653697cced8d0d04027cb1e8 (diff)
downloadlinux-c266d19b7d4e5ed993ed9fca25ab9d11789c41ee.tar.xz
spi: stm32: properly fail on dma_request_chan error
Correct handling of the dma_request_chan call in order to avoid misleading warn message if no DMA is provided within the device-tree and moreover fail if dma_request_chan has returned a valid error. Signed-off-by: Alain Volmat <alain.volmat@foss.st.com> Link: https://patch.msgid.link/20251218-stm32-spi-enhancements-v2-1-3b69901ca9fe@foss.st.com Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--drivers/spi/spi-stm32.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/spi/spi-stm32.c b/drivers/spi/spi-stm32.c
index 2c804c1aef98..40651b6050f6 100644
--- a/drivers/spi/spi-stm32.c
+++ b/drivers/spi/spi-stm32.c
@@ -2406,11 +2406,13 @@ static int stm32_spi_probe(struct platform_device *pdev)
spi->dma_tx = dma_request_chan(spi->dev, "tx");
if (IS_ERR(spi->dma_tx)) {
ret = PTR_ERR(spi->dma_tx);
- spi->dma_tx = NULL;
- if (ret == -EPROBE_DEFER)
+ if (ret == -ENODEV) {
+ dev_info(&pdev->dev, "tx dma disabled\n");
+ spi->dma_tx = NULL;
+ } else {
+ dev_err_probe(&pdev->dev, ret, "failed to request tx dma channel\n");
goto err_clk_disable;
-
- dev_warn(&pdev->dev, "failed to request tx dma channel\n");
+ }
} else {
ctrl->dma_tx = spi->dma_tx;
}
@@ -2418,11 +2420,13 @@ static int stm32_spi_probe(struct platform_device *pdev)
spi->dma_rx = dma_request_chan(spi->dev, "rx");
if (IS_ERR(spi->dma_rx)) {
ret = PTR_ERR(spi->dma_rx);
- spi->dma_rx = NULL;
- if (ret == -EPROBE_DEFER)
+ if (ret == -ENODEV) {
+ dev_info(&pdev->dev, "rx dma disabled\n");
+ spi->dma_rx = NULL;
+ } else {
+ dev_err_probe(&pdev->dev, ret, "failed to request rx dma channel\n");
goto err_dma_release;
-
- dev_warn(&pdev->dev, "failed to request rx dma channel\n");
+ }
} else {
ctrl->dma_rx = spi->dma_rx;
}