tdev->device.device_terminate_all = mmp_tdma_terminate_all;
        tdev->device.copy_align = DMAENGINE_ALIGN_8_BYTES;
 
+       tdev->device.directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV);
+       if (type == MMP_AUD_TDMA) {
+               tdev->device.max_burst = SZ_128;
+               tdev->device.src_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES);
+               tdev->device.dst_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES);
+       } else if (type == PXA910_SQU) {
+               tdev->device.max_burst = SZ_32;
+       }
+       tdev->device.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST;
+       tdev->device.descriptor_reuse = true;
+
        dma_set_mask(&pdev->dev, DMA_BIT_MASK(64));
        platform_set_drvdata(pdev, tdev);