diff options
| -rw-r--r-- | drivers/dma/edma.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/dma/edma.c b/drivers/dma/edma.c index 3879f80a4815..6970355abdc9 100644 --- a/drivers/dma/edma.c +++ b/drivers/dma/edma.c | |||
| @@ -891,6 +891,10 @@ static int edma_slave_config(struct dma_chan *chan, | |||
| 891 | cfg->dst_addr_width == DMA_SLAVE_BUSWIDTH_8_BYTES) | 891 | cfg->dst_addr_width == DMA_SLAVE_BUSWIDTH_8_BYTES) |
| 892 | return -EINVAL; | 892 | return -EINVAL; |
| 893 | 893 | ||
| 894 | if (cfg->src_maxburst > chan->device->max_burst || | ||
| 895 | cfg->dst_maxburst > chan->device->max_burst) | ||
| 896 | return -EINVAL; | ||
| 897 | |||
| 894 | memcpy(&echan->cfg, cfg, sizeof(echan->cfg)); | 898 | memcpy(&echan->cfg, cfg, sizeof(echan->cfg)); |
| 895 | 899 | ||
| 896 | return 0; | 900 | return 0; |
| @@ -1855,6 +1859,7 @@ static void edma_dma_init(struct edma_cc *ecc, bool legacy_mode) | |||
| 1855 | s_ddev->dst_addr_widths = EDMA_DMA_BUSWIDTHS; | 1859 | s_ddev->dst_addr_widths = EDMA_DMA_BUSWIDTHS; |
| 1856 | s_ddev->directions |= (BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV)); | 1860 | s_ddev->directions |= (BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV)); |
| 1857 | s_ddev->residue_granularity = DMA_RESIDUE_GRANULARITY_BURST; | 1861 | s_ddev->residue_granularity = DMA_RESIDUE_GRANULARITY_BURST; |
| 1862 | s_ddev->max_burst = SZ_32K - 1; /* CIDX: 16bit signed */ | ||
| 1858 | 1863 | ||
| 1859 | s_ddev->dev = ecc->dev; | 1864 | s_ddev->dev = ecc->dev; |
| 1860 | INIT_LIST_HEAD(&s_ddev->channels); | 1865 | INIT_LIST_HEAD(&s_ddev->channels); |
