Commit | Line | Data |
---|---|---|
aafe4dbe AB |
1 | #ifndef __ASM_GENERIC_SCATTERLIST_H |
2 | #define __ASM_GENERIC_SCATTERLIST_H | |
3 | ||
4 | #include <linux/types.h> | |
5 | ||
6 | struct scatterlist { | |
7 | #ifdef CONFIG_DEBUG_SG | |
8 | unsigned long sg_magic; | |
9 | #endif | |
10 | unsigned long page_link; | |
11 | unsigned int offset; | |
12 | unsigned int length; | |
13 | dma_addr_t dma_address; | |
14 | unsigned int dma_length; | |
15 | }; | |
16 | ||
17 | /* | |
18 | * These macros should be used after a dma_map_sg call has been done | |
19 | * to get bus addresses of each of the SG entries and their lengths. | |
20 | * You should only work with the number of sg entries pci_map_sg | |
21 | * returns, or alternatively stop on the first sg_dma_len(sg) which | |
22 | * is 0. | |
23 | */ | |
24 | #define sg_dma_address(sg) ((sg)->dma_address) | |
25 | #ifndef sg_dma_len | |
26 | /* | |
27 | * Normally, you have an iommu on 64 bit machines, but not on 32 bit | |
28 | * machines. Architectures that are differnt should override this. | |
29 | */ | |
30 | #if __BITS_PER_LONG == 64 | |
31 | #define sg_dma_len(sg) ((sg)->dma_length) | |
32 | #else | |
33 | #define sg_dma_len(sg) ((sg)->length) | |
34 | #endif /* 64 bit */ | |
35 | #endif /* sg_dma_len */ | |
36 | ||
37 | #ifndef ISA_DMA_THRESHOLD | |
38 | #define ISA_DMA_THRESHOLD (~0UL) | |
39 | #endif | |
40 | ||
41 | #define ARCH_HAS_SG_CHAIN | |
42 | ||
43 | #endif /* __ASM_GENERIC_SCATTERLIST_H */ |