summaryrefslogtreecommitdiff
path: root/arch/sh
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2009-09-28 15:04:04 +0900
committerPaul Mundt <lethal@linux-sh.org>2009-09-28 15:04:04 +0900
commit48ff3e04ffd5e1b578462eb1958f15ca122c7fbf (patch)
tree378fdbbbb81699f2c5cf2d57e187c7f7b9843fa5 /arch/sh
parent17d857be649a21ca90008c6dc425d849fa83db5c (diff)
downloadlinux-3.10-48ff3e04ffd5e1b578462eb1958f15ca122c7fbf.tar.gz
linux-3.10-48ff3e04ffd5e1b578462eb1958f15ca122c7fbf.tar.bz2
linux-3.10-48ff3e04ffd5e1b578462eb1958f15ca122c7fbf.zip
sh: Handle ioport_map() cases for >= P1SEG addresses.
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>
Diffstat (limited to 'arch/sh')
-rw-r--r--arch/sh/kernel/io_generic.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/sh/kernel/io_generic.c b/arch/sh/kernel/io_generic.c
index 4ff50723928..b8fa6524760 100644
--- a/arch/sh/kernel/io_generic.c
+++ b/arch/sh/kernel/io_generic.c
@@ -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);
}