forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-09-20 cf4ce59b3b70238352c7f1729f0f7223214828ad
kernel/arch/mips/alchemy/common/setup.c
....@@ -27,6 +27,7 @@
2727
2828 #include <linux/init.h>
2929 #include <linux/ioport.h>
30
+#include <linux/mm.h>
3031
3132 #include <asm/dma-coherence.h>
3233 #include <asm/mipsregs.h>
....@@ -72,9 +73,9 @@
7273 iomem_resource.end = IOMEM_RESOURCE_END;
7374 }
7475
75
-#if defined(CONFIG_PHYS_ADDR_T_64BIT) && defined(CONFIG_PCI)
76
+#ifdef CONFIG_MIPS_FIXUP_BIGPHYS_ADDR
7677 /* 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)
7879 {
7980 unsigned long start = ALCHEMY_PCI_MEMWIN_START;
8081 unsigned long end = ALCHEMY_PCI_MEMWIN_END;
....@@ -90,5 +91,13 @@
9091 /* default nop */
9192 return phys_addr;
9293 }
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 */