linux/arch/arc/mm/dma.c
/*
 * Plug in coherent or noncoherent dma ops
 */
Plug in coherent or noncoherent dma ops
Plug in coherent or noncoherent dma ops
void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size,
			const struct iommu_ops *iommu, bool coherent)
{
	if (is_isa_arcv2() && ioc_enable && coherent) {
		set_dma_ops(dev, &dma_direct_ops);
		dev_info(dev, "use dma_direct_ops cache ops\n");
	} else {
		set_dma_ops(dev, &dma_noncoherent_ops);
		dev_info(dev, "use dma_noncoherent_ops cache ops\n");
	}
}
void arch_setup_dma_ops ( struct device * dev , u64 dma_base , u64 size , const struct iommu_ops * iommu , bool coherent ) { if ( is_isa_arcv2 ( ) && ioc_enable && coherent ) { set_dma_ops ( dev , & dma_direct_ops ) ; dev_info ( dev , " \n " ) ; } else { set_dma_ops ( dev , & dma_noncoherent_ops ) ; dev_info ( dev , " \n " ) ; } }
Plug in coherent or noncoherent dma ops
Plug in coherent or noncoherent dma ops
/*
	 * IOC hardware snoops all DMA traffic keeping the caches consistent
	 * with memory - eliding need for any explicit cache maintenance of
	 * DMA buffers - so we can use dma_direct cache ops.
	 */