aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc
diff options
context:
space:
mode:
authorHelge Deller <deller@parisc-linux.org>2006-03-07 16:12:13 -0500
committerKyle McMartin <kyle@hera.kernel.org>2006-03-30 12:48:46 -0500
commitb8ce0aadcdebbaf5ec013c57e2a0803060817bcc (patch)
treec910b16935911a5cfaee98b5e6040fe6e1918fd9 /arch/parisc
parentb31059f7634931a06f6811247ae9217d1a833a46 (diff)
[PARISC] Add CONFIG_HPPA_IOREMAP to conditionally enable ioremap
Instead of making it a #define in asm/io.h, allow user to select to turn on IOREMAP from the config menu. Signed-off-by: Helge Deller <deller@parisc-linux.org> Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
Diffstat (limited to 'arch/parisc')
-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}