|
@@ -1288,6 +1288,10 @@ static int omap_dma_slave_config(struct dma_chan *chan, struct dma_slave_config
|
|
|
cfg->dst_addr_width == DMA_SLAVE_BUSWIDTH_8_BYTES)
|
|
|
return -EINVAL;
|
|
|
|
|
|
+ if (cfg->src_maxburst > chan->device->max_burst ||
|
|
|
+ cfg->dst_maxburst > chan->device->max_burst)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
memcpy(&c->cfg, cfg, sizeof(c->cfg));
|
|
|
|
|
|
return 0;
|
|
@@ -1482,6 +1486,7 @@ static int omap_dma_probe(struct platform_device *pdev)
|
|
|
od->ddev.dst_addr_widths = OMAP_DMA_BUSWIDTHS;
|
|
|
od->ddev.directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV);
|
|
|
od->ddev.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST;
|
|
|
+ od->ddev.max_burst = SZ_16M - 1; /* CCEN: 24bit unsigned */
|
|
|
od->ddev.dev = &pdev->dev;
|
|
|
INIT_LIST_HEAD(&od->ddev.channels);
|
|
|
spin_lock_init(&od->lock);
|