Bläddra i källkod

[PARISC] Enable ioremap functionality unconditionally

Enable CONFIG_HPPA_IOREMAP by default and remove all now unnecessary code.

Signed-off-by: Helge Deller <deller@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
Helge Deller 19 år sedan
förälder
incheckning
29ef829532
3 ändrade filer med 3 tillägg och 82 borttagningar
  1. 0 11
      arch/parisc/Kconfig
  2. 2 14
      arch/parisc/mm/ioremap.c
  3. 1 57
      include/asm-parisc/io.h

+ 0 - 11
arch/parisc/Kconfig

@@ -138,17 +138,6 @@ config 64BIT
 	  enable this option otherwise. The 64bit kernel is significantly bigger
 	  enable this option otherwise. The 64bit kernel is significantly bigger
 	  and slower than the 32bit one.
 	  and slower than the 32bit one.
 
 
-config HPPA_IOREMAP
-	bool "Enable IOREMAP functionality (EXPERIMENTAL)"
-	depends on EXPERIMENTAL
-	default n
-	help
-	  Enable this option if you want to enable real IOREMAPPING on PA-RISC.
-	  Currently we just "simulate" I/O remapping, and enabling this option
-	  will just crash your machine.
-
-	  Say N here, unless you are a real PA-RISC Linux kernel hacker.
-
 config SMP
 config SMP
 	bool "Symmetric multi-processing support"
 	bool "Symmetric multi-processing support"
 	---help---
 	---help---

+ 2 - 14
arch/parisc/mm/ioremap.c

@@ -72,7 +72,6 @@ remap_area_pmd(pmd_t *pmd, unsigned long address, unsigned long size,
 	return 0;
 	return 0;
 }
 }
 
 
-#ifdef CONFIG_HPPA_IOREMAP
 static int 
 static int 
 remap_area_pages(unsigned long address, unsigned long phys_addr,
 remap_area_pages(unsigned long address, unsigned long phys_addr,
 		 unsigned long size, unsigned long flags)
 		 unsigned long size, unsigned long flags)
@@ -114,7 +113,6 @@ remap_area_pages(unsigned long address, unsigned long phys_addr,
 
 
 	return error;
 	return error;
 }
 }
-#endif /* CONFIG_HPPA_IOREMAP */
 
 
 #ifdef CONFIG_DEBUG_IOREMAP
 #ifdef CONFIG_DEBUG_IOREMAP
 static unsigned long last = 0;
 static unsigned long last = 0;
@@ -154,21 +152,16 @@ EXPORT_SYMBOL(__raw_bad_addr);
  */
  */
 void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags)
 void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags)
 {
 {
-#if !defined(CONFIG_HPPA_IOREMAP)
+#ifdef CONFIG_EISA
+	#error FIXME.
 	unsigned long end = phys_addr + size - 1;
 	unsigned long end = phys_addr + size - 1;
 	/* Support EISA addresses */
 	/* Support EISA addresses */
 	if ((phys_addr >= 0x00080000 && end < 0x000fffff)
 	if ((phys_addr >= 0x00080000 && end < 0x000fffff)
 			|| (phys_addr >= 0x00500000 && end < 0x03bfffff)) {
 			|| (phys_addr >= 0x00500000 && end < 0x03bfffff)) {
 		phys_addr |= 0xfc000000;
 		phys_addr |= 0xfc000000;
 	}
 	}
-
-#ifdef CONFIG_DEBUG_IOREMAP
-	return (void __iomem *)(phys_addr - (0x1UL << NYBBLE_SHIFT));
-#else
-	return (void __iomem *)phys_addr;
 #endif
 #endif
 
 
-#else
 	void *addr;
 	void *addr;
 	struct vm_struct *area;
 	struct vm_struct *area;
 	unsigned long offset, last_addr;
 	unsigned long offset, last_addr;
@@ -216,15 +209,10 @@ void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned l
 	}
 	}
 
 
 	return (void __iomem *) (offset + (char *)addr);
 	return (void __iomem *) (offset + (char *)addr);
-#endif
 }
 }
 
 
 void iounmap(void __iomem *addr)
 void iounmap(void __iomem *addr)
 {
 {
-#ifdef CONFIG_HPPA_IOREMAP
 	if (addr > high_memory)
 	if (addr > high_memory)
 		return vfree((void *) (PAGE_MASK & (unsigned long __force) addr));
 		return vfree((void *) (PAGE_MASK & (unsigned long __force) addr));
-#else
-	return;
-#endif
 }
 }

+ 1 - 57
include/asm-parisc/io.h

@@ -176,12 +176,7 @@ extern inline void * ioremap_nocache(unsigned long offset, unsigned long size)
 
 
 extern void iounmap(void __iomem *addr);
 extern void iounmap(void __iomem *addr);
 
 
-/*
- * CONFIG_HPPA_IOREMAP is the magic flag to enable or disable real ioremap()
- * functionality.  It's currently disabled because it may not work on some
- * machines.
- */
-#ifdef CONFIG_HPPA_IOREMAP
+
 static inline unsigned char __raw_readb(const volatile void __iomem *addr)
 static inline unsigned char __raw_readb(const volatile void __iomem *addr)
 {
 {
 	return (*(volatile unsigned char __force *) (addr));
 	return (*(volatile unsigned char __force *) (addr));
@@ -215,57 +210,6 @@ static inline void __raw_writeq(unsigned long long b, volatile void __iomem *add
 {
 {
 	*(volatile unsigned long long __force *) addr = b;
 	*(volatile unsigned long long __force *) addr = b;
 }
 }
-#else /* !CONFIG_HPPA_IOREMAP */
-static inline unsigned char __raw_readb(const volatile void __iomem *addr)
-{
-	__raw_check_addr(addr);
-
-	return gsc_readb((unsigned long) addr);
-}
-static inline unsigned short __raw_readw(const volatile void __iomem *addr)
-{
-	__raw_check_addr(addr);
-
-	return gsc_readw((unsigned long) addr);
-}
-static inline unsigned int __raw_readl(const volatile void __iomem *addr)
-{
-	__raw_check_addr(addr);
-
-	return gsc_readl((unsigned long) addr);
-}
-static inline unsigned long long __raw_readq(const volatile void __iomem *addr)
-{
-	__raw_check_addr(addr);
-
-	return gsc_readq((unsigned long) addr);
-}
-
-static inline void __raw_writeb(unsigned char b, volatile void __iomem *addr)
-{
-	__raw_check_addr(addr);
-
-	gsc_writeb(b, (unsigned long) addr);
-}
-static inline void __raw_writew(unsigned short b, volatile void __iomem *addr)
-{
-	__raw_check_addr(addr);
-
-	gsc_writew(b, (unsigned long) addr);
-}
-static inline void __raw_writel(unsigned int b, volatile void __iomem *addr)
-{
-	__raw_check_addr(addr);
-
-	gsc_writel(b, (unsigned long) addr);
-}
-static inline void __raw_writeq(unsigned long long b, volatile void __iomem *addr)
-{
-	__raw_check_addr(addr);
-
-	gsc_writeq(b, (unsigned long) addr);
-}
-#endif /* !CONFIG_HPPA_IOREMAP */
 
 
 /* readb can never be const, so use __fswab instead of le*_to_cpu */
 /* readb can never be const, so use __fswab instead of le*_to_cpu */
 #define readb(addr) __raw_readb(addr)
 #define readb(addr) __raw_readb(addr)