diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-24 12:49:37 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-24 12:49:37 -0400 |
| commit | d6a4c0e5d3d433ef296f8f417e835329a834a256 (patch) | |
| tree | a65de394ea1afeeccee9f84dc7e6cd21e2660639 /drivers/dma/dw/core.c | |
| parent | 474095e46cd14421821da3201a9fd6a4c070996b (diff) | |
| parent | cdde0e61cf2d41123604c6c9d8f09ef5c23464ee (diff) | |
Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma
Pull slave-dmaengine updates from Vinod Koul:
- new drivers for:
- Ingenic JZ4780 controller
- APM X-Gene controller
- Freescale RaidEngine device
- Renesas USB Controller
- remove device_alloc_chan_resources dummy handlers
- sh driver cleanups for peri peri and related emmc and asoc patches
as well
- fixes and enhancements spread over the drivers
* 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma: (59 commits)
dmaengine: dw: don't prompt for DW_DMAC_CORE
dmaengine: shdmac: avoid unused variable warnings
dmaengine: fix platform_no_drv_owner.cocci warnings
dmaengine: pch_dma: fix memory leak on failure path in pch_dma_probe()
dmaengine: at_xdmac: unlock spin lock before return
dmaengine: xgene: devm_ioremap() returns NULL on error
dmaengine: xgene: buffer overflow in xgene_dma_init_channels()
dmaengine: usb-dmac: Fix dereferencing freed memory 'desc'
dmaengine: sa11x0: report slave capabilities to upper layers
dmaengine: vdma: Fix compilation warnings
dmaengine: fsl_raid: statify fsl_re_chan_probe
dmaengine: Driver support for FSL RaidEngine device.
dmaengine: xgene_dma_init_ring_mngr() can be static
Documentation: dma: Add documentation for the APM X-Gene SoC DMA device DTS binding
arm64: dts: Add APM X-Gene SoC DMA device and DMA clock DTS nodes
dmaengine: Add support for APM X-Gene SoC DMA engine driver
dmaengine: usb-dmac: Add Renesas USB DMA Controller (USB-DMAC) driver
dmaengine: renesas,usb-dmac: Add device tree bindings documentation
dmaengine: edma: fixed wrongly initialized data parameter to the edma callback
dmaengine: ste_dma40: fix implicit conversion
...
Diffstat (limited to 'drivers/dma/dw/core.c')
| -rw-r--r-- | drivers/dma/dw/core.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/drivers/dma/dw/core.c b/drivers/dma/dw/core.c index a8ad05291b27..1022c2e1a2b0 100644 --- a/drivers/dma/dw/core.c +++ b/drivers/dma/dw/core.c | |||
| @@ -230,7 +230,8 @@ static void dwc_dostart(struct dw_dma_chan *dwc, struct dw_desc *first) | |||
| 230 | /* ASSERT: channel is idle */ | 230 | /* ASSERT: channel is idle */ |
| 231 | if (dma_readl(dw, CH_EN) & dwc->mask) { | 231 | if (dma_readl(dw, CH_EN) & dwc->mask) { |
| 232 | dev_err(chan2dev(&dwc->chan), | 232 | dev_err(chan2dev(&dwc->chan), |
| 233 | "BUG: Attempted to start non-idle channel\n"); | 233 | "%s: BUG: Attempted to start non-idle channel\n", |
| 234 | __func__); | ||
| 234 | dwc_dump_chan_regs(dwc); | 235 | dwc_dump_chan_regs(dwc); |
| 235 | 236 | ||
| 236 | /* The tasklet will hopefully advance the queue... */ | 237 | /* The tasklet will hopefully advance the queue... */ |
| @@ -814,11 +815,8 @@ dwc_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, | |||
| 814 | 815 | ||
| 815 | slave_sg_todev_fill_desc: | 816 | slave_sg_todev_fill_desc: |
| 816 | desc = dwc_desc_get(dwc); | 817 | desc = dwc_desc_get(dwc); |
| 817 | if (!desc) { | 818 | if (!desc) |
| 818 | dev_err(chan2dev(chan), | ||
| 819 | "not enough descriptors available\n"); | ||
| 820 | goto err_desc_get; | 819 | goto err_desc_get; |
| 821 | } | ||
| 822 | 820 | ||
| 823 | desc->lli.sar = mem; | 821 | desc->lli.sar = mem; |
| 824 | desc->lli.dar = reg; | 822 | desc->lli.dar = reg; |
| @@ -874,11 +872,8 @@ slave_sg_todev_fill_desc: | |||
| 874 | 872 | ||
| 875 | slave_sg_fromdev_fill_desc: | 873 | slave_sg_fromdev_fill_desc: |
| 876 | desc = dwc_desc_get(dwc); | 874 | desc = dwc_desc_get(dwc); |
| 877 | if (!desc) { | 875 | if (!desc) |
| 878 | dev_err(chan2dev(chan), | ||
| 879 | "not enough descriptors available\n"); | ||
| 880 | goto err_desc_get; | 876 | goto err_desc_get; |
| 881 | } | ||
| 882 | 877 | ||
| 883 | desc->lli.sar = reg; | 878 | desc->lli.sar = reg; |
| 884 | desc->lli.dar = mem; | 879 | desc->lli.dar = mem; |
| @@ -922,6 +917,8 @@ slave_sg_fromdev_fill_desc: | |||
| 922 | return &first->txd; | 917 | return &first->txd; |
| 923 | 918 | ||
| 924 | err_desc_get: | 919 | err_desc_get: |
| 920 | dev_err(chan2dev(chan), | ||
| 921 | "not enough descriptors available. Direction %d\n", direction); | ||
| 925 | dwc_desc_put(dwc, first); | 922 | dwc_desc_put(dwc, first); |
| 926 | return NULL; | 923 | return NULL; |
| 927 | } | 924 | } |
| @@ -1261,7 +1258,8 @@ int dw_dma_cyclic_start(struct dma_chan *chan) | |||
| 1261 | /* Assert channel is idle */ | 1258 | /* Assert channel is idle */ |
| 1262 | if (dma_readl(dw, CH_EN) & dwc->mask) { | 1259 | if (dma_readl(dw, CH_EN) & dwc->mask) { |
| 1263 | dev_err(chan2dev(&dwc->chan), | 1260 | dev_err(chan2dev(&dwc->chan), |
| 1264 | "BUG: Attempted to start non-idle channel\n"); | 1261 | "%s: BUG: Attempted to start non-idle channel\n", |
| 1262 | __func__); | ||
| 1265 | dwc_dump_chan_regs(dwc); | 1263 | dwc_dump_chan_regs(dwc); |
| 1266 | spin_unlock_irqrestore(&dwc->lock, flags); | 1264 | spin_unlock_irqrestore(&dwc->lock, flags); |
| 1267 | return -EBUSY; | 1265 | return -EBUSY; |
