Blame view

include/linux/swiotlb.h 3.3 KB
1648993fb   Joerg Roedel   introduce generic...
1
2
3
4
5
6
7
8
  #ifndef __LINUX_SWIOTLB_H
  #define __LINUX_SWIOTLB_H
  
  #include <linux/types.h>
  
  struct device;
  struct dma_attrs;
  struct scatterlist;
6959450e5   FUJITA Tomonori   swiotlb: Remove d...
9
  extern int swiotlb_force;
0016fdee9   Ian Campbell   swiotlb: move som...
10
11
12
13
14
15
  /*
   * Maximum allowable number of contiguous slabs to map,
   * must be a power of 2.  What is the appropriate value ?
   * The complexity of {map,unmap}_single is linearly dependent on this value.
   */
  #define IO_TLB_SEGSIZE	128
0016fdee9   Ian Campbell   swiotlb: move som...
16
17
18
19
20
  /*
   * log of the size of each IO TLB slab.  The number of slabs is command line
   * controllable.
   */
  #define IO_TLB_SHIFT 11
ad32e8cb8   FUJITA Tomonori   swiotlb: Defer sw...
21
  extern void swiotlb_init(int verbose);
abbceff7d   FUJITA Tomonori   swiotlb: add the ...
22
  extern void swiotlb_init_with_tbl(char *tlb, unsigned long nslabs, int verbose);
f21ffe9f6   Konrad Rzeszutek Wilk   swiotlb: Expose s...
23
  extern unsigned long swiotlb_nr_tbl(void);
1648993fb   Joerg Roedel   introduce generic...
24

d7ef1533a   Konrad Rzeszutek Wilk   swiotlb: Make swi...
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
  /*
   * Enumeration for sync targets
   */
  enum dma_sync_target {
  	SYNC_FOR_CPU = 0,
  	SYNC_FOR_DEVICE = 1,
  };
  extern void *swiotlb_tbl_map_single(struct device *hwdev, dma_addr_t tbl_dma_addr,
  				    phys_addr_t phys, size_t size,
  				    enum dma_data_direction dir);
  
  extern void swiotlb_tbl_unmap_single(struct device *hwdev, char *dma_addr,
  				     size_t size, enum dma_data_direction dir);
  
  extern void swiotlb_tbl_sync_single(struct device *hwdev, char *dma_addr,
  				    size_t size, enum dma_data_direction dir,
  				    enum dma_sync_target target);
  
  /* Accessory functions. */
  extern void swiotlb_bounce(phys_addr_t phys, char *dma_addr, size_t size,
  			   enum dma_data_direction dir);
1648993fb   Joerg Roedel   introduce generic...
46
47
48
49
50
51
52
  extern void
  *swiotlb_alloc_coherent(struct device *hwdev, size_t size,
  			dma_addr_t *dma_handle, gfp_t flags);
  
  extern void
  swiotlb_free_coherent(struct device *hwdev, size_t size,
  		      void *vaddr, dma_addr_t dma_handle);
f98eee8ea   FUJITA Tomonori   x86, ia64: remove...
53
54
55
56
57
58
59
  extern dma_addr_t swiotlb_map_page(struct device *dev, struct page *page,
  				   unsigned long offset, size_t size,
  				   enum dma_data_direction dir,
  				   struct dma_attrs *attrs);
  extern void swiotlb_unmap_page(struct device *hwdev, dma_addr_t dev_addr,
  			       size_t size, enum dma_data_direction dir,
  			       struct dma_attrs *attrs);
1648993fb   Joerg Roedel   introduce generic...
60
61
62
  
  extern int
  swiotlb_map_sg(struct device *hwdev, struct scatterlist *sg, int nents,
22d482699   Konrad Rzeszutek Wilk   swiotlb: search a...
63
  	       enum dma_data_direction dir);
1648993fb   Joerg Roedel   introduce generic...
64
65
66
  
  extern void
  swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents,
22d482699   Konrad Rzeszutek Wilk   swiotlb: search a...
67
  		 enum dma_data_direction dir);
1648993fb   Joerg Roedel   introduce generic...
68
69
70
  
  extern int
  swiotlb_map_sg_attrs(struct device *hwdev, struct scatterlist *sgl, int nelems,
160c1d8e4   FUJITA Tomonori   x86, ia64: conver...
71
  		     enum dma_data_direction dir, struct dma_attrs *attrs);
1648993fb   Joerg Roedel   introduce generic...
72
73
74
  
  extern void
  swiotlb_unmap_sg_attrs(struct device *hwdev, struct scatterlist *sgl,
160c1d8e4   FUJITA Tomonori   x86, ia64: conver...
75
76
  		       int nelems, enum dma_data_direction dir,
  		       struct dma_attrs *attrs);
1648993fb   Joerg Roedel   introduce generic...
77
78
79
  
  extern void
  swiotlb_sync_single_for_cpu(struct device *hwdev, dma_addr_t dev_addr,
160c1d8e4   FUJITA Tomonori   x86, ia64: conver...
80
  			    size_t size, enum dma_data_direction dir);
1648993fb   Joerg Roedel   introduce generic...
81
82
83
  
  extern void
  swiotlb_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg,
160c1d8e4   FUJITA Tomonori   x86, ia64: conver...
84
  			int nelems, enum dma_data_direction dir);
1648993fb   Joerg Roedel   introduce generic...
85
86
87
  
  extern void
  swiotlb_sync_single_for_device(struct device *hwdev, dma_addr_t dev_addr,
160c1d8e4   FUJITA Tomonori   x86, ia64: conver...
88
  			       size_t size, enum dma_data_direction dir);
1648993fb   Joerg Roedel   introduce generic...
89
90
91
  
  extern void
  swiotlb_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg,
160c1d8e4   FUJITA Tomonori   x86, ia64: conver...
92
  			   int nelems, enum dma_data_direction dir);
1648993fb   Joerg Roedel   introduce generic...
93

1648993fb   Joerg Roedel   introduce generic...
94
95
96
97
98
  extern int
  swiotlb_dma_mapping_error(struct device *hwdev, dma_addr_t dma_addr);
  
  extern int
  swiotlb_dma_supported(struct device *hwdev, u64 mask);
5740afdb6   FUJITA Tomonori   swiotlb: Add swio...
99
100
101
102
103
  #ifdef CONFIG_SWIOTLB
  extern void __init swiotlb_free(void);
  #else
  static inline void swiotlb_free(void) { }
  #endif
ad32e8cb8   FUJITA Tomonori   swiotlb: Defer sw...
104
  extern void swiotlb_print_info(void);
1648993fb   Joerg Roedel   introduce generic...
105
  #endif /* __LINUX_SWIOTLB_H */