Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 113038
b: refs/heads/master
c: 0ad626a
h: refs/heads/master
v: v3
  • Loading branch information
David S. Miller committed Aug 29, 2008
1 parent a86ef0d commit f514189
Show file tree
Hide file tree
Showing 4 changed files with 1 addition and 56 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 47a2d7288538e7f334a0be318317b138f0e3dfbe
refs/heads/master: 0ad626a2a4c3d8e565b3a6f10eeda5b43560fbdb
4 changes: 0 additions & 4 deletions trunk/arch/sparc/include/asm/io-unit.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,4 @@ struct iounit_struct {
#define IOUNIT_BMAPM_START IOUNIT_BMAP2_END
#define IOUNIT_BMAPM_END ((IOUNIT_DMA_SIZE - IOUNIT_DVMA_SIZE) >> PAGE_SHIFT)

extern __u32 iounit_map_dma_init(struct sbus_bus *, int);
#define iounit_map_dma_finish(sbus, addr, len) mmu_release_scsi_one(addr, len, sbus)
extern __u32 iounit_map_dma_page(__u32, void *, struct sbus_bus *);

#endif /* !(_SPARC_IO_UNIT_H) */
3 changes: 0 additions & 3 deletions trunk/arch/sparc/kernel/sparc_ksyms.c
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,6 @@ EXPORT_SYMBOL(set_auxio);
EXPORT_SYMBOL(get_auxio);
#endif
EXPORT_SYMBOL(io_remap_pfn_range);
/* P3: iounit_xxx may be needed, sun4d users */
/* EXPORT_SYMBOL(iounit_map_dma_init); */
/* EXPORT_SYMBOL(iounit_map_dma_page); */

#ifndef CONFIG_SMP
EXPORT_SYMBOL(BTFIXUP_CALL(___xchg32));
Expand Down
48 changes: 0 additions & 48 deletions trunk/arch/sparc/mm/io-unit.c
Original file line number Diff line number Diff line change
Expand Up @@ -267,51 +267,3 @@ void __init ld_mmu_iounit(void)
BTFIXUPSET_CALL(mmu_unmap_dma_area, iounit_unmap_dma_area, BTFIXUPCALL_NORM);
#endif
}

__u32 iounit_map_dma_init(struct sbus_bus *sbus, int size)
{
int i, j, k, npages;
unsigned long rotor, scan, limit;
unsigned long flags;
__u32 ret;
struct iounit_struct *iounit = sbus->ofdev.dev.archdata.iommu;

npages = (size + (PAGE_SIZE-1)) >> PAGE_SHIFT;
i = 0x0213;
spin_lock_irqsave(&iounit->lock, flags);
next: j = (i & 15);
rotor = iounit->rotor[j - 1];
limit = iounit->limit[j];
scan = rotor;
nexti: scan = find_next_zero_bit(iounit->bmap, limit, scan);
if (scan + npages > limit) {
if (limit != rotor) {
limit = rotor;
scan = iounit->limit[j - 1];
goto nexti;
}
i >>= 4;
if (!(i & 15))
panic("iounit_map_dma_init: Couldn't find free iopte slots for %d bytes\n", size);
goto next;
}
for (k = 1, scan++; k < npages; k++)
if (test_bit(scan++, iounit->bmap))
goto nexti;
iounit->rotor[j - 1] = (scan < limit) ? scan : iounit->limit[j - 1];
scan -= npages;
ret = IOUNIT_DMA_BASE + (scan << PAGE_SHIFT);
for (k = 0; k < npages; k++, scan++)
set_bit(scan, iounit->bmap);
spin_unlock_irqrestore(&iounit->lock, flags);
return ret;
}

__u32 iounit_map_dma_page(__u32 vaddr, void *addr, struct sbus_bus *sbus)
{
int scan = (vaddr - IOUNIT_DMA_BASE) >> PAGE_SHIFT;
struct iounit_struct *iounit = sbus->ofdev.dev.archdata.iommu;

iounit->page_table[scan] = MKIOPTE(__pa(((unsigned long)addr) & PAGE_MASK));
return vaddr + (((unsigned long)addr) & ~PAGE_MASK);
}

0 comments on commit f514189

Please sign in to comment.