提交 29ef8295 编写于 作者: H Helge Deller 提交者: Kyle McMartin

[PARISC] Enable ioremap functionality unconditionally

Enable CONFIG_HPPA_IOREMAP by default and remove all now unnecessary code.
Signed-off-by: NHelge Deller <deller@parisc-linux.org>
Signed-off-by: NKyle McMartin <kyle@parisc-linux.org>
上级 857600c7
...@@ -138,17 +138,6 @@ config 64BIT ...@@ -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---
......
...@@ -72,7 +72,6 @@ remap_area_pmd(pmd_t *pmd, unsigned long address, unsigned long size, ...@@ -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, ...@@ -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); ...@@ -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 ...@@ -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
} }
...@@ -176,12 +176,7 @@ extern inline void * ioremap_nocache(unsigned long offset, unsigned long size) ...@@ -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 ...@@ -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)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册