From 77f6cb57c585703e17617fda6ef84dda21cb61c2 Mon Sep 17 00:00:00 2001 From: Russell King Date: Fri, 25 May 2012 15:41:13 +0100 Subject: [PATCH] --- yaml --- r: 321157 b: refs/heads/master c: c33b644cb31899265ec5102a4ed45c44269dde95 h: refs/heads/master i: 321155: 7345cce7d9bf49bdf96f05c25b2979ada2214065 v: v3 --- [refs] | 2 +- trunk/drivers/dma/amba-pl08x.c | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index f8e2ee75e91a..588f42ccbf5a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ea1605612ca4a8c7936e155da768bb9f4e69e84f +refs/heads/master: c33b644cb31899265ec5102a4ed45c44269dde95 diff --git a/trunk/drivers/dma/amba-pl08x.c b/trunk/drivers/dma/amba-pl08x.c index b6132845e65c..30b6921f094f 100644 --- a/trunk/drivers/dma/amba-pl08x.c +++ b/trunk/drivers/dma/amba-pl08x.c @@ -1671,10 +1671,7 @@ static void pl08x_tasklet(unsigned long data) spin_lock_irqsave(&plchan->lock, flags); list_splice_tail_init(&plchan->done_list, &head); - /* If a new descriptor is queued, set it up plchan->at is NULL here */ - if (!list_empty(&plchan->issued_list)) { - pl08x_start_next_txd(plchan); - } else if (!list_empty(&plchan->pend_list) || plchan->phychan_hold) { + if (plchan->at || !list_empty(&plchan->pend_list) || plchan->phychan_hold) { /* * This channel is still in use - we have a new txd being * prepared and will soon be queued. Don't give up the @@ -1786,6 +1783,10 @@ static irqreturn_t pl08x_irq(int irq, void *dev) pl08x_release_mux(plchan); dma_cookie_complete(&tx->tx); list_add_tail(&tx->node, &plchan->done_list); + + /* And start the next descriptor */ + if (!list_empty(&plchan->issued_list)) + pl08x_start_next_txd(plchan); } spin_unlock(&plchan->lock);