diff options
author | Christian Borntraeger <borntraeger@de.ibm.com> | 2016-02-03 00:46:33 -0500 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2016-03-02 10:01:55 -0500 |
commit | 6aca0503847f6329460b15b3ab2b0e30bb752793 (patch) | |
tree | 241bc3366e80c345d9a5e86c753e8865441070ce | |
parent | a8463d4b0e47d1f37af684d97884ffcf35de043b (diff) |
alpha/dma: use common noop dma ops
Some of the alpha pci noop dma ops are identical to the common ones.
Use them.
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Reviewed-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Andy Lutomirski <luto@kernel.org>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
-rw-r--r-- | arch/alpha/kernel/pci-noop.c | 46 |
1 files changed, 4 insertions, 42 deletions
diff --git a/arch/alpha/kernel/pci-noop.c b/arch/alpha/kernel/pci-noop.c index 2b1f4a1e9272..8e735b5e56bd 100644 --- a/arch/alpha/kernel/pci-noop.c +++ b/arch/alpha/kernel/pci-noop.c | |||
@@ -123,44 +123,6 @@ static void *alpha_noop_alloc_coherent(struct device *dev, size_t size, | |||
123 | return ret; | 123 | return ret; |
124 | } | 124 | } |
125 | 125 | ||
126 | static void alpha_noop_free_coherent(struct device *dev, size_t size, | ||
127 | void *cpu_addr, dma_addr_t dma_addr, | ||
128 | struct dma_attrs *attrs) | ||
129 | { | ||
130 | free_pages((unsigned long)cpu_addr, get_order(size)); | ||
131 | } | ||
132 | |||
133 | static dma_addr_t alpha_noop_map_page(struct device *dev, struct page *page, | ||
134 | unsigned long offset, size_t size, | ||
135 | enum dma_data_direction dir, | ||
136 | struct dma_attrs *attrs) | ||
137 | { | ||
138 | return page_to_pa(page) + offset; | ||
139 | } | ||
140 | |||
141 | static int alpha_noop_map_sg(struct device *dev, struct scatterlist *sgl, int nents, | ||
142 | enum dma_data_direction dir, struct dma_attrs *attrs) | ||
143 | { | ||
144 | int i; | ||
145 | struct scatterlist *sg; | ||
146 | |||
147 | for_each_sg(sgl, sg, nents, i) { | ||
148 | void *va; | ||
149 | |||
150 | BUG_ON(!sg_page(sg)); | ||
151 | va = sg_virt(sg); | ||
152 | sg_dma_address(sg) = (dma_addr_t)virt_to_phys(va); | ||
153 | sg_dma_len(sg) = sg->length; | ||
154 | } | ||
155 | |||
156 | return nents; | ||
157 | } | ||
158 | |||
159 | static int alpha_noop_mapping_error(struct device *dev, dma_addr_t dma_addr) | ||
160 | { | ||
161 | return 0; | ||
162 | } | ||
163 | |||
164 | static int alpha_noop_supported(struct device *dev, u64 mask) | 126 | static int alpha_noop_supported(struct device *dev, u64 mask) |
165 | { | 127 | { |
166 | return mask < 0x00ffffffUL ? 0 : 1; | 128 | return mask < 0x00ffffffUL ? 0 : 1; |
@@ -168,10 +130,10 @@ static int alpha_noop_supported(struct device *dev, u64 mask) | |||
168 | 130 | ||
169 | struct dma_map_ops alpha_noop_ops = { | 131 | struct dma_map_ops alpha_noop_ops = { |
170 | .alloc = alpha_noop_alloc_coherent, | 132 | .alloc = alpha_noop_alloc_coherent, |
171 | .free = alpha_noop_free_coherent, | 133 | .free = dma_noop_free_coherent, |
172 | .map_page = alpha_noop_map_page, | 134 | .map_page = dma_noop_map_page, |
173 | .map_sg = alpha_noop_map_sg, | 135 | .map_sg = dma_noop_map_sg, |
174 | .mapping_error = alpha_noop_mapping_error, | 136 | .mapping_error = dma_noop_mapping_error, |
175 | .dma_supported = alpha_noop_supported, | 137 | .dma_supported = alpha_noop_supported, |
176 | }; | 138 | }; |
177 | 139 | ||