Line data Source code
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 1 :
17 1 : /*
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 1 : * 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 */
|