On 03-06-19, 10:05, Peter Ujfalusi wrote: > > I think the main question is how polling for completion should be > > handled when client does not request for completion interrupt, thus we > > will have no callback in the DMA driver when the transfer is completed. > > > > If DMA_PREP_INTERRUPT is set for the tx_descriptor then the polling will > > wait until the DMA driver internally receives the interrupt that the > > transfer is done and sets the cookie to completed state. > > > > However if DMA_PREP_INTERRUPT is not set, the DMA driver will not get > > notification from the HW that is the transfer is done, the only way to > > know is to check the tx_status and based on the residue (if it is 0 then > > it is done) decide what to tell the client. > > > > Should the client call dmaengine_terminate_* after the polling returned > > unconditionally to free up the descriptor? > > This is how omap-dma is handling the polled memcpy support. Yes that is a good question. Even if the client does not set DMA_PREP_INTERRUPT would there be no interrupt generated by controller on txn completion? If not how will next txn be submitted to the hardware. I think we should view DMA_PREP_INTERRUPT from client pov, but controller cannot get away with disabling interrupts IMO. Assuming I had enough caffeine before I thought process, then client would poll descriptor status using cookie and should free up once the cookie is freed, makes sense? -- ~Vinod