From: Linus Torvalds Date: Thu, 10 Apr 2014 15:55:08 +0000 (-0700) Subject: Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=6c61403a446b5ee54c21cecabdc821acf06f96bf;p=openwrt%2Fstaging%2Fblogic.git Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma Pull slave-dmaengine updates from Vinod Koul: - New driver for Qcom bam dma - New driver for RCAR peri-peri - New driver for FSL eDMA - Various odd fixes and updates thru the subsystem * 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma: (29 commits) dmaengine: add Qualcomm BAM dma driver shdma: add R-Car Audio DMAC peri peri driver dmaengine: sirf: enable generic dt binding for dma channels dma: omap-dma: Implement device_slave_caps callback dmaengine: qcom_bam_dma: Add device tree binding dma: dw: Add suspend and resume handling for PCI mode DW_DMAC. dma: dw: allocate memory in two stages in probe Add new line to test result strings produced in verbose mode dmaengine: pch_dma: use tasklet_kill in teardown dmaengine: at_hdmac: use tasklet_kill in teardown dma: cppi41: start tear down only if channel is busy usb: musb: musb_cppi41: Dont reprogram DMA if tear down is initiated dmaengine: s3c24xx-dma: make phy->irq signed for error handling dma: imx-dma: Add missing module owner field dma: imx-dma: Replace printk with dev_* dma: fsl-edma: fix static checker warning of NULL dereference dma: Remove comment about embedding dma_slave_config into custom structs dma: mmp_tdma: move to generic device tree binding dma: mmp_pdma: add IRQF_SHARED when request irq dma: edma: Fix memory leak in edma_prep_dma_cyclic() ... --- 6c61403a446b5ee54c21cecabdc821acf06f96bf diff --cc drivers/dma/omap-dma.c index 64ceca2920b8,928a0fa39f89..b19f04f4390b --- a/drivers/dma/omap-dma.c +++ b/drivers/dma/omap-dma.c @@@ -1086,8 -594,26 +1086,25 @@@ static void omap_dma_free(struct omap_d tasklet_kill(&c->vc.task); kfree(c); } - kfree(od); } + #define OMAP_DMA_BUSWIDTHS (BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | \ + BIT(DMA_SLAVE_BUSWIDTH_2_BYTES) | \ + BIT(DMA_SLAVE_BUSWIDTH_4_BYTES)) + + static int omap_dma_device_slave_caps(struct dma_chan *dchan, + struct dma_slave_caps *caps) + { + caps->src_addr_widths = OMAP_DMA_BUSWIDTHS; + caps->dstn_addr_widths = OMAP_DMA_BUSWIDTHS; + caps->directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV); + caps->cmd_pause = true; + caps->cmd_terminate = true; + caps->residue_granularity = DMA_RESIDUE_GRANULARITY_BURST; + + return 0; + } + static int omap_dma_probe(struct platform_device *pdev) { struct omap_dmadev *od;