Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/microblaze/kernel/dma.c
26442 views
1
// SPDX-License-Identifier: GPL-2.0
2
/*
3
* Copyright (C) 2009-2010 PetaLogix
4
* Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corporation
5
*
6
* Provide default implementations of the DMA mapping callbacks for
7
* directly mapped busses.
8
*/
9
10
#include <linux/device.h>
11
#include <linux/dma-map-ops.h>
12
#include <linux/gfp.h>
13
#include <linux/export.h>
14
#include <linux/bug.h>
15
#include <asm/cacheflush.h>
16
17
static void __dma_sync(phys_addr_t paddr, size_t size,
18
enum dma_data_direction direction)
19
{
20
switch (direction) {
21
case DMA_TO_DEVICE:
22
case DMA_BIDIRECTIONAL:
23
flush_dcache_range(paddr, paddr + size);
24
break;
25
case DMA_FROM_DEVICE:
26
invalidate_dcache_range(paddr, paddr + size);
27
break;
28
default:
29
BUG();
30
}
31
}
32
33
void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
34
enum dma_data_direction dir)
35
{
36
__dma_sync(paddr, size, dir);
37
}
38
39
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
40
enum dma_data_direction dir)
41
{
42
__dma_sync(paddr, size, dir);
43
}
44
45