Commit | Line | Data |
---|---|---|
22456b97 GC |
1 | #include <linux/mm.h> |
2 | #include <linux/kernel.h> | |
3 | #include <linux/module.h> | |
4 | #include <linux/dma-mapping.h> | |
5 | #include <asm/dma-mapping.h> | |
6 | ||
7 | static dma_addr_t pci32_map_single(struct device *dev, void *ptr, | |
8 | size_t size, int direction) | |
9 | { | |
10 | WARN_ON(size == 0); | |
11 | flush_write_buffers(); | |
12 | return virt_to_phys(ptr); | |
13 | } | |
14 | ||
16a3ce9b GC |
15 | static int pci32_dma_map_sg(struct device *dev, struct scatterlist *sglist, |
16 | int nents, int direction) | |
17 | { | |
18 | struct scatterlist *sg; | |
19 | int i; | |
20 | ||
21 | WARN_ON(nents == 0 || sglist[0].length == 0); | |
22 | ||
23 | for_each_sg(sglist, sg, nents, i) { | |
24 | BUG_ON(!sg_page(sg)); | |
25 | ||
26 | sg->dma_address = sg_phys(sg); | |
27 | } | |
28 | ||
29 | flush_write_buffers(); | |
30 | return nents; | |
31 | } | |
32 | ||
22456b97 GC |
33 | static const struct dma_mapping_ops pci32_dma_ops = { |
34 | .map_single = pci32_map_single, | |
0cb0ae68 | 35 | .unmap_single = NULL, |
16a3ce9b | 36 | .map_sg = pci32_dma_map_sg, |
72c784f8 | 37 | .unmap_sg = NULL, |
22456b97 GC |
38 | }; |
39 | ||
40 | const struct dma_mapping_ops *dma_ops = &pci32_dma_ops; | |
41 | EXPORT_SYMBOL(dma_ops); |