diff options
-rw-r--r-- | arch/sparc/include/asm/io-unit.h | 4 | ||||
-rw-r--r-- | arch/sparc/kernel/sparc_ksyms.c | 3 | ||||
-rw-r--r-- | arch/sparc/mm/io-unit.c | 48 |
3 files changed, 0 insertions, 55 deletions
diff --git a/arch/sparc/include/asm/io-unit.h b/arch/sparc/include/asm/io-unit.h index 96823b47fd45..01ab2f613e91 100644 --- a/arch/sparc/include/asm/io-unit.h +++ b/arch/sparc/include/asm/io-unit.h | |||
@@ -55,8 +55,4 @@ struct iounit_struct { | |||
55 | #define IOUNIT_BMAPM_START IOUNIT_BMAP2_END | 55 | #define IOUNIT_BMAPM_START IOUNIT_BMAP2_END |
56 | #define IOUNIT_BMAPM_END ((IOUNIT_DMA_SIZE - IOUNIT_DVMA_SIZE) >> PAGE_SHIFT) | 56 | #define IOUNIT_BMAPM_END ((IOUNIT_DMA_SIZE - IOUNIT_DVMA_SIZE) >> PAGE_SHIFT) |
57 | 57 | ||
58 | extern __u32 iounit_map_dma_init(struct sbus_bus *, int); | ||
59 | #define iounit_map_dma_finish(sbus, addr, len) mmu_release_scsi_one(addr, len, sbus) | ||
60 | extern __u32 iounit_map_dma_page(__u32, void *, struct sbus_bus *); | ||
61 | |||
62 | #endif /* !(_SPARC_IO_UNIT_H) */ | 58 | #endif /* !(_SPARC_IO_UNIT_H) */ |
diff --git a/arch/sparc/kernel/sparc_ksyms.c b/arch/sparc/kernel/sparc_ksyms.c index f2722ee3967d..a9478dbef2e4 100644 --- a/arch/sparc/kernel/sparc_ksyms.c +++ b/arch/sparc/kernel/sparc_ksyms.c | |||
@@ -134,9 +134,6 @@ EXPORT_SYMBOL(set_auxio); | |||
134 | EXPORT_SYMBOL(get_auxio); | 134 | EXPORT_SYMBOL(get_auxio); |
135 | #endif | 135 | #endif |
136 | EXPORT_SYMBOL(io_remap_pfn_range); | 136 | EXPORT_SYMBOL(io_remap_pfn_range); |
137 | /* P3: iounit_xxx may be needed, sun4d users */ | ||
138 | /* EXPORT_SYMBOL(iounit_map_dma_init); */ | ||
139 | /* EXPORT_SYMBOL(iounit_map_dma_page); */ | ||
140 | 137 | ||
141 | #ifndef CONFIG_SMP | 138 | #ifndef CONFIG_SMP |
142 | EXPORT_SYMBOL(BTFIXUP_CALL(___xchg32)); | 139 | EXPORT_SYMBOL(BTFIXUP_CALL(___xchg32)); |
diff --git a/arch/sparc/mm/io-unit.c b/arch/sparc/mm/io-unit.c index caf551ad9d8c..53900230c2d2 100644 --- a/arch/sparc/mm/io-unit.c +++ b/arch/sparc/mm/io-unit.c | |||
@@ -267,51 +267,3 @@ void __init ld_mmu_iounit(void) | |||
267 | BTFIXUPSET_CALL(mmu_unmap_dma_area, iounit_unmap_dma_area, BTFIXUPCALL_NORM); | 267 | BTFIXUPSET_CALL(mmu_unmap_dma_area, iounit_unmap_dma_area, BTFIXUPCALL_NORM); |
268 | #endif | 268 | #endif |
269 | } | 269 | } |
270 | |||
271 | __u32 iounit_map_dma_init(struct sbus_bus *sbus, int size) | ||
272 | { | ||
273 | int i, j, k, npages; | ||
274 | unsigned long rotor, scan, limit; | ||
275 | unsigned long flags; | ||
276 | __u32 ret; | ||
277 | struct iounit_struct *iounit = sbus->ofdev.dev.archdata.iommu; | ||
278 | |||
279 | npages = (size + (PAGE_SIZE-1)) >> PAGE_SHIFT; | ||
280 | i = 0x0213; | ||
281 | spin_lock_irqsave(&iounit->lock, flags); | ||
282 | next: j = (i & 15); | ||
283 | rotor = iounit->rotor[j - 1]; | ||
284 | limit = iounit->limit[j]; | ||
285 | scan = rotor; | ||
286 | nexti: scan = find_next_zero_bit(iounit->bmap, limit, scan); | ||
287 | if (scan + npages > limit) { | ||
288 | if (limit != rotor) { | ||
289 | limit = rotor; | ||
290 | scan = iounit->limit[j - 1]; | ||
291 | goto nexti; | ||
292 | } | ||
293 | i >>= 4; | ||
294 | if (!(i & 15)) | ||
295 | panic("iounit_map_dma_init: Couldn't find free iopte slots for %d bytes\n", size); | ||
296 | goto next; | ||
297 | } | ||
298 | for (k = 1, scan++; k < npages; k++) | ||
299 | if (test_bit(scan++, iounit->bmap)) | ||
300 | goto nexti; | ||
301 | iounit->rotor[j - 1] = (scan < limit) ? scan : iounit->limit[j - 1]; | ||
302 | scan -= npages; | ||
303 | ret = IOUNIT_DMA_BASE + (scan << PAGE_SHIFT); | ||
304 | for (k = 0; k < npages; k++, scan++) | ||
305 | set_bit(scan, iounit->bmap); | ||
306 | spin_unlock_irqrestore(&iounit->lock, flags); | ||
307 | return ret; | ||
308 | } | ||
309 | |||
310 | __u32 iounit_map_dma_page(__u32 vaddr, void *addr, struct sbus_bus *sbus) | ||
311 | { | ||
312 | int scan = (vaddr - IOUNIT_DMA_BASE) >> PAGE_SHIFT; | ||
313 | struct iounit_struct *iounit = sbus->ofdev.dev.archdata.iommu; | ||
314 | |||
315 | iounit->page_table[scan] = MKIOPTE(__pa(((unsigned long)addr) & PAGE_MASK)); | ||
316 | return vaddr + (((unsigned long)addr) & ~PAGE_MASK); | ||
317 | } | ||