diff options
Diffstat (limited to 'drivers/dma')
-rw-r--r-- | drivers/dma/dw/core.c | 3 | ||||
-rw-r--r-- | drivers/dma/dw/platform.c | 4 | ||||
-rw-r--r-- | drivers/dma/dw/regs.h | 2 |
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 | ||
291 | static inline struct dw_dma_regs __iomem *__dw_regs(struct dw_dma *dw) | 291 | static inline struct dw_dma_regs __iomem *__dw_regs(struct dw_dma *dw) |