提交 2dde5b90 编写于 作者: P Peter Ujfalusi 提交者: Mark Brown

dmaengine: omap-dma: Add support to suppress interrupts in cyclic mode

When requested (DMA_PREP_INTERRUPT is cleared in flags) disable all DMA
interrupts for the channel. In this mode user space does not expect
periodic reports from kernel about the progress of the audio stream.
PulseAudio for example support this type of mode.
Signed-off-by: NPeter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: NVinod Koul <vinod.koul@linux.intel.com>
Tested-by: NJanusz Krzysztofik <jkrzyszt@tis.icnet.pl>
Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
上级 ec8b5e48
...@@ -429,7 +429,10 @@ static struct dma_async_tx_descriptor *omap_dma_prep_dma_cyclic( ...@@ -429,7 +429,10 @@ static struct dma_async_tx_descriptor *omap_dma_prep_dma_cyclic(
if (!c->cyclic) { if (!c->cyclic) {
c->cyclic = true; c->cyclic = true;
omap_dma_link_lch(c->dma_ch, c->dma_ch); omap_dma_link_lch(c->dma_ch, c->dma_ch);
omap_enable_dma_irq(c->dma_ch, OMAP_DMA_FRAME_IRQ);
if (flags & DMA_PREP_INTERRUPT)
omap_enable_dma_irq(c->dma_ch, OMAP_DMA_FRAME_IRQ);
omap_disable_dma_irq(c->dma_ch, OMAP_DMA_BLOCK_IRQ); omap_disable_dma_irq(c->dma_ch, OMAP_DMA_BLOCK_IRQ);
} }
...@@ -438,7 +441,7 @@ static struct dma_async_tx_descriptor *omap_dma_prep_dma_cyclic( ...@@ -438,7 +441,7 @@ static struct dma_async_tx_descriptor *omap_dma_prep_dma_cyclic(
omap_set_dma_dest_burst_mode(c->dma_ch, OMAP_DMA_DATA_BURST_16); omap_set_dma_dest_burst_mode(c->dma_ch, OMAP_DMA_DATA_BURST_16);
} }
return vchan_tx_prep(&c->vc, &d->vd, DMA_CTRL_ACK | DMA_PREP_INTERRUPT); return vchan_tx_prep(&c->vc, &d->vd, flags);
} }
static int omap_dma_slave_config(struct omap_chan *c, struct dma_slave_config *cfg) static int omap_dma_slave_config(struct omap_chan *c, struct dma_slave_config *cfg)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册