diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/dma/amba-pl08x.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/dma/amba-pl08x.c b/drivers/dma/amba-pl08x.c index b6132845e65..30b6921f094 100644 --- a/drivers/dma/amba-pl08x.c +++ b/drivers/dma/amba-pl08x.c | |||
@@ -1671,10 +1671,7 @@ static void pl08x_tasklet(unsigned long data) | |||
1671 | spin_lock_irqsave(&plchan->lock, flags); | 1671 | spin_lock_irqsave(&plchan->lock, flags); |
1672 | list_splice_tail_init(&plchan->done_list, &head); | 1672 | list_splice_tail_init(&plchan->done_list, &head); |
1673 | 1673 | ||
1674 | /* If a new descriptor is queued, set it up plchan->at is NULL here */ | 1674 | if (plchan->at || !list_empty(&plchan->pend_list) || plchan->phychan_hold) { |
1675 | if (!list_empty(&plchan->issued_list)) { | ||
1676 | pl08x_start_next_txd(plchan); | ||
1677 | } else if (!list_empty(&plchan->pend_list) || plchan->phychan_hold) { | ||
1678 | /* | 1675 | /* |
1679 | * This channel is still in use - we have a new txd being | 1676 | * This channel is still in use - we have a new txd being |
1680 | * prepared and will soon be queued. Don't give up the | 1677 | * prepared and will soon be queued. Don't give up the |
@@ -1786,6 +1783,10 @@ static irqreturn_t pl08x_irq(int irq, void *dev) | |||
1786 | pl08x_release_mux(plchan); | 1783 | pl08x_release_mux(plchan); |
1787 | dma_cookie_complete(&tx->tx); | 1784 | dma_cookie_complete(&tx->tx); |
1788 | list_add_tail(&tx->node, &plchan->done_list); | 1785 | list_add_tail(&tx->node, &plchan->done_list); |
1786 | |||
1787 | /* And start the next descriptor */ | ||
1788 | if (!list_empty(&plchan->issued_list)) | ||
1789 | pl08x_start_next_txd(plchan); | ||
1789 | } | 1790 | } |
1790 | spin_unlock(&plchan->lock); | 1791 | spin_unlock(&plchan->lock); |
1791 | 1792 | ||