diff options
author | Paul Mundt <lethal@linux-sh.org> | 2007-09-12 23:59:32 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2007-09-20 22:57:54 -0400 |
commit | dfcb76089ada89a5520ad8544440799e75f01227 (patch) | |
tree | d9d12536cd6bef6ebda9eb2717f4c7a0a43a4b73 /arch/sh/boards/se/7206/io.c | |
parent | ded5431ff311d963888ac951131a04fe7633aa79 (diff) |
sh: se7206: Make the I/O port routines less stupid.
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>
Diffstat (limited to 'arch/sh/boards/se/7206/io.c')
-rw-r--r-- | arch/sh/boards/se/7206/io.c | 29 |
1 files changed, 4 insertions, 25 deletions
diff --git a/arch/sh/boards/se/7206/io.c b/arch/sh/boards/se/7206/io.c index b557273e0cbe..eb30dc2df96f 100644 --- a/arch/sh/boards/se/7206/io.c +++ b/arch/sh/boards/se/7206/io.c | |||
@@ -26,22 +26,22 @@ static inline void delay(void) | |||
26 | static inline volatile __u16 * | 26 | static inline volatile __u16 * |
27 | port2adr(unsigned int port) | 27 | port2adr(unsigned int port) |
28 | { | 28 | { |
29 | if (port >= 0x2000) | 29 | if (port >= 0x2000 && port < 0x2020) |
30 | return (volatile __u16 *) (PA_MRSHPC + (port - 0x2000)); | 30 | return (volatile __u16 *) (PA_MRSHPC + (port - 0x2000)); |
31 | else if (port >= 0x300 || port < 0x310) | 31 | else if (port >= 0x300 && port < 0x310) |
32 | return (volatile __u16 *) (PA_SMSC + (port - 0x300)); | 32 | return (volatile __u16 *) (PA_SMSC + (port - 0x300)); |
33 | } | 33 | } |
34 | 34 | ||
35 | unsigned char se7206_inb(unsigned long port) | 35 | unsigned char se7206_inb(unsigned long port) |
36 | { | 36 | { |
37 | return (*port2adr(port))&0xff; | 37 | return (*port2adr(port)) & 0xff; |
38 | } | 38 | } |
39 | 39 | ||
40 | unsigned char se7206_inb_p(unsigned long port) | 40 | unsigned char se7206_inb_p(unsigned long port) |
41 | { | 41 | { |
42 | unsigned long v; | 42 | unsigned long v; |
43 | 43 | ||
44 | v = (*port2adr(port))&0xff; | 44 | v = (*port2adr(port)) & 0xff; |
45 | delay(); | 45 | delay(); |
46 | return v; | 46 | return v; |
47 | } | 47 | } |
@@ -51,12 +51,6 @@ unsigned short se7206_inw(unsigned long port) | |||
51 | return *port2adr(port);; | 51 | return *port2adr(port);; |
52 | } | 52 | } |
53 | 53 | ||
54 | unsigned int se7206_inl(unsigned long port) | ||
55 | { | ||
56 | maybebadio(port); | ||
57 | return 0; | ||
58 | } | ||
59 | |||
60 | void se7206_outb(unsigned char value, unsigned long port) | 54 | void se7206_outb(unsigned char value, unsigned long port) |
61 | { | 55 | { |
62 | *(port2adr(port)) = value; | 56 | *(port2adr(port)) = value; |
@@ -73,11 +67,6 @@ void se7206_outw(unsigned short value, unsigned long port) | |||
73 | *port2adr(port) = value; | 67 | *port2adr(port) = value; |
74 | } | 68 | } |
75 | 69 | ||
76 | void se7206_outl(unsigned int value, unsigned long port) | ||
77 | { | ||
78 | maybebadio(port); | ||
79 | } | ||
80 | |||
81 | void se7206_insb(unsigned long port, void *addr, unsigned long count) | 70 | void se7206_insb(unsigned long port, void *addr, unsigned long count) |
82 | { | 71 | { |
83 | volatile __u16 *p = port2adr(port); | 72 | volatile __u16 *p = port2adr(port); |
@@ -95,11 +84,6 @@ void se7206_insw(unsigned long port, void *addr, unsigned long count) | |||
95 | *ap++ = *p; | 84 | *ap++ = *p; |
96 | } | 85 | } |
97 | 86 | ||
98 | void se7206_insl(unsigned long port, void *addr, unsigned long count) | ||
99 | { | ||
100 | maybebadio(port); | ||
101 | } | ||
102 | |||
103 | void se7206_outsb(unsigned long port, const void *addr, unsigned long count) | 87 | void se7206_outsb(unsigned long port, const void *addr, unsigned long count) |
104 | { | 88 | { |
105 | volatile __u16 *p = port2adr(port); | 89 | volatile __u16 *p = port2adr(port); |
@@ -116,8 +100,3 @@ void se7206_outsw(unsigned long port, const void *addr, unsigned long count) | |||
116 | while (count--) | 100 | while (count--) |
117 | *p = *ap++; | 101 | *p = *ap++; |
118 | } | 102 | } |
119 | |||
120 | void se7206_outsl(unsigned long port, const void *addr, unsigned long count) | ||
121 | { | ||
122 | maybebadio(port); | ||
123 | } | ||