aboutsummaryrefslogtreecommitdiffstats
path: root/arch/alpha/kernel/pci-noop.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/alpha/kernel/pci-noop.c')
-rw-r--r--arch/alpha/kernel/pci-noop.c102
1 files changed, 41 insertions, 61 deletions
diff --git a/arch/alpha/kernel/pci-noop.c b/arch/alpha/kernel/pci-noop.c
index c19a376520f4..246100ef07c2 100644
--- a/arch/alpha/kernel/pci-noop.c
+++ b/arch/alpha/kernel/pci-noop.c
@@ -7,6 +7,7 @@
7#include <linux/pci.h> 7#include <linux/pci.h>
8#include <linux/init.h> 8#include <linux/init.h>
9#include <linux/bootmem.h> 9#include <linux/bootmem.h>
10#include <linux/gfp.h>
10#include <linux/capability.h> 11#include <linux/capability.h>
11#include <linux/mm.h> 12#include <linux/mm.h>
12#include <linux/errno.h> 13#include <linux/errno.h>
@@ -106,58 +107,8 @@ sys_pciconfig_write(unsigned long bus, unsigned long dfn,
106 return -ENODEV; 107 return -ENODEV;
107} 108}
108 109
109/* Stubs for the routines in pci_iommu.c: */ 110static void *alpha_noop_alloc_coherent(struct device *dev, size_t size,
110 111 dma_addr_t *dma_handle, gfp_t gfp)
111void *
112__pci_alloc_consistent(struct pci_dev *pdev, size_t size,
113 dma_addr_t *dma_addrp, gfp_t gfp)
114{
115 return NULL;
116}
117
118void
119pci_free_consistent(struct pci_dev *pdev, size_t size, void *cpu_addr,
120 dma_addr_t dma_addr)
121{
122}
123
124dma_addr_t
125pci_map_single(struct pci_dev *pdev, void *cpu_addr, size_t size,
126 int direction)
127{
128 return (dma_addr_t) 0;
129}
130
131void
132pci_unmap_single(struct pci_dev *pdev, dma_addr_t dma_addr, size_t size,
133 int direction)
134{
135}
136
137int
138pci_map_sg(struct pci_dev *pdev, struct scatterlist *sg, int nents,
139 int direction)
140{
141 return 0;
142}
143
144void
145pci_unmap_sg(struct pci_dev *pdev, struct scatterlist *sg, int nents,
146 int direction)
147{
148}
149
150int
151pci_dma_supported(struct pci_dev *hwdev, dma_addr_t mask)
152{
153 return 0;
154}
155
156/* Generic DMA mapping functions: */
157
158void *
159dma_alloc_coherent(struct device *dev, size_t size,
160 dma_addr_t *dma_handle, gfp_t gfp)
161{ 112{
162 void *ret; 113 void *ret;
163 114
@@ -171,11 +122,22 @@ dma_alloc_coherent(struct device *dev, size_t size,
171 return ret; 122 return ret;
172} 123}
173 124
174EXPORT_SYMBOL(dma_alloc_coherent); 125static void alpha_noop_free_coherent(struct device *dev, size_t size,
126 void *cpu_addr, dma_addr_t dma_addr)
127{
128 free_pages((unsigned long)cpu_addr, get_order(size));
129}
130
131static dma_addr_t alpha_noop_map_page(struct device *dev, struct page *page,
132 unsigned long offset, size_t size,
133 enum dma_data_direction dir,
134 struct dma_attrs *attrs)
135{
136 return page_to_pa(page) + offset;
137}
175 138
176int 139static int alpha_noop_map_sg(struct device *dev, struct scatterlist *sgl, int nents,
177dma_map_sg(struct device *dev, struct scatterlist *sgl, int nents, 140 enum dma_data_direction dir, struct dma_attrs *attrs)
178 enum dma_data_direction direction)
179{ 141{
180 int i; 142 int i;
181 struct scatterlist *sg; 143 struct scatterlist *sg;
@@ -192,19 +154,37 @@ dma_map_sg(struct device *dev, struct scatterlist *sgl, int nents,
192 return nents; 154 return nents;
193} 155}
194 156
195EXPORT_SYMBOL(dma_map_sg); 157static int alpha_noop_mapping_error(struct device *dev, dma_addr_t dma_addr)
158{
159 return 0;
160}
161
162static int alpha_noop_supported(struct device *dev, u64 mask)
163{
164 return mask < 0x00ffffffUL ? 0 : 1;
165}
196 166
197int 167static int alpha_noop_set_mask(struct device *dev, u64 mask)
198dma_set_mask(struct device *dev, u64 mask)
199{ 168{
200 if (!dev->dma_mask || !dma_supported(dev, mask)) 169 if (!dev->dma_mask || !dma_supported(dev, mask))
201 return -EIO; 170 return -EIO;
202 171
203 *dev->dma_mask = mask; 172 *dev->dma_mask = mask;
204
205 return 0; 173 return 0;
206} 174}
207EXPORT_SYMBOL(dma_set_mask); 175
176struct dma_map_ops alpha_noop_ops = {
177 .alloc_coherent = alpha_noop_alloc_coherent,
178 .free_coherent = alpha_noop_free_coherent,
179 .map_page = alpha_noop_map_page,
180 .map_sg = alpha_noop_map_sg,
181 .mapping_error = alpha_noop_mapping_error,
182 .dma_supported = alpha_noop_supported,
183 .set_dma_mask = alpha_noop_set_mask,
184};
185
186struct dma_map_ops *dma_ops = &alpha_noop_ops;
187EXPORT_SYMBOL(dma_ops);
208 188
209void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen) 189void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen)
210{ 190{