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 branch 'fixes' of git://git.infradead.org/users/vkoul/slave-dma

Pull slave-dmaengine fixes from Vinod Koul:
"Here is the common fixes PULL for dmaengine.

Dan has been working on fixing the build issues in bunch of drivers.
Here we have one fixing s3c24xx-dma, along with fix from Russell on
pl08x. Also we have Kuninori rcar dma fixes. The s3c24xx-dma which
was added in last merge window missed updates to usage of DMA_COMPLETE
so converting the last driver"

* 'fixes' of git://git.infradead.org/users/vkoul/slave-dma:
dma: fix build breakage in s3c24xx-dma
Fix pl08x warnings
rcar-hpbdma: initialise plane information when halted
rcar-hpbdma: fixup channel busy check for double plane
rcar-hpbdma: add max transfer size
dma: mmp_pdma: add missing platform_set_drvdata() in mmp_pdma_probe()
dmaengine: s3c24xx-dma: use DMA_COMPLETE for dma completion status

+14 -33
+1 -1
drivers/dma/amba-pl08x.c
··· 1169 1169 struct pl08x_txd *txd = to_pl08x_txd(&vd->tx); 1170 1170 struct pl08x_dma_chan *plchan = to_pl08x_chan(vd->tx.chan); 1171 1171 1172 - dma_descriptor_unmap(txd); 1172 + dma_descriptor_unmap(&vd->tx); 1173 1173 if (!txd->done) 1174 1174 pl08x_release_mux(plchan); 1175 1175
+1
drivers/dma/mmp_pdma.c
··· 1017 1017 } 1018 1018 } 1019 1019 1020 + platform_set_drvdata(op, pdev); 1020 1021 dev_info(pdev->device.dev, "initialized %d channels\n", dma_channels); 1021 1022 return 0; 1022 1023 }
+2 -31
drivers/dma/s3c24xx-dma.c
··· 628 628 s3cchan->state = S3C24XX_DMA_CHAN_IDLE; 629 629 } 630 630 631 - static void s3c24xx_dma_unmap_buffers(struct s3c24xx_txd *txd) 632 - { 633 - struct device *dev = txd->vd.tx.chan->device->dev; 634 - struct s3c24xx_sg *dsg; 635 - 636 - if (!(txd->vd.tx.flags & DMA_COMPL_SKIP_SRC_UNMAP)) { 637 - if (txd->vd.tx.flags & DMA_COMPL_SRC_UNMAP_SINGLE) 638 - list_for_each_entry(dsg, &txd->dsg_list, node) 639 - dma_unmap_single(dev, dsg->src_addr, dsg->len, 640 - DMA_TO_DEVICE); 641 - else { 642 - list_for_each_entry(dsg, &txd->dsg_list, node) 643 - dma_unmap_page(dev, dsg->src_addr, dsg->len, 644 - DMA_TO_DEVICE); 645 - } 646 - } 647 - 648 - if (!(txd->vd.tx.flags & DMA_COMPL_SKIP_DEST_UNMAP)) { 649 - if (txd->vd.tx.flags & DMA_COMPL_DEST_UNMAP_SINGLE) 650 - list_for_each_entry(dsg, &txd->dsg_list, node) 651 - dma_unmap_single(dev, dsg->dst_addr, dsg->len, 652 - DMA_FROM_DEVICE); 653 - else 654 - list_for_each_entry(dsg, &txd->dsg_list, node) 655 - dma_unmap_page(dev, dsg->dst_addr, dsg->len, 656 - DMA_FROM_DEVICE); 657 - } 658 - } 659 - 660 631 static void s3c24xx_dma_desc_free(struct virt_dma_desc *vd) 661 632 { 662 633 struct s3c24xx_txd *txd = to_s3c24xx_txd(&vd->tx); 663 634 struct s3c24xx_dma_chan *s3cchan = to_s3c24xx_dma_chan(vd->tx.chan); 664 635 665 636 if (!s3cchan->slave) 666 - s3c24xx_dma_unmap_buffers(txd); 637 + dma_descriptor_unmap(&vd->tx); 667 638 668 639 s3c24xx_dma_free_txd(txd); 669 640 } ··· 766 795 767 796 spin_lock_irqsave(&s3cchan->vc.lock, flags); 768 797 ret = dma_cookie_status(chan, cookie, txstate); 769 - if (ret == DMA_SUCCESS) { 798 + if (ret == DMA_COMPLETE) { 770 799 spin_unlock_irqrestore(&s3cchan->vc.lock, flags); 771 800 return ret; 772 801 }
+10 -1
drivers/dma/sh/rcar-hpbdma.c
··· 60 60 #define HPB_DMAE_DSTPR_DMSTP BIT(0) 61 61 62 62 /* DMA status register (DSTSR) bits */ 63 + #define HPB_DMAE_DSTSR_DQSTS BIT(2) 63 64 #define HPB_DMAE_DSTSR_DMSTS BIT(0) 64 65 65 66 /* DMA common registers */ ··· 287 286 288 287 ch_reg_write(chan, HPB_DMAE_DCMDR_DQEND, HPB_DMAE_DCMDR); 289 288 ch_reg_write(chan, HPB_DMAE_DSTPR_DMSTP, HPB_DMAE_DSTPR); 289 + 290 + chan->plane_idx = 0; 291 + chan->first_desc = true; 290 292 } 291 293 292 294 static const struct hpb_dmae_slave_config * ··· 389 385 struct hpb_dmae_chan *chan = to_chan(schan); 390 386 u32 dstsr = ch_reg_read(chan, HPB_DMAE_DSTSR); 391 387 392 - return (dstsr & HPB_DMAE_DSTSR_DMSTS) == HPB_DMAE_DSTSR_DMSTS; 388 + if (chan->xfer_mode == XFER_DOUBLE) 389 + return dstsr & HPB_DMAE_DSTSR_DQSTS; 390 + else 391 + return dstsr & HPB_DMAE_DSTSR_DMSTS; 393 392 } 394 393 395 394 static int ··· 517 510 } 518 511 519 512 schan = &new_hpb_chan->shdma_chan; 513 + schan->max_xfer_len = HPB_DMA_TCR_MAX; 514 + 520 515 shdma_chan_probe(sdev, schan, id); 521 516 522 517 if (pdev->id >= 0)