aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/parisc/Kconfig11
-rw-r--r--arch/parisc/mm/ioremap.c13
2 files changed, 17 insertions, 7 deletions
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index 6b3c50964ca9..fc5755d1db57 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -138,6 +138,17 @@ config 64BIT
138 enable this option otherwise. The 64bit kernel is significantly bigger 138 enable this option otherwise. The 64bit kernel is significantly bigger
139 and slower than the 32bit one. 139 and slower than the 32bit one.
140 140
141config HPPA_IOREMAP
142 bool "Enable IOREMAP functionality (EXPERIMENTAL)"
143 depends on EXPERIMENTAL
144 default n
145 help
146 Enable this option if you want to enable real IOREMAPPING on PA-RISC.
147 Currently we just "simulate" I/O remapping, and enabling this option
148 will just crash your machine.
149
150 Say N here, unless you are a real PA-RISC Linux kernel hacker.
151
141config SMP 152config SMP
142 bool "Symmetric multi-processing support" 153 bool "Symmetric multi-processing support"
143 ---help--- 154 ---help---
diff --git a/arch/parisc/mm/ioremap.c b/arch/parisc/mm/ioremap.c
index edd9a9559cba..028772144191 100644
--- a/arch/parisc/mm/ioremap.c
+++ b/arch/parisc/mm/ioremap.c
@@ -72,7 +72,7 @@ remap_area_pmd(pmd_t *pmd, unsigned long address, unsigned long size,
72 return 0; 72 return 0;
73} 73}
74 74
75#if USE_HPPA_IOREMAP 75#ifdef CONFIG_HPPA_IOREMAP
76static int 76static int
77remap_area_pages(unsigned long address, unsigned long phys_addr, 77remap_area_pages(unsigned long address, unsigned long phys_addr,
78 unsigned long size, unsigned long flags) 78 unsigned long size, unsigned long flags)
@@ -114,7 +114,7 @@ remap_area_pages(unsigned long address, unsigned long phys_addr,
114 114
115 return error; 115 return error;
116} 116}
117#endif /* USE_HPPA_IOREMAP */ 117#endif /* CONFIG_HPPA_IOREMAP */
118 118
119#ifdef CONFIG_DEBUG_IOREMAP 119#ifdef CONFIG_DEBUG_IOREMAP
120static unsigned long last = 0; 120static unsigned long last = 0;
@@ -154,8 +154,7 @@ EXPORT_SYMBOL(__raw_bad_addr);
154 */ 154 */
155void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags) 155void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags)
156{ 156{
157#if !(USE_HPPA_IOREMAP) 157#if !defined(CONFIG_HPPA_IOREMAP)
158
159 unsigned long end = phys_addr + size - 1; 158 unsigned long end = phys_addr + size - 1;
160 /* Support EISA addresses */ 159 /* Support EISA addresses */
161 if ((phys_addr >= 0x00080000 && end < 0x000fffff) 160 if ((phys_addr >= 0x00080000 && end < 0x000fffff)
@@ -222,10 +221,10 @@ void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned l
222 221
223void iounmap(void __iomem *addr) 222void iounmap(void __iomem *addr)
224{ 223{
225#if !(USE_HPPA_IOREMAP) 224#ifdef CONFIG_HPPA_IOREMAP
226 return;
227#else
228 if (addr > high_memory) 225 if (addr > high_memory)
229 return vfree((void *) (PAGE_MASK & (unsigned long __force) addr)); 226 return vfree((void *) (PAGE_MASK & (unsigned long __force) addr));
227#else
228 return;
230#endif 229#endif
231} 230}