|
@@ -684,6 +684,10 @@ MODULE_DEVICE_TABLE(of, sh_dmae_of_match);
|
|
|
|
|
|
static int sh_dmae_probe(struct platform_device *pdev)
|
|
|
{
|
|
|
+ const enum dma_slave_buswidth widths =
|
|
|
+ DMA_SLAVE_BUSWIDTH_1_BYTE | DMA_SLAVE_BUSWIDTH_2_BYTES |
|
|
|
+ DMA_SLAVE_BUSWIDTH_4_BYTES | DMA_SLAVE_BUSWIDTH_8_BYTES |
|
|
|
+ DMA_SLAVE_BUSWIDTH_16_BYTES | DMA_SLAVE_BUSWIDTH_32_BYTES;
|
|
|
const struct sh_dmae_pdata *pdata;
|
|
|
unsigned long chan_flag[SH_DMAE_MAX_CHANNELS] = {};
|
|
|
int chan_irq[SH_DMAE_MAX_CHANNELS];
|
|
@@ -746,6 +750,11 @@ static int sh_dmae_probe(struct platform_device *pdev)
|
|
|
return PTR_ERR(shdev->dmars);
|
|
|
}
|
|
|
|
|
|
+ dma_dev->src_addr_widths = widths;
|
|
|
+ dma_dev->dst_addr_widths = widths;
|
|
|
+ dma_dev->directions = BIT(DMA_MEM_TO_DEV) | BIT(DMA_DEV_TO_MEM);
|
|
|
+ dma_dev->residue_granularity = DMA_RESIDUE_GRANULARITY_DESCRIPTOR;
|
|
|
+
|
|
|
if (!pdata->slave_only)
|
|
|
dma_cap_set(DMA_MEMCPY, dma_dev->cap_mask);
|
|
|
if (pdata->slave && pdata->slave_num)
|