aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/dma
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/dma')
-rw-r--r--drivers/dma/dw/core.c3
-rw-r--r--drivers/dma/dw/platform.c4
-rw-r--r--drivers/dma/dw/regs.h2
3 files changed, 5 insertions, 4 deletions
diff --git a/drivers/dma/dw/core.c b/drivers/dma/dw/core.c
index fcb9a916e6f6..0469d8eda253 100644
--- a/drivers/dma/dw/core.c
+++ b/drivers/dma/dw/core.c
@@ -1562,7 +1562,8 @@ int dw_dma_probe(struct dw_dma_chip *chip, struct dw_dma_platform_data *pdata)
1562 } 1562 }
1563 } else { 1563 } else {
1564 dw->nr_masters = pdata->nr_masters; 1564 dw->nr_masters = pdata->nr_masters;
1565 memcpy(dw->data_width, pdata->data_width, 4); 1565 for (i = 0; i < dw->nr_masters; i++)
1566 dw->data_width[i] = pdata->data_width[i];
1566 } 1567 }
1567 1568
1568 /* Calculate all channel mask before DMA setup */ 1569 /* Calculate all channel mask before DMA setup */
diff --git a/drivers/dma/dw/platform.c b/drivers/dma/dw/platform.c
index a630161473a4..aaff37f53523 100644
--- a/drivers/dma/dw/platform.c
+++ b/drivers/dma/dw/platform.c
@@ -99,7 +99,7 @@ dw_dma_parse_dt(struct platform_device *pdev)
99{ 99{
100 struct device_node *np = pdev->dev.of_node; 100 struct device_node *np = pdev->dev.of_node;
101 struct dw_dma_platform_data *pdata; 101 struct dw_dma_platform_data *pdata;
102 u32 tmp, arr[4]; 102 u32 tmp, arr[DW_DMA_MAX_NR_MASTERS];
103 103
104 if (!np) { 104 if (!np) {
105 dev_err(&pdev->dev, "Missing DT data\n"); 105 dev_err(&pdev->dev, "Missing DT data\n");
@@ -126,7 +126,7 @@ dw_dma_parse_dt(struct platform_device *pdev)
126 pdata->block_size = tmp; 126 pdata->block_size = tmp;
127 127
128 if (!of_property_read_u32(np, "dma-masters", &tmp)) { 128 if (!of_property_read_u32(np, "dma-masters", &tmp)) {
129 if (tmp > 4) 129 if (tmp > DW_DMA_MAX_NR_MASTERS)
130 return NULL; 130 return NULL;
131 131
132 pdata->nr_masters = tmp; 132 pdata->nr_masters = tmp;
diff --git a/drivers/dma/dw/regs.h b/drivers/dma/dw/regs.h
index 254a1db03680..241ff2b1402b 100644
--- a/drivers/dma/dw/regs.h
+++ b/drivers/dma/dw/regs.h
@@ -285,7 +285,7 @@ struct dw_dma {
285 285
286 /* hardware configuration */ 286 /* hardware configuration */
287 unsigned char nr_masters; 287 unsigned char nr_masters;
288 unsigned char data_width[4]; 288 unsigned char data_width[DW_DMA_MAX_NR_MASTERS];
289}; 289};
290 290
291static inline struct dw_dma_regs __iomem *__dw_regs(struct dw_dma *dw) 291static inline struct dw_dma_regs __iomem *__dw_regs(struct dw_dma *dw)