* [PATCH 0/2] dmaengine/ste_dma40: Fix implementation of issue_pending
@ 2011-06-26 21:29 Per Forlin
2011-06-26 21:29 ` [PATCH 1/2] dmaengine/ste_dma40: add a separate queue for pending requests Per Forlin
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Per Forlin @ 2011-06-26 21:29 UTC (permalink / raw)
To: linux-kernel, Rabin Vincent; +Cc: Vinod Koul, Per Forlin
Resolve issue pending TOOD for ste_dma40
Per Forlin (2):
dmaengine/ste_dma40: add a separate queue for pending requests
dmaengine: remove ste_dma40 from issue_pending TODO
drivers/dma/TODO | 1 -
drivers/dma/ste_dma40.c | 26 ++++++++++++++++++++++++--
2 files changed, 24 insertions(+), 3 deletions(-)
--
1.7.4.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] dmaengine/ste_dma40: add a separate queue for pending requests
2011-06-26 21:29 [PATCH 0/2] dmaengine/ste_dma40: Fix implementation of issue_pending Per Forlin
@ 2011-06-26 21:29 ` Per Forlin
2011-06-26 21:29 ` [PATCH 2/2] dmaengine: remove ste_dma40 from issue_pending TODO Per Forlin
2011-07-13 22:32 ` [PATCH 0/2] dmaengine/ste_dma40: Fix implementation of issue_pending Koul, Vinod
2 siblings, 0 replies; 6+ messages in thread
From: Per Forlin @ 2011-06-26 21:29 UTC (permalink / raw)
To: linux-kernel, Rabin Vincent; +Cc: Vinod Koul, Per Forlin
tx_submit will add descriptors to the pending queue. Issue pending
will then move the pending descriptors to the transfer queue.
Signed-off-by: Per Forlin <per.forlin@linaro.org>
---
drivers/dma/ste_dma40.c | 26 ++++++++++++++++++++++++--
1 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c
index 8f222d4..91d5ed7 100644
--- a/drivers/dma/ste_dma40.c
+++ b/drivers/dma/ste_dma40.c
@@ -199,6 +199,7 @@ struct d40_chan {
struct dma_chan chan;
struct tasklet_struct tasklet;
struct list_head client;
+ struct list_head pending_queue;
struct list_head active;
struct list_head queue;
struct stedma40_chan_cfg dma_cfg;
@@ -644,7 +645,20 @@ static struct d40_desc *d40_first_active_get(struct d40_chan *d40c)
static void d40_desc_queue(struct d40_chan *d40c, struct d40_desc *desc)
{
- list_add_tail(&desc->node, &d40c->queue);
+ list_add_tail(&desc->node, &d40c->pending_queue);
+}
+
+static struct d40_desc *d40_first_pending(struct d40_chan *d40c)
+{
+ struct d40_desc *d;
+
+ if (list_empty(&d40c->pending_queue))
+ return NULL;
+
+ d = list_first_entry(&d40c->pending_queue,
+ struct d40_desc,
+ node);
+ return d;
}
static struct d40_desc *d40_first_queued(struct d40_chan *d40c)
@@ -801,6 +815,11 @@ static void d40_term_all(struct d40_chan *d40c)
d40_desc_free(d40c, d40d);
}
+ /* Release pending descriptors */
+ while ((d40d = d40_first_pending(d40c))) {
+ d40_desc_remove(d40d);
+ d40_desc_free(d40c, d40d);
+ }
d40c->pending_tx = 0;
d40c->busy = false;
@@ -2151,7 +2170,9 @@ static void d40_issue_pending(struct dma_chan *chan)
spin_lock_irqsave(&d40c->lock, flags);
- /* Busy means that pending jobs are already being processed */
+ list_splice_tail_init(&d40c->pending_queue, &d40c->queue);
+
+ /* Busy means that queued jobs are already being processed */
if (!d40c->busy)
(void) d40_queue_start(d40c);
@@ -2340,6 +2361,7 @@ static void __init d40_chan_init(struct d40_base *base, struct dma_device *dma,
INIT_LIST_HEAD(&d40c->active);
INIT_LIST_HEAD(&d40c->queue);
+ INIT_LIST_HEAD(&d40c->pending_queue);
INIT_LIST_HEAD(&d40c->client);
tasklet_init(&d40c->tasklet, dma_tasklet,
--
1.7.4.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] dmaengine: remove ste_dma40 from issue_pending TODO
2011-06-26 21:29 [PATCH 0/2] dmaengine/ste_dma40: Fix implementation of issue_pending Per Forlin
2011-06-26 21:29 ` [PATCH 1/2] dmaengine/ste_dma40: add a separate queue for pending requests Per Forlin
@ 2011-06-26 21:29 ` Per Forlin
2011-07-07 2:00 ` Vinod Koul
2011-07-13 22:32 ` [PATCH 0/2] dmaengine/ste_dma40: Fix implementation of issue_pending Koul, Vinod
2 siblings, 1 reply; 6+ messages in thread
From: Per Forlin @ 2011-06-26 21:29 UTC (permalink / raw)
To: linux-kernel, Rabin Vincent; +Cc: Vinod Koul, Per Forlin
ste_dma40 now implements issue_pending according to documentation.
Submit adds descriptos to a pending queue with are flushed down to the DMAC
at issue_pending.
Signed-off-by: Per Forlin <per.forlin@linaro.org>
---
drivers/dma/TODO | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/drivers/dma/TODO b/drivers/dma/TODO
index a4af858..734ed02 100644
--- a/drivers/dma/TODO
+++ b/drivers/dma/TODO
@@ -9,6 +9,5 @@ TODO for slave dma
- mxs-dma.c
- dw_dmac
- intel_mid_dma
- - ste_dma40
4. Check other subsystems for dma drivers and merge/move to dmaengine
5. Remove dma_slave_config's dma direction.
--
1.7.4.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] dmaengine: remove ste_dma40 from issue_pending TODO
2011-06-26 21:29 ` [PATCH 2/2] dmaengine: remove ste_dma40 from issue_pending TODO Per Forlin
@ 2011-07-07 2:00 ` Vinod Koul
2011-07-07 14:27 ` Linus Walleij
0 siblings, 1 reply; 6+ messages in thread
From: Vinod Koul @ 2011-07-07 2:00 UTC (permalink / raw)
To: Per Forlin; +Cc: linux-kernel, Rabin Vincent
On Sun, 2011-06-26 at 23:29 +0200, Per Forlin wrote:
> ste_dma40 now implements issue_pending according to documentation.
> Submit adds descriptos to a pending queue with are flushed down to the DMAC
> at issue_pending.
>
> Signed-off-by: Per Forlin <per.forlin@linaro.org>
How about the client driver which are currently using this driver, wont
they break as they would be calling submit and not issue_pending...?
> ---
> drivers/dma/TODO | 1 -
> 1 files changed, 0 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/dma/TODO b/drivers/dma/TODO
> index a4af858..734ed02 100644
> --- a/drivers/dma/TODO
> +++ b/drivers/dma/TODO
> @@ -9,6 +9,5 @@ TODO for slave dma
> - mxs-dma.c
> - dw_dmac
> - intel_mid_dma
> - - ste_dma40
> 4. Check other subsystems for dma drivers and merge/move to dmaengine
> 5. Remove dma_slave_config's dma direction.
--
~Vinod Koul
Intel Corp.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] dmaengine: remove ste_dma40 from issue_pending TODO
2011-07-07 2:00 ` Vinod Koul
@ 2011-07-07 14:27 ` Linus Walleij
0 siblings, 0 replies; 6+ messages in thread
From: Linus Walleij @ 2011-07-07 14:27 UTC (permalink / raw)
To: Vinod Koul; +Cc: Per Forlin, linux-kernel, Rabin Vincent
2011/7/7 Vinod Koul <vkoul@infradead.org>:
> On Sun, 2011-06-26 at 23:29 +0200, Per Forlin wrote:
>> ste_dma40 now implements issue_pending according to documentation.
>> Submit adds descriptos to a pending queue with are flushed down to the DMAC
>> at issue_pending.
>>
>> Signed-off-by: Per Forlin <per.forlin@linaro.org>
> How about the client driver which are currently using this driver, wont
> they break as they would be calling submit and not issue_pending...?
They all call both, so it works fine. First submit() then issue_pending()
in sucession.
In-tree drivers:
drivers/tty/serial/amba-pl011.c
drivers/mmc/host/mmci.c
drivers/spi/spi-pl022.c
So:
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Thanks,
Linus Walleij
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/2] dmaengine/ste_dma40: Fix implementation of issue_pending
2011-06-26 21:29 [PATCH 0/2] dmaengine/ste_dma40: Fix implementation of issue_pending Per Forlin
2011-06-26 21:29 ` [PATCH 1/2] dmaengine/ste_dma40: add a separate queue for pending requests Per Forlin
2011-06-26 21:29 ` [PATCH 2/2] dmaengine: remove ste_dma40 from issue_pending TODO Per Forlin
@ 2011-07-13 22:32 ` Koul, Vinod
2 siblings, 0 replies; 6+ messages in thread
From: Koul, Vinod @ 2011-07-13 22:32 UTC (permalink / raw)
To: Per Forlin; +Cc: linux-kernel, Rabin Vincent
On Sun, 2011-06-26 at 23:29 +0200, Per Forlin wrote:
> Resolve issue pending TOOD for ste_dma40
>
> Per Forlin (2):
> dmaengine/ste_dma40: add a separate queue for pending requests
> dmaengine: remove ste_dma40 from issue_pending TODO
>
> drivers/dma/TODO | 1 -
> drivers/dma/ste_dma40.c | 26 ++++++++++++++++++++++++--
> 2 files changed, 24 insertions(+), 3 deletions(-)
>
Applied, Thanks
--
~Vinod
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-07-13 23:13 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-26 21:29 [PATCH 0/2] dmaengine/ste_dma40: Fix implementation of issue_pending Per Forlin
2011-06-26 21:29 ` [PATCH 1/2] dmaengine/ste_dma40: add a separate queue for pending requests Per Forlin
2011-06-26 21:29 ` [PATCH 2/2] dmaengine: remove ste_dma40 from issue_pending TODO Per Forlin
2011-07-07 2:00 ` Vinod Koul
2011-07-07 14:27 ` Linus Walleij
2011-07-13 22:32 ` [PATCH 0/2] dmaengine/ste_dma40: Fix implementation of issue_pending Koul, Vinod
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).