Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
swiotlb.h
Go to the documentation of this file.
1
#ifndef __LINUX_SWIOTLB_H
2
#define __LINUX_SWIOTLB_H
3
4
#include <linux/types.h>
5
6
struct
device
;
7
struct
dma_attrs
;
8
struct
scatterlist
;
9
10
extern
int
swiotlb_force
;
11
12
/*
13
* Maximum allowable number of contiguous slabs to map,
14
* must be a power of 2. What is the appropriate value ?
15
* The complexity of {map,unmap}_single is linearly dependent on this value.
16
*/
17
#define IO_TLB_SEGSIZE 128
18
19
/*
20
* log of the size of each IO TLB slab. The number of slabs is command line
21
* controllable.
22
*/
23
#define IO_TLB_SHIFT 11
24
25
extern
void
swiotlb_init
(
int
verbose
);
26
extern
void
swiotlb_init_with_tbl
(
char
*tlb,
unsigned
long
nslabs,
int
verbose
);
27
extern
unsigned
long
swiotlb_nr_tbl
(
void
);
28
extern
int
swiotlb_late_init_with_tbl
(
char
*tlb,
unsigned
long
nslabs);
29
30
/*
31
* Enumeration for sync targets
32
*/
33
enum
dma_sync_target
{
34
SYNC_FOR_CPU
= 0,
35
SYNC_FOR_DEVICE
= 1,
36
};
37
extern
void
*
swiotlb_tbl_map_single
(
struct
device
*hwdev,
dma_addr_t
tbl_dma_addr,
38
phys_addr_t
phys
,
size_t
size
,
39
enum
dma_data_direction
dir);
40
41
extern
void
swiotlb_tbl_unmap_single
(
struct
device
*hwdev,
char
*
dma_addr
,
42
size_t
size
,
enum
dma_data_direction
dir);
43
44
extern
void
swiotlb_tbl_sync_single
(
struct
device
*hwdev,
char
*
dma_addr
,
45
size_t
size
,
enum
dma_data_direction
dir,
46
enum
dma_sync_target
target
);
47
48
/* Accessory functions. */
49
extern
void
swiotlb_bounce
(
phys_addr_t
phys
,
char
*
dma_addr
,
size_t
size
,
50
enum
dma_data_direction
dir);
51
52
extern
void
53
*
swiotlb_alloc_coherent
(
struct
device
*hwdev,
size_t
size
,
54
dma_addr_t
*
dma_handle
,
gfp_t
flags
);
55
56
extern
void
57
swiotlb_free_coherent
(
struct
device
*hwdev,
size_t
size
,
58
void
*
vaddr
,
dma_addr_t
dma_handle
);
59
60
extern
dma_addr_t
swiotlb_map_page
(
struct
device
*
dev
,
struct
page
*
page
,
61
unsigned
long
offset
,
size_t
size
,
62
enum
dma_data_direction
dir,
63
struct
dma_attrs
*attrs);
64
extern
void
swiotlb_unmap_page
(
struct
device
*hwdev,
dma_addr_t
dev_addr,
65
size_t
size
,
enum
dma_data_direction
dir,
66
struct
dma_attrs
*attrs);
67
68
extern
int
69
swiotlb_map_sg
(
struct
device
*hwdev,
struct
scatterlist
*
sg
,
int
nents,
70
enum
dma_data_direction
dir);
71
72
extern
void
73
swiotlb_unmap_sg
(
struct
device
*hwdev,
struct
scatterlist
*
sg
,
int
nents,
74
enum
dma_data_direction
dir);
75
76
extern
int
77
swiotlb_map_sg_attrs
(
struct
device
*hwdev,
struct
scatterlist
*
sgl
,
int
nelems,
78
enum
dma_data_direction
dir,
struct
dma_attrs
*attrs);
79
80
extern
void
81
swiotlb_unmap_sg_attrs
(
struct
device
*hwdev,
struct
scatterlist
*
sgl
,
82
int
nelems,
enum
dma_data_direction
dir,
83
struct
dma_attrs
*attrs);
84
85
extern
void
86
swiotlb_sync_single_for_cpu
(
struct
device
*hwdev,
dma_addr_t
dev_addr,
87
size_t
size
,
enum
dma_data_direction
dir);
88
89
extern
void
90
swiotlb_sync_sg_for_cpu
(
struct
device
*hwdev,
struct
scatterlist
*
sg
,
91
int
nelems,
enum
dma_data_direction
dir);
92
93
extern
void
94
swiotlb_sync_single_for_device
(
struct
device
*hwdev,
dma_addr_t
dev_addr,
95
size_t
size
,
enum
dma_data_direction
dir);
96
97
extern
void
98
swiotlb_sync_sg_for_device
(
struct
device
*hwdev,
struct
scatterlist
*
sg
,
99
int
nelems,
enum
dma_data_direction
dir);
100
101
extern
int
102
swiotlb_dma_mapping_error
(
struct
device
*hwdev,
dma_addr_t
dma_addr
);
103
104
extern
int
105
swiotlb_dma_supported
(
struct
device
*hwdev,
u64
mask
);
106
107
#ifdef CONFIG_SWIOTLB
108
extern
void
__init
swiotlb_free
(
void
);
109
#else
110
static
inline
void
swiotlb_free
(
void
) { }
111
#endif
112
113
extern
void
swiotlb_print_info
(
void
);
114
#endif
/* __LINUX_SWIOTLB_H */
Generated on Thu Jan 10 2013 13:06:22 for Linux Kernel by
1.8.2