Blame view

include/linux/dma-mapping.h 2.87 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  #ifndef _ASM_LINUX_DMA_MAPPING_H
  #define _ASM_LINUX_DMA_MAPPING_H
  
  #include <linux/device.h>
  #include <linux/err.h>
  
  /* These definitions mirror those in pci.h, so they can be used
   * interchangeably with their PCI_ counterparts */
  enum dma_data_direction {
  	DMA_BIDIRECTIONAL = 0,
  	DMA_TO_DEVICE = 1,
  	DMA_FROM_DEVICE = 2,
  	DMA_NONE = 3,
  };
  
  #define DMA_64BIT_MASK	0xffffffffffffffffULL
4c1b46226   Francois Romieu   dl2k: use DMA_48B...
17
  #define DMA_48BIT_MASK	0x0000ffffffffffffULL
b8112df71   Lee Revell   [SCSI] Add DMA ma...
18
19
  #define DMA_40BIT_MASK	0x000000ffffffffffULL
  #define DMA_39BIT_MASK	0x0000007fffffffffULL
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
20
  #define DMA_32BIT_MASK	0x00000000ffffffffULL
b8112df71   Lee Revell   [SCSI] Add DMA ma...
21
22
23
  #define DMA_31BIT_MASK	0x000000007fffffffULL
  #define DMA_30BIT_MASK	0x000000003fffffffULL
  #define DMA_29BIT_MASK	0x000000001fffffffULL
9d2f928dd   Tobias Klauser   [PATCH] Intruduce...
24
  #define DMA_28BIT_MASK	0x000000000fffffffULL
56b146d36   Tobias Klauser   [PATCH] Last DMA_...
25
  #define DMA_24BIT_MASK	0x0000000000ffffffULL
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
26

d6bd3a39f   Rolf Eike Beer   [PATCH] Move vali...
27
28
29
30
31
32
  static inline int valid_dma_direction(int dma_direction)
  {
  	return ((dma_direction == DMA_BIDIRECTIONAL) ||
  		(dma_direction == DMA_TO_DEVICE) ||
  		(dma_direction == DMA_FROM_DEVICE));
  }
1b0fac458   Dan Williams   dma-mapping: prev...
33
  #ifdef CONFIG_HAS_DMA
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
34
  #include <asm/dma-mapping.h>
1b0fac458   Dan Williams   dma-mapping: prev...
35
36
37
  #else
  #include <asm-generic/dma-mapping-broken.h>
  #endif
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
  
  /* Backwards compat, remove in 2.7.x */
  #define dma_sync_single		dma_sync_single_for_cpu
  #define dma_sync_sg		dma_sync_sg_for_cpu
  
  extern u64 dma_get_required_mask(struct device *dev);
  
  /* flags for the coherent memory api */
  #define	DMA_MEMORY_MAP			0x01
  #define DMA_MEMORY_IO			0x02
  #define DMA_MEMORY_INCLUDES_CHILDREN	0x04
  #define DMA_MEMORY_EXCLUSIVE		0x08
  
  #ifndef ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY
  static inline int
  dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr,
  			    dma_addr_t device_addr, size_t size, int flags)
  {
  	return 0;
  }
  
  static inline void
  dma_release_declared_memory(struct device *dev)
  {
  }
  
  static inline void *
  dma_mark_declared_memory_occupied(struct device *dev,
  				  dma_addr_t device_addr, size_t size)
  {
  	return ERR_PTR(-EBUSY);
  }
  #endif
9ac7849e3   Tejun Heo   devres: device re...
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
  /*
   * Managed DMA API
   */
  extern void *dmam_alloc_coherent(struct device *dev, size_t size,
  				 dma_addr_t *dma_handle, gfp_t gfp);
  extern void dmam_free_coherent(struct device *dev, size_t size, void *vaddr,
  			       dma_addr_t dma_handle);
  extern void *dmam_alloc_noncoherent(struct device *dev, size_t size,
  				    dma_addr_t *dma_handle, gfp_t gfp);
  extern void dmam_free_noncoherent(struct device *dev, size_t size, void *vaddr,
  				  dma_addr_t dma_handle);
  #ifdef ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY
  extern int dmam_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr,
  					dma_addr_t device_addr, size_t size,
  					int flags);
  extern void dmam_release_declared_memory(struct device *dev);
  #else /* ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY */
  static inline int dmam_declare_coherent_memory(struct device *dev,
  				dma_addr_t bus_addr, dma_addr_t device_addr,
  				size_t size, gfp_t gfp)
  {
  	return 0;
  }
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
94

9ac7849e3   Tejun Heo   devres: device re...
95
96
97
98
  static inline void dmam_release_declared_memory(struct device *dev)
  {
  }
  #endif /* ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
99

9ac7849e3   Tejun Heo   devres: device re...
100
  #endif