DMA: get data count of descriptor in dmaengine

Song, Elen Elen.Song at atmel.com
Sun Sep 9 23:26:10 EDT 2012


Hi Russel:

>-----Original Message-----
>From: Russell King - ARM Linux [mailto:linux at arm.linux.org.uk]
>Sent: 2012年9月7日 18:36
>To: Song, Elen
>Cc: djbw at fb.com; Ferre, Nicolas; Lin, JM; Wu, Josh;
>linux-arm-kernel at lists.infradead.org
>Subject: Re: DMA: get data count of descriptor in dmaengine
>
>On Fri, Sep 07, 2012 at 09:59:17AM +0000, Song, Elen wrote:
>> Hi All:
>>
>> 	When I am developing using dma for uart receive, I found a problem.
>> 	I use a cyclic dma transfer and set descriptor transfer size to lk,
>> 	only receive 1k bytes(descriptor transfer done) that will call an interrupt.
>>
>> 	If I receive 1 byte, there will happened nothing except my peripherals have
>timeout function.
>> 	Fortunately, I got timeout function in uart peripheral, in timeout handler, I
>can receive data from uart.
>> 	But I do not know how many data I have receive, so there should be a count
>register in dma.
>>
>> 	I found the count register but I do not found correlative api in dmaengine, I
>think we should add one.
>> 	Even during a single or multi buffer transfer, knowing how many data has
>been transfer in current descriptor is necessary.
>> 	Through that, we will not lose a data.
>>
>> 	So there should be an api to get current descriptor receive data count.
>> 	Or we could get current descriptor status , the status with count value?
>>
>> 	I submit an patch to retrieve descriptor data transfer size.
>> 	We use this to get data count .
>> 	We use Atmel dma, but it could be a common demand.
>
>See dmaengine_tx_status() - the residue is returned in struct dma_tx_state.
>See the PL011 UART driver to see how this is used with a timeout interrupt.

Thanks, I will check!

Best regards
Elen song


More information about the linux-arm-kernel mailing list