diff options
| author | David S. Miller <davem@davemloft.net> | 2005-08-31 18:01:33 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2005-08-31 18:01:33 -0400 |
| commit | 8a36895c0ddac143b7f0e87d46153f4f75d9fff7 (patch) | |
| tree | eefe211a3b8ebe26e9d706c14760a5d3a91c56fb | |
| parent | 5843e37e24d7cf32f7996dd015245633e0790595 (diff) | |
[SPARC64]: Use 'unsigned long' for port argument to I/O string ops.
This kills warnings when building drivers/ide/ide-iops.c
and puts us in-line with what other platforms do here.
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | arch/sparc64/lib/PeeCeeI.c | 77 | ||||
| -rw-r--r-- | include/asm-sparc64/io.h | 47 |
2 files changed, 79 insertions, 45 deletions
diff --git a/arch/sparc64/lib/PeeCeeI.c b/arch/sparc64/lib/PeeCeeI.c index 3008d536e8c2..3c6cfbb20360 100644 --- a/arch/sparc64/lib/PeeCeeI.c +++ b/arch/sparc64/lib/PeeCeeI.c | |||
| @@ -7,28 +7,31 @@ | |||
| 7 | #include <asm/io.h> | 7 | #include <asm/io.h> |
| 8 | #include <asm/byteorder.h> | 8 | #include <asm/byteorder.h> |
| 9 | 9 | ||
| 10 | void outsb(void __iomem *addr, const void *src, unsigned long count) | 10 | void outsb(unsigned long __addr, const void *src, unsigned long count) |
| 11 | { | 11 | { |
| 12 | void __iomem *addr = (void __iomem *) __addr; | ||
| 12 | const u8 *p = src; | 13 | const u8 *p = src; |
| 13 | 14 | ||
| 14 | while(count--) | 15 | while (count--) |
| 15 | outb(*p++, addr); | 16 | outb(*p++, addr); |
| 16 | } | 17 | } |
| 17 | 18 | ||
| 18 | void outsw(void __iomem *addr, const void *src, unsigned long count) | 19 | void outsw(unsigned long __addr, const void *src, unsigned long count) |
| 19 | { | 20 | { |
| 20 | if(count) { | 21 | void __iomem *addr = (void __iomem *) __addr; |
| 22 | |||
| 23 | if (count) { | ||
| 21 | u16 *ps = (u16 *)src; | 24 | u16 *ps = (u16 *)src; |
| 22 | u32 *pi; | 25 | u32 *pi; |
| 23 | 26 | ||
| 24 | if(((u64)src) & 0x2) { | 27 | if (((u64)src) & 0x2) { |
| 25 | u16 val = le16_to_cpup(ps); | 28 | u16 val = le16_to_cpup(ps); |
| 26 | outw(val, addr); | 29 | outw(val, addr); |
| 27 | ps++; | 30 | ps++; |
| 28 | count--; | 31 | count--; |
| 29 | } | 32 | } |
| 30 | pi = (u32 *)ps; | 33 | pi = (u32 *)ps; |
| 31 | while(count >= 2) { | 34 | while (count >= 2) { |
| 32 | u32 w = le32_to_cpup(pi); | 35 | u32 w = le32_to_cpup(pi); |
| 33 | 36 | ||
| 34 | pi++; | 37 | pi++; |
| @@ -37,19 +40,21 @@ void outsw(void __iomem *addr, const void *src, unsigned long count) | |||
| 37 | count -= 2; | 40 | count -= 2; |
| 38 | } | 41 | } |
| 39 | ps = (u16 *)pi; | 42 | ps = (u16 *)pi; |
| 40 | if(count) { | 43 | if (count) { |
| 41 | u16 val = le16_to_cpup(ps); | 44 | u16 val = le16_to_cpup(ps); |
| 42 | outw(val, addr); | 45 | outw(val, addr); |
| 43 | } | 46 | } |
| 44 | } | 47 | } |
| 45 | } | 48 | } |
| 46 | 49 | ||
| 47 | void outsl(void __iomem *addr, const void *src, unsigned long count) | 50 | void outsl(unsigned long __addr, const void *src, unsigned long count) |
| 48 | { | 51 | { |
| 49 | if(count) { | 52 | void __iomem *addr = (void __iomem *) __addr; |
| 50 | if((((u64)src) & 0x3) == 0) { | 53 | |
| 54 | if (count) { | ||
| 55 | if ((((u64)src) & 0x3) == 0) { | ||
| 51 | u32 *p = (u32 *)src; | 56 | u32 *p = (u32 *)src; |
| 52 | while(count--) { | 57 | while (count--) { |
| 53 | u32 val = cpu_to_le32p(p); | 58 | u32 val = cpu_to_le32p(p); |
| 54 | outl(val, addr); | 59 | outl(val, addr); |
| 55 | p++; | 60 | p++; |
| @@ -60,13 +65,13 @@ void outsl(void __iomem *addr, const void *src, unsigned long count) | |||
| 60 | u32 l = 0, l2; | 65 | u32 l = 0, l2; |
| 61 | u32 *pi; | 66 | u32 *pi; |
| 62 | 67 | ||
| 63 | switch(((u64)src) & 0x3) { | 68 | switch (((u64)src) & 0x3) { |
| 64 | case 0x2: | 69 | case 0x2: |
| 65 | count -= 1; | 70 | count -= 1; |
| 66 | l = cpu_to_le16p(ps) << 16; | 71 | l = cpu_to_le16p(ps) << 16; |
| 67 | ps++; | 72 | ps++; |
| 68 | pi = (u32 *)ps; | 73 | pi = (u32 *)ps; |
| 69 | while(count--) { | 74 | while (count--) { |
| 70 | l2 = cpu_to_le32p(pi); | 75 | l2 = cpu_to_le32p(pi); |
| 71 | pi++; | 76 | pi++; |
| 72 | outl(((l >> 16) | (l2 << 16)), addr); | 77 | outl(((l >> 16) | (l2 << 16)), addr); |
| @@ -86,7 +91,7 @@ void outsl(void __iomem *addr, const void *src, unsigned long count) | |||
| 86 | ps++; | 91 | ps++; |
| 87 | l |= (l2 << 16); | 92 | l |= (l2 << 16); |
| 88 | pi = (u32 *)ps; | 93 | pi = (u32 *)ps; |
| 89 | while(count--) { | 94 | while (count--) { |
| 90 | l2 = cpu_to_le32p(pi); | 95 | l2 = cpu_to_le32p(pi); |
| 91 | pi++; | 96 | pi++; |
| 92 | outl(((l >> 8) | (l2 << 24)), addr); | 97 | outl(((l >> 8) | (l2 << 24)), addr); |
| @@ -101,7 +106,7 @@ void outsl(void __iomem *addr, const void *src, unsigned long count) | |||
| 101 | pb = (u8 *)src; | 106 | pb = (u8 *)src; |
| 102 | l = (*pb++ << 24); | 107 | l = (*pb++ << 24); |
| 103 | pi = (u32 *)pb; | 108 | pi = (u32 *)pb; |
| 104 | while(count--) { | 109 | while (count--) { |
| 105 | l2 = cpu_to_le32p(pi); | 110 | l2 = cpu_to_le32p(pi); |
| 106 | pi++; | 111 | pi++; |
| 107 | outl(((l >> 24) | (l2 << 8)), addr); | 112 | outl(((l >> 24) | (l2 << 8)), addr); |
| @@ -119,16 +124,18 @@ void outsl(void __iomem *addr, const void *src, unsigned long count) | |||
| 119 | } | 124 | } |
| 120 | } | 125 | } |
| 121 | 126 | ||
| 122 | void insb(void __iomem *addr, void *dst, unsigned long count) | 127 | void insb(unsigned long __addr, void *dst, unsigned long count) |
| 123 | { | 128 | { |
| 124 | if(count) { | 129 | void __iomem *addr = (void __iomem *) __addr; |
| 130 | |||
| 131 | if (count) { | ||
| 125 | u32 *pi; | 132 | u32 *pi; |
| 126 | u8 *pb = dst; | 133 | u8 *pb = dst; |
| 127 | 134 | ||
| 128 | while((((unsigned long)pb) & 0x3) && count--) | 135 | while ((((unsigned long)pb) & 0x3) && count--) |
| 129 | *pb++ = inb(addr); | 136 | *pb++ = inb(addr); |
| 130 | pi = (u32 *)pb; | 137 | pi = (u32 *)pb; |
| 131 | while(count >= 4) { | 138 | while (count >= 4) { |
| 132 | u32 w; | 139 | u32 w; |
| 133 | 140 | ||
| 134 | w = (inb(addr) << 24); | 141 | w = (inb(addr) << 24); |
| @@ -139,23 +146,25 @@ void insb(void __iomem *addr, void *dst, unsigned long count) | |||
| 139 | count -= 4; | 146 | count -= 4; |
| 140 | } | 147 | } |
| 141 | pb = (u8 *)pi; | 148 | pb = (u8 *)pi; |
| 142 | while(count--) | 149 | while (count--) |
| 143 | *pb++ = inb(addr); | 150 | *pb++ = inb(addr); |
| 144 | } | 151 | } |
| 145 | } | 152 | } |
| 146 | 153 | ||
| 147 | void insw(void __iomem *addr, void *dst, unsigned long count) | 154 | void insw(unsigned long __addr, void *dst, unsigned long count) |
| 148 | { | 155 | { |
| 149 | if(count) { | 156 | void __iomem *addr = (void __iomem *) __addr; |
| 157 | |||
| 158 | if (count) { | ||
| 150 | u16 *ps = dst; | 159 | u16 *ps = dst; |
| 151 | u32 *pi; | 160 | u32 *pi; |
| 152 | 161 | ||
| 153 | if(((unsigned long)ps) & 0x2) { | 162 | if (((unsigned long)ps) & 0x2) { |
| 154 | *ps++ = le16_to_cpu(inw(addr)); | 163 | *ps++ = le16_to_cpu(inw(addr)); |
| 155 | count--; | 164 | count--; |
| 156 | } | 165 | } |
| 157 | pi = (u32 *)ps; | 166 | pi = (u32 *)ps; |
| 158 | while(count >= 2) { | 167 | while (count >= 2) { |
| 159 | u32 w; | 168 | u32 w; |
| 160 | 169 | ||
| 161 | w = (le16_to_cpu(inw(addr)) << 16); | 170 | w = (le16_to_cpu(inw(addr)) << 16); |
| @@ -164,31 +173,33 @@ void insw(void __iomem *addr, void *dst, unsigned long count) | |||
| 164 | count -= 2; | 173 | count -= 2; |
| 165 | } | 174 | } |
| 166 | ps = (u16 *)pi; | 175 | ps = (u16 *)pi; |
| 167 | if(count) | 176 | if (count) |
| 168 | *ps = le16_to_cpu(inw(addr)); | 177 | *ps = le16_to_cpu(inw(addr)); |
| 169 | } | 178 | } |
| 170 | } | 179 | } |
| 171 | 180 | ||
| 172 | void insl(void __iomem *addr, void *dst, unsigned long count) | 181 | void insl(unsigned long __addr, void *dst, unsigned long count) |
| 173 | { | 182 | { |
| 174 | if(count) { | 183 | void __iomem *addr = (void __iomem *) __addr; |
| 175 | if((((unsigned long)dst) & 0x3) == 0) { | 184 | |
| 185 | if (count) { | ||
| 186 | if ((((unsigned long)dst) & 0x3) == 0) { | ||
| 176 | u32 *pi = dst; | 187 | u32 *pi = dst; |
| 177 | while(count--) | 188 | while (count--) |
| 178 | *pi++ = le32_to_cpu(inl(addr)); | 189 | *pi++ = le32_to_cpu(inl(addr)); |
| 179 | } else { | 190 | } else { |
| 180 | u32 l = 0, l2, *pi; | 191 | u32 l = 0, l2, *pi; |
| 181 | u16 *ps; | 192 | u16 *ps; |
| 182 | u8 *pb; | 193 | u8 *pb; |
| 183 | 194 | ||
| 184 | switch(((unsigned long)dst) & 3) { | 195 | switch (((unsigned long)dst) & 3) { |
| 185 | case 0x2: | 196 | case 0x2: |
| 186 | ps = dst; | 197 | ps = dst; |
| 187 | count -= 1; | 198 | count -= 1; |
| 188 | l = le32_to_cpu(inl(addr)); | 199 | l = le32_to_cpu(inl(addr)); |
| 189 | *ps++ = l; | 200 | *ps++ = l; |
| 190 | pi = (u32 *)ps; | 201 | pi = (u32 *)ps; |
| 191 | while(count--) { | 202 | while (count--) { |
| 192 | l2 = le32_to_cpu(inl(addr)); | 203 | l2 = le32_to_cpu(inl(addr)); |
| 193 | *pi++ = (l << 16) | (l2 >> 16); | 204 | *pi++ = (l << 16) | (l2 >> 16); |
| 194 | l = l2; | 205 | l = l2; |
| @@ -205,7 +216,7 @@ void insl(void __iomem *addr, void *dst, unsigned long count) | |||
| 205 | ps = (u16 *)pb; | 216 | ps = (u16 *)pb; |
| 206 | *ps++ = ((l >> 8) & 0xffff); | 217 | *ps++ = ((l >> 8) & 0xffff); |
| 207 | pi = (u32 *)ps; | 218 | pi = (u32 *)ps; |
| 208 | while(count--) { | 219 | while (count--) { |
| 209 | l2 = le32_to_cpu(inl(addr)); | 220 | l2 = le32_to_cpu(inl(addr)); |
| 210 | *pi++ = (l << 24) | (l2 >> 8); | 221 | *pi++ = (l << 24) | (l2 >> 8); |
| 211 | l = l2; | 222 | l = l2; |
| @@ -220,7 +231,7 @@ void insl(void __iomem *addr, void *dst, unsigned long count) | |||
| 220 | l = le32_to_cpu(inl(addr)); | 231 | l = le32_to_cpu(inl(addr)); |
| 221 | *pb++ = l >> 24; | 232 | *pb++ = l >> 24; |
| 222 | pi = (u32 *)pb; | 233 | pi = (u32 *)pb; |
| 223 | while(count--) { | 234 | while (count--) { |
| 224 | l2 = le32_to_cpu(inl(addr)); | 235 | l2 = le32_to_cpu(inl(addr)); |
| 225 | *pi++ = (l << 8) | (l2 >> 24); | 236 | *pi++ = (l << 8) | (l2 >> 24); |
| 226 | l = l2; | 237 | l = l2; |
diff --git a/include/asm-sparc64/io.h b/include/asm-sparc64/io.h index afdcea90707a..0056770e83ad 100644 --- a/include/asm-sparc64/io.h +++ b/include/asm-sparc64/io.h | |||
| @@ -100,18 +100,41 @@ static __inline__ void _outl(u32 l, unsigned long addr) | |||
| 100 | #define inl_p(__addr) inl(__addr) | 100 | #define inl_p(__addr) inl(__addr) |
| 101 | #define outl_p(__l, __addr) outl(__l, __addr) | 101 | #define outl_p(__l, __addr) outl(__l, __addr) |
| 102 | 102 | ||
| 103 | extern void outsb(void __iomem *addr, const void *src, unsigned long count); | 103 | extern void outsb(unsigned long, const void *, unsigned long); |
| 104 | extern void outsw(void __iomem *addr, const void *src, unsigned long count); | 104 | extern void outsw(unsigned long, const void *, unsigned long); |
| 105 | extern void outsl(void __iomem *addr, const void *src, unsigned long count); | 105 | extern void outsl(unsigned long, const void *, unsigned long); |
| 106 | extern void insb(void __iomem *addr, void *dst, unsigned long count); | 106 | extern void insb(unsigned long, void *, unsigned long); |
| 107 | extern void insw(void __iomem *addr, void *dst, unsigned long count); | 107 | extern void insw(unsigned long, void *, unsigned long); |
| 108 | extern void insl(void __iomem *addr, void *dst, unsigned long count); | 108 | extern void insl(unsigned long, void *, unsigned long); |
| 109 | #define ioread8_rep(a,d,c) insb(a,d,c) | 109 | |
| 110 | #define ioread16_rep(a,d,c) insw(a,d,c) | 110 | static inline void ioread8_rep(void __iomem *port, void *buf, unsigned long count) |
| 111 | #define ioread32_rep(a,d,c) insl(a,d,c) | 111 | { |
| 112 | #define iowrite8_rep(a,s,c) outsb(a,s,c) | 112 | insb((unsigned long __force)port, buf, count); |
| 113 | #define iowrite16_rep(a,s,c) outsw(a,s,c) | 113 | } |
| 114 | #define iowrite32_rep(a,s,c) outsl(a,s,c) | 114 | static inline void ioread16_rep(void __iomem *port, void *buf, unsigned long count) |
| 115 | { | ||
| 116 | insw((unsigned long __force)port, buf, count); | ||
| 117 | } | ||
| 118 | |||
| 119 | static inline void ioread32_rep(void __iomem *port, void *buf, unsigned long count) | ||
| 120 | { | ||
| 121 | insl((unsigned long __force)port, buf, count); | ||
| 122 | } | ||
| 123 | |||
| 124 | static inline void iowrite8_rep(void __iomem *port, const void *buf, unsigned long count) | ||
| 125 | { | ||
| 126 | outsb((unsigned long __force)port, buf, count); | ||
| 127 | } | ||
| 128 | |||
| 129 | static inline void iowrite16_rep(void __iomem *port, const void *buf, unsigned long count) | ||
| 130 | { | ||
| 131 | outsw((unsigned long __force)port, buf, count); | ||
| 132 | } | ||
| 133 | |||
| 134 | static inline void iowrite32_rep(void __iomem *port, const void *buf, unsigned long count) | ||
| 135 | { | ||
| 136 | outsl((unsigned long __force)port, buf, count); | ||
| 137 | } | ||
| 115 | 138 | ||
| 116 | /* Memory functions, same as I/O accesses on Ultra. */ | 139 | /* Memory functions, same as I/O accesses on Ultra. */ |
| 117 | static inline u8 _readb(const volatile void __iomem *addr) | 140 | static inline u8 _readb(const volatile void __iomem *addr) |
