]> Pileus Git - ~andy/linux/commitdiff
dmaengine/dw_dmac: don't scan descriptors if no xfers in progress
authorJamie Iles <jamie@jamieiles.com>
Fri, 21 Jan 2011 14:11:52 +0000 (14:11 +0000)
committerDan Williams <dan.j.williams@intel.com>
Sun, 30 Jan 2011 07:06:28 +0000 (23:06 -0800)
Some hardware (picoChip picoXCell in particular) sometimes has
the block transfer complete bit being set for a channel after the
whole transfer has completed. If we don't have any transfers in the
active list then don't bother to scan the descriptors. This often
happens in normal operation and doesn't require the channel to be
reset.

v2: cleanup whitespace

Signed-off-by: Jamie Iles <jamie.iles@picochip.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/dma/dw_dmac.c

index a3991ab0d67e06cf6e99d41d9a1a923109dc1a06..db22754be35d06ba7a3cb4ee2c1a8cb5d8ac07b7 100644 (file)
@@ -291,6 +291,9 @@ static void dwc_scan_descriptors(struct dw_dma *dw, struct dw_dma_chan *dwc)
                return;
        }
 
+       if (list_empty(&dwc->active_list))
+               return;
+
        dev_vdbg(chan2dev(&dwc->chan), "scan_descriptors: llp=0x%x\n", llp);
 
        list_for_each_entry_safe(desc, _desc, &dwc->active_list, desc_node) {