| .. | .. |
|---|
| 27 | 27 | |
|---|
| 28 | 28 | #include <linux/init.h> |
|---|
| 29 | 29 | #include <linux/ioport.h> |
|---|
| 30 | +#include <linux/mm.h> |
|---|
| 30 | 31 | |
|---|
| 31 | 32 | #include <asm/dma-coherence.h> |
|---|
| 32 | 33 | #include <asm/mipsregs.h> |
|---|
| .. | .. |
|---|
| 72 | 73 | iomem_resource.end = IOMEM_RESOURCE_END; |
|---|
| 73 | 74 | } |
|---|
| 74 | 75 | |
|---|
| 75 | | -#if defined(CONFIG_PHYS_ADDR_T_64BIT) && defined(CONFIG_PCI) |
|---|
| 76 | +#ifdef CONFIG_MIPS_FIXUP_BIGPHYS_ADDR |
|---|
| 76 | 77 | /* This routine should be valid for all Au1x based boards */ |
|---|
| 77 | | -phys_addr_t __fixup_bigphys_addr(phys_addr_t phys_addr, phys_addr_t size) |
|---|
| 78 | +phys_addr_t fixup_bigphys_addr(phys_addr_t phys_addr, phys_addr_t size) |
|---|
| 78 | 79 | { |
|---|
| 79 | 80 | unsigned long start = ALCHEMY_PCI_MEMWIN_START; |
|---|
| 80 | 81 | unsigned long end = ALCHEMY_PCI_MEMWIN_END; |
|---|
| .. | .. |
|---|
| 90 | 91 | /* default nop */ |
|---|
| 91 | 92 | return phys_addr; |
|---|
| 92 | 93 | } |
|---|
| 93 | | -EXPORT_SYMBOL(__fixup_bigphys_addr); |
|---|
| 94 | | -#endif |
|---|
| 94 | + |
|---|
| 95 | +int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long vaddr, |
|---|
| 96 | + unsigned long pfn, unsigned long size, pgprot_t prot) |
|---|
| 97 | +{ |
|---|
| 98 | + phys_addr_t phys_addr = fixup_bigphys_addr(pfn << PAGE_SHIFT, size); |
|---|
| 99 | + |
|---|
| 100 | + return remap_pfn_range(vma, vaddr, phys_addr >> PAGE_SHIFT, size, prot); |
|---|
| 101 | +} |
|---|
| 102 | +EXPORT_SYMBOL(io_remap_pfn_range); |
|---|
| 103 | +#endif /* CONFIG_MIPS_FIXUP_BIGPHYS_ADDR */ |
|---|