From 69963912b66a11df07eb24fba5eb56eb63dc93f5 Mon Sep 17 00:00:00 2001 From: Russell King - ARM Linux Date: Mon, 3 Jan 2011 22:32:05 +0000 Subject: [PATCH] --- yaml --- r: 231570 b: refs/heads/master c: 9c0bb43bbd02fba0b235f8993d1f175734fa8735 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/dma/amba-pl08x.c | 12 ++++-------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index a9464e121488..a66dbd60aec2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: dafa73171be8dd31b485f5839e3376b1ca908e24 +refs/heads/master: 9c0bb43bbd02fba0b235f8993d1f175734fa8735 diff --git a/trunk/drivers/dma/amba-pl08x.c b/trunk/drivers/dma/amba-pl08x.c index b3b3180ce561..9a8d44504c6a 100644 --- a/trunk/drivers/dma/amba-pl08x.c +++ b/trunk/drivers/dma/amba-pl08x.c @@ -1294,15 +1294,11 @@ static void pl08x_issue_pending(struct dma_chan *chan) unsigned long flags; spin_lock_irqsave(&plchan->lock, flags); - /* Something is already active */ - if (plchan->at) { - spin_unlock_irqrestore(&plchan->lock, flags); - return; - } - - /* Didn't get a physical channel so waiting for it ... */ - if (plchan->state == PL08X_CHAN_WAITING) + /* Something is already active, or we're waiting for a channel... */ + if (plchan->at || plchan->state == PL08X_CHAN_WAITING) { + spin_unlock_irqrestore(&plchan->lock, flags); return; + } /* Take the first element in the queue and execute it */ if (!list_empty(&plchan->desc_list)) {