Merge git://git.infradead.org/mtd-2.6
[linux-2.6] / include / asm-frv / scatterlist.h
1 #ifndef _ASM_SCATTERLIST_H
2 #define _ASM_SCATTERLIST_H
3
4 #include <asm/types.h>
5
6 /*
7  * Drivers must set either ->address or (preferred) page and ->offset
8  * to indicate where data must be transferred to/from.
9  *
10  * Using page is recommended since it handles highmem data as well as
11  * low mem. ->address is restricted to data which has a virtual mapping, and
12  * it will go away in the future. Updating to page can be automated very
13  * easily -- something like
14  *
15  * sg->address = some_ptr;
16  *
17  * can be rewritten as
18  *
19  * sg_set_buf(sg, some_ptr, length);
20  *
21  * and that's it. There's no excuse for not highmem enabling YOUR driver. /jens
22  */
23 struct scatterlist {
24 #ifdef CONFIG_DEBUG_SG
25         unsigned long   sg_magic;
26 #endif
27         unsigned long   page_link;
28         unsigned int    offset;         /* for highmem, page offset */
29
30         dma_addr_t      dma_address;
31         unsigned int    length;
32 };
33
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
44 #define ISA_DMA_THRESHOLD (0xffffffffUL)
45
46 #endif /* !_ASM_SCATTERLIST_H */