|
@@ -146,7 +146,8 @@ static dma_addr_t avr32_dma_map_page(struct device *dev, struct page *page,
|
|
|
{
|
|
|
void *cpu_addr = page_address(page) + offset;
|
|
|
|
|
|
- dma_cache_sync(dev, cpu_addr, size, direction);
|
|
|
+ if (!(attrs & DMA_ATTR_SKIP_CPU_SYNC))
|
|
|
+ dma_cache_sync(dev, cpu_addr, size, direction);
|
|
|
return virt_to_bus(cpu_addr);
|
|
|
}
|
|
|
|
|
@@ -162,6 +163,10 @@ static int avr32_dma_map_sg(struct device *dev, struct scatterlist *sglist,
|
|
|
|
|
|
sg->dma_address = page_to_bus(sg_page(sg)) + sg->offset;
|
|
|
virt = sg_virt(sg);
|
|
|
+
|
|
|
+ if (attrs & DMA_ATTR_SKIP_CPU_SYNC)
|
|
|
+ continue;
|
|
|
+
|
|
|
dma_cache_sync(dev, virt, sg->length, direction);
|
|
|
}
|
|
|
|