mbox series

[v3,0/2] dmaengine: ti: edma: Polled completion support

Message ID 20190521093646.21836-1-peter.ujfalusi@ti.com (mailing list archive)
Headers show
Series dmaengine: ti: edma: Polled completion support | expand

Message

Peter Ujfalusi May 21, 2019, 9:36 a.m. UTC
Hi,

Changes since v2:
- Fix typo in the comment for patch 0

Changes since v1:
- Cleanup patch for the array register handling
- typo fixed in patch2 commit message

The code around the array register access was pretty confusing for the first
look, so clean them up first then use the cleaner way in the polled handling.

When a DMA client driver decides that it is not providing callback for
completion of a transfer (and/or does not set the DMA_PREP_INTERRUPT) but
it will poll the status of the transfer (in case of short memcpy for
example) we will not get interrupt for the completion of the transfer and
will not mark the transaction as done.

Check the event registers (ER and EER) and if the channel is inactive then
return wioth DMA_COMPLETE to let the client know that the transfer is
completed.

Regards,
Peter
---
Peter Ujfalusi (2):
  dmaengine: ti: edma: Clean up the 2x32bit array register accesses
  dmaengine: ti: edma: Enable support for polled (memcpy) completion

 drivers/dma/ti/edma.c | 129 ++++++++++++++++++++++++++----------------
 1 file changed, 81 insertions(+), 48 deletions(-)

Comments

Peter Ujfalusi May 23, 2019, 10:57 a.m. UTC | #1
Vinod,

On 21/05/2019 12.36, Peter Ujfalusi wrote:
> Hi,
> 
> Changes since v2:
> - Fix typo in the comment for patch 0
> 
> Changes since v1:
> - Cleanup patch for the array register handling
> - typo fixed in patch2 commit message
> 
> The code around the array register access was pretty confusing for the first
> look, so clean them up first then use the cleaner way in the polled handling.
> 
> When a DMA client driver decides that it is not providing callback for
> completion of a transfer (and/or does not set the DMA_PREP_INTERRUPT) but
> it will poll the status of the transfer (in case of short memcpy for
> example) we will not get interrupt for the completion of the transfer and
> will not mark the transaction as done.
> 
> Check the event registers (ER and EER) and if the channel is inactive then
> return wioth DMA_COMPLETE to let the client know that the transfer is
> completed.

Please do not pick this up yet, I got report that it might cause side
effect which I need to debug to understand.

> 
> Regards,
> Peter
> ---
> Peter Ujfalusi (2):
>   dmaengine: ti: edma: Clean up the 2x32bit array register accesses
>   dmaengine: ti: edma: Enable support for polled (memcpy) completion
> 
>  drivers/dma/ti/edma.c | 129 ++++++++++++++++++++++++++----------------
>  1 file changed, 81 insertions(+), 48 deletions(-)
> 

- Péter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
Vinod Koul May 27, 2019, 6:39 a.m. UTC | #2
On 23-05-19, 13:57, Peter Ujfalusi wrote:
> Vinod,
> 
> On 21/05/2019 12.36, Peter Ujfalusi wrote:
> > Hi,
> > 
> > Changes since v2:
> > - Fix typo in the comment for patch 0
> > 
> > Changes since v1:
> > - Cleanup patch for the array register handling
> > - typo fixed in patch2 commit message
> > 
> > The code around the array register access was pretty confusing for the first
> > look, so clean them up first then use the cleaner way in the polled handling.
> > 
> > When a DMA client driver decides that it is not providing callback for
> > completion of a transfer (and/or does not set the DMA_PREP_INTERRUPT) but
> > it will poll the status of the transfer (in case of short memcpy for
> > example) we will not get interrupt for the completion of the transfer and
> > will not mark the transaction as done.
> > 
> > Check the event registers (ER and EER) and if the channel is inactive then
> > return wioth DMA_COMPLETE to let the client know that the transfer is
> > completed.
> 
> Please do not pick this up yet, I got report that it might cause side
> effect which I need to debug to understand.

OK dropped for queue