sh: Handle ioport_map() cases for >= P1SEG addresses.
authorPaul Mundt <lethal@linux-sh.org>
Mon, 28 Sep 2009 06:04:04 +0000 (15:04 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Mon, 28 Sep 2009 06:04:04 +0000 (15:04 +0900)
This fixes up the case where certain drivers already do their own
remapping and subsequently attempt to use the PIO calls for I/O. In this
case there is no additional remapping that needs to be done, and the
address can be casted in to the cookie directly.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/kernel/io_generic.c

index 4ff507239286cc83db38a151f354fb4a363c6275..b8fa6524760af3be77c391b1a92ffbd0ba4362ca 100644 (file)
@@ -147,6 +147,9 @@ void generic_outsl(unsigned long port, const void *src, unsigned long count)
 
 void __iomem *generic_ioport_map(unsigned long addr, unsigned int size)
 {
+       if (PXSEG(addr) >= P1SEG)
+               return (void __iomem *)addr;
+
        return (void __iomem *)(addr + generic_io_base);
 }