aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc/include
diff options
context:
space:
mode:
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2009-05-14 12:23:10 -0400
committerDavid S. Miller <davem@davemloft.net>2009-06-16 07:56:45 -0400
commit797a75686528e9f6f9bfee2a719a00b47868c999 (patch)
tree98f5aadddd6b373e69719b95bb2fd68fbe1fe29f /arch/sparc/include
parent2e8fcfe2e51b2ee0fef3313e3c9ec25b9d6ed255 (diff)
sparc: use dma_map_page instead of dma_map_single
This patch converts dma_map_single and dma_unmap_single to use map_page and unmap_page respectively and removes unnecessary map_single and unmap_single. map_page can be used to implement map_single but the opposite is impossible. Having only dma_map_page in struct dma_ops is enough. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Tested-by: Robert Reif <reif@earthlink.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/include')
-rw-r--r--arch/sparc/include/asm/dma-mapping_64.h23
1 files changed, 12 insertions, 11 deletions
diff --git a/arch/sparc/include/asm/dma-mapping_64.h b/arch/sparc/include/asm/dma-mapping_64.h
index 0c4fb1f81caf..579757e00a25 100644
--- a/arch/sparc/include/asm/dma-mapping_64.h
+++ b/arch/sparc/include/asm/dma-mapping_64.h
@@ -9,12 +9,12 @@ struct dma_ops {
9 dma_addr_t *dma_handle, gfp_t flag); 9 dma_addr_t *dma_handle, gfp_t flag);
10 void (*free_coherent)(struct device *dev, size_t size, 10 void (*free_coherent)(struct device *dev, size_t size,
11 void *cpu_addr, dma_addr_t dma_handle); 11 void *cpu_addr, dma_addr_t dma_handle);
12 dma_addr_t (*map_single)(struct device *dev, void *cpu_addr, 12 dma_addr_t (*map_page)(struct device *dev, struct page *page,
13 size_t size, 13 unsigned long offset, size_t size,
14 enum dma_data_direction direction); 14 enum dma_data_direction direction);
15 void (*unmap_single)(struct device *dev, dma_addr_t dma_addr, 15 void (*unmap_page)(struct device *dev, dma_addr_t dma_addr,
16 size_t size, 16 size_t size,
17 enum dma_data_direction direction); 17 enum dma_data_direction direction);
18 int (*map_sg)(struct device *dev, struct scatterlist *sg, int nents, 18 int (*map_sg)(struct device *dev, struct scatterlist *sg, int nents,
19 enum dma_data_direction direction); 19 enum dma_data_direction direction);
20 void (*unmap_sg)(struct device *dev, struct scatterlist *sg, 20 void (*unmap_sg)(struct device *dev, struct scatterlist *sg,
@@ -51,29 +51,30 @@ static inline dma_addr_t dma_map_single(struct device *dev, void *cpu_addr,
51 size_t size, 51 size_t size,
52 enum dma_data_direction direction) 52 enum dma_data_direction direction)
53{ 53{
54 return dma_ops->map_single(dev, cpu_addr, size, direction); 54 return dma_ops->map_page(dev, virt_to_page(cpu_addr),
55 (unsigned long)cpu_addr & ~PAGE_MASK, size,
56 direction);
55} 57}
56 58
57static inline void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, 59static inline void dma_unmap_single(struct device *dev, dma_addr_t dma_addr,
58 size_t size, 60 size_t size,
59 enum dma_data_direction direction) 61 enum dma_data_direction direction)
60{ 62{
61 dma_ops->unmap_single(dev, dma_addr, size, direction); 63 dma_ops->unmap_page(dev, dma_addr, size, direction);
62} 64}
63 65
64static inline dma_addr_t dma_map_page(struct device *dev, struct page *page, 66static inline dma_addr_t dma_map_page(struct device *dev, struct page *page,
65 unsigned long offset, size_t size, 67 unsigned long offset, size_t size,
66 enum dma_data_direction direction) 68 enum dma_data_direction direction)
67{ 69{
68 return dma_ops->map_single(dev, page_address(page) + offset, 70 return dma_ops->map_page(dev, page, offset, size, direction);
69 size, direction);
70} 71}
71 72
72static inline void dma_unmap_page(struct device *dev, dma_addr_t dma_address, 73static inline void dma_unmap_page(struct device *dev, dma_addr_t dma_address,
73 size_t size, 74 size_t size,
74 enum dma_data_direction direction) 75 enum dma_data_direction direction)
75{ 76{
76 dma_ops->unmap_single(dev, dma_address, size, direction); 77 dma_ops->unmap_page(dev, dma_address, size, direction);
77} 78}
78 79
79static inline int dma_map_sg(struct device *dev, struct scatterlist *sg, 80static inline int dma_map_sg(struct device *dev, struct scatterlist *sg,