Re: [PATCH v18 2/4] dmaengine: tegra: Add tegra gpcdma driver

From: Dmitry Osipenko
Date: Fri Feb 04 2022 - 07:16:10 EST


04.02.2022 09:47, Akhil R пишет:
>> 03.02.2022 06:44, Akhil R пишет:
>>>> But why do you need to pause at all here and can't use
>>>> tegra_dma_stop_client() even if pause is supported?
>>> The recommended method to terminate a transfer in
>>> between is to pause the channel first and then disable it.
>>> This is more graceful and stable for the hardware.
>>> stop_client() is more abrupt, though it does the job.
>>
>> If there is no real practical difference, then I'd use the common method
>> only. This will make code cleaner and simpler a tad.
> This is the documented way of clean exit from a transfer, especially for
> cyclic transfers where the DMA is configured in continuous mode.
> I guess it might not be a good idea to deviate from that unless there is
> something demanding it compulsorily.
>
> I agree that the code will be cleaner. I would try to see if I can find a cleaner
> way to do this. Please do let me know if you have any suggestion.

Will be great if you could find out and provide a detailed explanation
about the exact differences of the methods from software perspective.
Try to ask the hardware people.

If you won't be able to find out, then use both methods. Then you could
specify the "pause" callback within the tegra_dma_chip_data
[tdma->chip_data->pause(tdma)], instead of using condition in the code.