diff options
author | M'boumba Cedric Madianga <cedric.madianga@gmail.com> | 2017-01-05 03:09:40 -0500 |
---|---|---|
committer | Vinod Koul <vinod.koul@intel.com> | 2017-01-10 00:20:47 -0500 |
commit | 5df4eb453cbdad34ea55c0ce984a376b33442aa1 (patch) | |
tree | 8477a1e3e0ebf825ab8e2e7688a136b4d7d1c243 | |
parent | 276b0046ff7765c1d42ed48c67b4b5f3b50ea461 (diff) |
dmaengine: stm32-dma: Add error messages if xlate fails
This patch adds some error messages when a slave device fails to request a
channel.
Signed-off-by: M'boumba Cedric Madianga <cedric.madianga@gmail.com>
Reviewed-by: Ludovic BARRE <ludovic.barre@st.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
-rw-r--r-- | drivers/dma/stm32-dma.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/drivers/dma/stm32-dma.c b/drivers/dma/stm32-dma.c index fc9738e0f3a3..4eacd9dd5710 100644 --- a/drivers/dma/stm32-dma.c +++ b/drivers/dma/stm32-dma.c | |||
@@ -987,30 +987,36 @@ static struct dma_chan *stm32_dma_of_xlate(struct of_phandle_args *dma_spec, | |||
987 | struct of_dma *ofdma) | 987 | struct of_dma *ofdma) |
988 | { | 988 | { |
989 | struct stm32_dma_device *dmadev = ofdma->of_dma_data; | 989 | struct stm32_dma_device *dmadev = ofdma->of_dma_data; |
990 | struct device *dev = dmadev->ddev.dev; | ||
990 | struct stm32_dma_cfg cfg; | 991 | struct stm32_dma_cfg cfg; |
991 | struct stm32_dma_chan *chan; | 992 | struct stm32_dma_chan *chan; |
992 | struct dma_chan *c; | 993 | struct dma_chan *c; |
993 | 994 | ||
994 | if (dma_spec->args_count < 3) | 995 | if (dma_spec->args_count < 4) { |
996 | dev_err(dev, "Bad number of cells\n"); | ||
995 | return NULL; | 997 | return NULL; |
998 | } | ||
996 | 999 | ||
997 | cfg.channel_id = dma_spec->args[0]; | 1000 | cfg.channel_id = dma_spec->args[0]; |
998 | cfg.request_line = dma_spec->args[1]; | 1001 | cfg.request_line = dma_spec->args[1]; |
999 | cfg.stream_config = dma_spec->args[2]; | 1002 | cfg.stream_config = dma_spec->args[2]; |
1000 | cfg.threshold = 0; | 1003 | cfg.threshold = dma_spec->args[3]; |
1001 | 1004 | ||
1002 | if ((cfg.channel_id >= STM32_DMA_MAX_CHANNELS) || (cfg.request_line >= | 1005 | if ((cfg.channel_id >= STM32_DMA_MAX_CHANNELS) || |
1003 | STM32_DMA_MAX_REQUEST_ID)) | 1006 | (cfg.request_line >= STM32_DMA_MAX_REQUEST_ID)) { |
1007 | dev_err(dev, "Bad channel and/or request id\n"); | ||
1004 | return NULL; | 1008 | return NULL; |
1005 | 1009 | } | |
1006 | if (dma_spec->args_count > 3) | ||
1007 | cfg.threshold = dma_spec->args[3]; | ||
1008 | 1010 | ||
1009 | chan = &dmadev->chan[cfg.channel_id]; | 1011 | chan = &dmadev->chan[cfg.channel_id]; |
1010 | 1012 | ||
1011 | c = dma_get_slave_channel(&chan->vchan.chan); | 1013 | c = dma_get_slave_channel(&chan->vchan.chan); |
1012 | if (c) | 1014 | if (!c) { |
1013 | stm32_dma_set_config(chan, &cfg); | 1015 | dev_err(dev, "No more channel avalaible\n"); |
1016 | return NULL; | ||
1017 | } | ||
1018 | |||
1019 | stm32_dma_set_config(chan, &cfg); | ||
1014 | 1020 | ||
1015 | return c; | 1021 | return c; |
1016 | } | 1022 | } |