]> err.no Git - linux-2.6/commitdiff
sh: se7206: Make the I/O port routines less stupid.
authorPaul Mundt <lethal@linux-sh.org>
Thu, 13 Sep 2007 03:59:32 +0000 (12:59 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Fri, 21 Sep 2007 02:57:54 +0000 (11:57 +0900)
The port routines were logically inverted, and the MRSHPC range had
no upper bound, causing 8 and 16-bit port I/O to get mangled.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/boards/se/7206/io.c
arch/sh/boards/se/7206/setup.c

index b557273e0cbe490c753e7e60f125a5b4f22c1a07..eb30dc2df96f8280dff16dc47a4a84743b1dd8d9 100644 (file)
@@ -26,22 +26,22 @@ static inline void delay(void)
 static inline volatile __u16 *
 port2adr(unsigned int port)
 {
-       if (port >= 0x2000)
+       if (port >= 0x2000 && port < 0x2020)
                return (volatile __u16 *) (PA_MRSHPC + (port - 0x2000));
-       else if (port >= 0x300 || port < 0x310)
+       else if (port >= 0x300 && port < 0x310)
                return (volatile __u16 *) (PA_SMSC + (port - 0x300));
 }
 
 unsigned char se7206_inb(unsigned long port)
 {
-       return (*port2adr(port))&0xff; 
+       return (*port2adr(port)) & 0xff;
 }
 
 unsigned char se7206_inb_p(unsigned long port)
 {
        unsigned long v;
 
-       v = (*port2adr(port))&0xff; 
+       v = (*port2adr(port)) & 0xff;
        delay();
        return v;
 }
@@ -51,12 +51,6 @@ unsigned short se7206_inw(unsigned long port)
        return *port2adr(port);;
 }
 
-unsigned int se7206_inl(unsigned long port)
-{
-       maybebadio(port);
-       return 0;
-}
-
 void se7206_outb(unsigned char value, unsigned long port)
 {
        *(port2adr(port)) = value;
@@ -73,11 +67,6 @@ void se7206_outw(unsigned short value, unsigned long port)
        *port2adr(port) = value;
 }
 
-void se7206_outl(unsigned int value, unsigned long port)
-{
-       maybebadio(port);
-}
-
 void se7206_insb(unsigned long port, void *addr, unsigned long count)
 {
        volatile __u16 *p = port2adr(port);
@@ -95,11 +84,6 @@ void se7206_insw(unsigned long port, void *addr, unsigned long count)
                *ap++ = *p;
 }
 
-void se7206_insl(unsigned long port, void *addr, unsigned long count)
-{
-       maybebadio(port);
-}
-
 void se7206_outsb(unsigned long port, const void *addr, unsigned long count)
 {
        volatile __u16 *p = port2adr(port);
@@ -116,8 +100,3 @@ void se7206_outsw(unsigned long port, const void *addr, unsigned long count)
        while (count--)
                *p = *ap++;
 }
-
-void se7206_outsl(unsigned long port, const void *addr, unsigned long count)
-{
-       maybebadio(port);
-}
index 293ba464f33431d6e88dea7a5c44dc02a5c3a651..499a3e9dbfc2eb1d421e750d8d16a296b4acbd22 100644 (file)
@@ -6,9 +6,7 @@
  * Copyright (C) 2007  Paul Mundt
  *
  * Hitachi 7206 SolutionEngine Support.
- *
  */
-
 #include <linux/init.h>
 #include <linux/platform_device.h>
 #include <asm/se7206.h>
@@ -81,24 +79,18 @@ static struct sh_machine_vector mv_se __initmv = {
        .mv_nr_irqs             = 256,
        .mv_inb                 = se7206_inb,
        .mv_inw                 = se7206_inw,
-       .mv_inl                 = se7206_inl,
        .mv_outb                = se7206_outb,
        .mv_outw                = se7206_outw,
-       .mv_outl                = se7206_outl,
 
        .mv_inb_p               = se7206_inb_p,
        .mv_inw_p               = se7206_inw,
-       .mv_inl_p               = se7206_inl,
        .mv_outb_p              = se7206_outb_p,
        .mv_outw_p              = se7206_outw,
-       .mv_outl_p              = se7206_outl,
 
        .mv_insb                = se7206_insb,
        .mv_insw                = se7206_insw,
-       .mv_insl                = se7206_insl,
        .mv_outsb               = se7206_outsb,
        .mv_outsw               = se7206_outsw,
-       .mv_outsl               = se7206_outsl,
 
        .mv_init_irq            = init_se7206_IRQ,
 };