@@ -529,15 +529,12 @@ static void atc_advance_work(struct at_dma_chan *atchan)
desc = atc_first_active(atchan);
/* Remove the transfer node from the active list. */
list_del_init(&desc->desc_node);
- spin_unlock_irqrestore(&atchan->lock, flags);
- atc_chain_complete(atchan, desc);
-
/* advance work */
- spin_lock_irqsave(&atchan->lock, flags);
atc_start_next(atchan);
spin_unlock_irqrestore(&atchan->lock, flags);
-}
+ atc_chain_complete(atchan, desc);
+}
/**
* atc_handle_error - handle errors reported by DMA controller