On Fri, 2012-09-14 at 12:28 +0300, Peter Ujfalusi wrote:
Hi,
On 09/14/2012 11:50 AM, Vinod Koul wrote:
Well, the idea was that the driver would disable interrupts if there is no callback to call, since there would be nothing to do in the interrupt handler anyway. But I guess the flags approach should work fine as well.
Yes we _could_ do that, but this relies on dmaengine driver to have this implicit understanding. Anyone using dmaengine library in ASoC may or may not be aware of this, so i would consider it hackish.
Using this flag explicitly makes everyone aware what the intended behaviour is.
I'm not sure about which flags should ASoC set for the two case we are going to have. I think it should be something like this:
unsigned long flags = DMA_CTRL_ACK;
usage of ACK flag is mostly async_tx thingy, we can skip it for slave.
if (!substream->runtime->no_period_wakeup) flags |= DMA_PREP_INTERRUPT; I'm not 100% sure of the role of DMA_CTRL_ACK in this case. Or should we only handle the DMA_PREP_INTERRUPT flag, like this:
unsigned long flags = 0;
if (!substream->runtime->no_period_wakeup) flags |= DMA_PREP_INTERRUPT;
What do you think?
Looks fine.