Re: Tearing down DMA transfer setup after DMA client has finished

From: Måns Rullgård
Date: Thu Dec 08 2016 - 11:46:20 EST


Vinod Koul <vinod.koul@xxxxxxxxx> writes:

> On Thu, Dec 08, 2016 at 11:44:53AM +0000, Måns Rullgård wrote:
>> Vinod Koul <vinod.koul@xxxxxxxxx> writes:
>>
>> > On Wed, Dec 07, 2016 at 04:45:58PM +0000, Måns Rullgård wrote:
>> >> Vinod Koul <vinod.koul@xxxxxxxxx> writes:
>> >>
>> >> > On Tue, Dec 06, 2016 at 01:14:20PM +0000, Måns Rullgård wrote:
>> >> >>
>> >> >> That's not going to work very well. Device drivers typically request
>> >> >> dma channels in their probe functions or when the device is opened.
>> >> >> This means that reserving one of the few channels there will inevitably
>> >> >> make some other device fail to operate.
>> >> >
>> >> > No that doesnt make sense at all, you should get a channel only when you
>> >> > want to use it and not in probe!
>> >>
>> >> Tell that to just about every single driver ever written.
>> >
>> > Not really, few do yes which is wrong but not _all_ do that.
>>
>> Every driver I ever looked at does. Name one you consider "correct."
>
> That only tells me you haven't looked enough and want to rant!
>
> FWIW look at ALSA-dmaengine lib, thereby every audio driver that uses it. I
> could find other examples and go on and on, but that's besides the point and
> looks like you don't want to listen to people telling you something..

ALSA is a particularly poor example. ALSA drivers request a dma channel
at some point between the device being opened and playback (or capture)
starting. They then set up a cyclic transfer that runs continuously
until playback is stopped. It's a completely different model of
operation than we're talking about here.

--
Måns Rullgård