Skip to content

Commit

Permalink
[PARISC] Enable ioremap functionality unconditionally
Browse files Browse the repository at this point in the history
Enable CONFIG_HPPA_IOREMAP by default and remove all now unnecessary code.

Signed-off-by: Helge Deller <[email protected]>
Signed-off-by: Kyle McMartin <[email protected]>
  • Loading branch information
Helge Deller authored and Kyle McMartin committed Mar 30, 2006
1 parent 857600c commit 29ef829
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 82 deletions.
11 changes: 0 additions & 11 deletions arch/parisc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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---
Expand Down
16 changes: 2 additions & 14 deletions arch/parisc/mm/ioremap.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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
}
58 changes: 1 addition & 57 deletions include/asm-parisc/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit 29ef829

Please sign in to comment.