mirror of https://gitee.com/openkylin/linux.git
[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>
This commit is contained in:
parent
857600c771
commit
29ef829532
|
@ -138,17 +138,6 @@ config 64BIT
|
|||
enable this option otherwise. The 64bit kernel is significantly bigger
|
||||
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
|
||||
bool "Symmetric multi-processing support"
|
||||
---help---
|
||||
|
|
|
@ -72,7 +72,6 @@ remap_area_pmd(pmd_t *pmd, unsigned long address, unsigned long size,
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HPPA_IOREMAP
|
||||
static int
|
||||
remap_area_pages(unsigned long address, unsigned long phys_addr,
|
||||
unsigned long size, unsigned long flags)
|
||||
|
@ -114,7 +113,6 @@ remap_area_pages(unsigned long address, unsigned long phys_addr,
|
|||
|
||||
return error;
|
||||
}
|
||||
#endif /* CONFIG_HPPA_IOREMAP */
|
||||
|
||||
#ifdef CONFIG_DEBUG_IOREMAP
|
||||
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)
|
||||
{
|
||||
#if !defined(CONFIG_HPPA_IOREMAP)
|
||||
#ifdef CONFIG_EISA
|
||||
#error FIXME.
|
||||
unsigned long end = phys_addr + size - 1;
|
||||
/* Support EISA addresses */
|
||||
if ((phys_addr >= 0x00080000 && end < 0x000fffff)
|
||||
|| (phys_addr >= 0x00500000 && end < 0x03bfffff)) {
|
||||
phys_addr |= 0xfc000000;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_DEBUG_IOREMAP
|
||||
return (void __iomem *)(phys_addr - (0x1UL << NYBBLE_SHIFT));
|
||||
#else
|
||||
return (void __iomem *)phys_addr;
|
||||
#endif
|
||||
|
||||
#else
|
||||
void *addr;
|
||||
struct vm_struct *area;
|
||||
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);
|
||||
#endif
|
||||
}
|
||||
|
||||
void iounmap(void __iomem *addr)
|
||||
{
|
||||
#ifdef CONFIG_HPPA_IOREMAP
|
||||
if (addr > high_memory)
|
||||
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)
|
|||
|
||||
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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
#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 */
|
||||
#define readb(addr) __raw_readb(addr)
|
||||
|
|
Loading…
Reference in New Issue