Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'dmaengine-fix-4.5-rc7' of git://git.infradead.org/users/vkoul/slave-dma

Pull dmaengine fix from Vinod Koul:
"One minor fix on pxa driver to fix the cyclic dma tranfers"

* tag 'dmaengine-fix-4.5-rc7' of git://git.infradead.org/users/vkoul/slave-dma:
dmaengine: pxa_dma: fix cyclic transfers

+7 -1
+7 -1
drivers/dma/pxa_dma.c
··· 583 583 (PXA_DCMD_LENGTH & sizeof(u32)); 584 584 if (flags & DMA_PREP_INTERRUPT) 585 585 updater->dcmd |= PXA_DCMD_ENDIRQEN; 586 + if (sw_desc->cyclic) 587 + sw_desc->hw_desc[sw_desc->nb_desc - 2]->ddadr = sw_desc->first; 586 588 } 587 589 588 590 static bool is_desc_completed(struct virt_dma_desc *vd) ··· 675 673 dev_dbg(&chan->vc.chan.dev->device, 676 674 "%s(): checking txd %p[%x]: completed=%d\n", 677 675 __func__, vd, vd->tx.cookie, is_desc_completed(vd)); 676 + if (to_pxad_sw_desc(vd)->cyclic) { 677 + vchan_cyclic_callback(vd); 678 + break; 679 + } 678 680 if (is_desc_completed(vd)) { 679 681 list_del(&vd->node); 680 682 vchan_cookie_complete(vd); ··· 1086 1080 return NULL; 1087 1081 1088 1082 pxad_get_config(chan, dir, &dcmd, &dsadr, &dtadr); 1089 - dcmd |= PXA_DCMD_ENDIRQEN | (PXA_DCMD_LENGTH | period_len); 1083 + dcmd |= PXA_DCMD_ENDIRQEN | (PXA_DCMD_LENGTH & period_len); 1090 1084 dev_dbg(&chan->vc.chan.dev->device, 1091 1085 "%s(): buf_addr=0x%lx len=%zu period=%zu dir=%d flags=%lx\n", 1092 1086 __func__, (unsigned long)buf_addr, len, period_len, dir, flags);