Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #ifndef _ASM_SCATTERLIST_H |
2 | #define _ASM_SCATTERLIST_H | |
3 | ||
a9dfd281 JD |
4 | #include <asm/types.h> |
5 | ||
1da177e4 | 6 | /* |
d09d276e | 7 | * Drivers must set either ->address or (preferred) page and ->offset |
1da177e4 LT |
8 | * to indicate where data must be transferred to/from. |
9 | * | |
d09d276e | 10 | * Using page is recommended since it handles highmem data as well as |
1da177e4 | 11 | * low mem. ->address is restricted to data which has a virtual mapping, and |
d09d276e | 12 | * it will go away in the future. Updating to page can be automated very |
1da177e4 LT |
13 | * easily -- something like |
14 | * | |
15 | * sg->address = some_ptr; | |
16 | * | |
17 | * can be rewritten as | |
18 | * | |
642f1490 | 19 | * sg_set_buf(sg, some_ptr, length); |
1da177e4 LT |
20 | * |
21 | * and that's it. There's no excuse for not highmem enabling YOUR driver. /jens | |
22 | */ | |
23 | struct scatterlist { | |
d6ec0842 JA |
24 | #ifdef CONFIG_DEBUG_SG |
25 | unsigned long sg_magic; | |
26 | #endif | |
18dabf47 | 27 | unsigned long page_link; |
1da177e4 LT |
28 | unsigned int offset; /* for highmem, page offset */ |
29 | ||
30 | dma_addr_t dma_address; | |
31 | unsigned int length; | |
32 | }; | |
33 | ||
82b12e23 RD |
34 | /* |
35 | * These macros should be used after a pci_map_sg call has been done | |
36 | * to get bus addresses of each of the SG entries and their lengths. | |
37 | * You should only work with the number of sg entries pci_map_sg | |
38 | * returns, or alternatively stop on the first sg_dma_len(sg) which | |
39 | * is 0. | |
40 | */ | |
41 | #define sg_dma_address(sg) ((sg)->dma_address) | |
42 | #define sg_dma_len(sg) ((sg)->length) | |
43 | ||
1da177e4 LT |
44 | #define ISA_DMA_THRESHOLD (0xffffffffUL) |
45 | ||
46 | #endif /* !_ASM_SCATTERLIST_H */ |