aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorM'boumba Cedric Madianga <cedric.madianga@gmail.com>2017-01-05 03:09:40 -0500
committerVinod Koul <vinod.koul@intel.com>2017-01-10 00:20:47 -0500
commit5df4eb453cbdad34ea55c0ce984a376b33442aa1 (patch)
tree8477a1e3e0ebf825ab8e2e7688a136b4d7d1c243
parent276b0046ff7765c1d42ed48c67b4b5f3b50ea461 (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.c24
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}