Messages in this thread | | | Date | Tue, 5 Feb 2013 19:33:42 +0100 | Subject | Re: [PATCH v7 01/10] ARM: davinci: move private EDMA API to arm/common | From | Linus Walleij <> |
| |
On Tue, Feb 5, 2013 at 6:14 PM, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote: > On Tue, Feb 05, 2013 at 04:30:45PM +0100, Linus Walleij wrote:
>> So put them on a wait list? Surely you will have a list of pending >> cookies and pick from the front of the queue if there isn't a hole on >> queue position 0. > > Not quite. The key is the cookie system DMA engine employs to indicate > when a cookie is complete. > > Cookies between the "issued sequence" and "completed sequence" are defined > to be in progress, everything else is defined to be completed. > > This means that if "completed sequence" is 1, and "issued sequence" is 5, > then cookies with values 2, 3, 4, 5 are in progress. You can't mark > sequence 4 as being complete until 2 and 3 have completed.
Yes that is true. DMA transfers on a certain channel are defined as progressing linearly per-cookie. I wonder if that is a problem in this case though (actually it seems the reverse, this helps in Cyril's case.)
> If we need out-of-order completion, then that's a problem for the DMA > engine API, because you'd need to radically change the way "completion" > is marked.
True. I wonder if this usecase is ever going to be applicable however. It could maybe be useful in some instances of memcpy() I could dream up, whereas for device transfers it seems unlikely to me.
Yours, Linus Walleij
| |