Commit 8a36895c0ddac143b7f0e87d46153f4f75d9fff7
1 parent
5843e37e24
Exists in
master
and in
7 other branches
[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>
Showing 2 changed files with 79 additions and 45 deletions Side-by-side Diff
arch/sparc64/lib/PeeCeeI.c
... | ... | @@ -7,28 +7,31 @@ |
7 | 7 | #include <asm/io.h> |
8 | 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 | 13 | const u8 *p = src; |
13 | 14 | |
14 | - while(count--) | |
15 | + while (count--) | |
15 | 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 | 24 | u16 *ps = (u16 *)src; |
22 | 25 | u32 *pi; |
23 | 26 | |
24 | - if(((u64)src) & 0x2) { | |
27 | + if (((u64)src) & 0x2) { | |
25 | 28 | u16 val = le16_to_cpup(ps); |
26 | 29 | outw(val, addr); |
27 | 30 | ps++; |
28 | 31 | count--; |
29 | 32 | } |
30 | 33 | pi = (u32 *)ps; |
31 | - while(count >= 2) { | |
34 | + while (count >= 2) { | |
32 | 35 | u32 w = le32_to_cpup(pi); |
33 | 36 | |
34 | 37 | pi++; |
35 | 38 | |
36 | 39 | |
37 | 40 | |
... | ... | @@ -37,19 +40,21 @@ |
37 | 40 | count -= 2; |
38 | 41 | } |
39 | 42 | ps = (u16 *)pi; |
40 | - if(count) { | |
43 | + if (count) { | |
41 | 44 | u16 val = le16_to_cpup(ps); |
42 | 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) { | |
50 | - if((((u64)src) & 0x3) == 0) { | |
52 | + void __iomem *addr = (void __iomem *) __addr; | |
53 | + | |
54 | + if (count) { | |
55 | + if ((((u64)src) & 0x3) == 0) { | |
51 | 56 | u32 *p = (u32 *)src; |
52 | - while(count--) { | |
57 | + while (count--) { | |
53 | 58 | u32 val = cpu_to_le32p(p); |
54 | 59 | outl(val, addr); |
55 | 60 | p++; |
56 | 61 | |
... | ... | @@ -60,13 +65,13 @@ |
60 | 65 | u32 l = 0, l2; |
61 | 66 | u32 *pi; |
62 | 67 | |
63 | - switch(((u64)src) & 0x3) { | |
68 | + switch (((u64)src) & 0x3) { | |
64 | 69 | case 0x2: |
65 | 70 | count -= 1; |
66 | 71 | l = cpu_to_le16p(ps) << 16; |
67 | 72 | ps++; |
68 | 73 | pi = (u32 *)ps; |
69 | - while(count--) { | |
74 | + while (count--) { | |
70 | 75 | l2 = cpu_to_le32p(pi); |
71 | 76 | pi++; |
72 | 77 | outl(((l >> 16) | (l2 << 16)), addr); |
... | ... | @@ -86,7 +91,7 @@ |
86 | 91 | ps++; |
87 | 92 | l |= (l2 << 16); |
88 | 93 | pi = (u32 *)ps; |
89 | - while(count--) { | |
94 | + while (count--) { | |
90 | 95 | l2 = cpu_to_le32p(pi); |
91 | 96 | pi++; |
92 | 97 | outl(((l >> 8) | (l2 << 24)), addr); |
... | ... | @@ -101,7 +106,7 @@ |
101 | 106 | pb = (u8 *)src; |
102 | 107 | l = (*pb++ << 24); |
103 | 108 | pi = (u32 *)pb; |
104 | - while(count--) { | |
109 | + while (count--) { | |
105 | 110 | l2 = cpu_to_le32p(pi); |
106 | 111 | pi++; |
107 | 112 | outl(((l >> 24) | (l2 << 8)), addr); |
108 | 113 | |
109 | 114 | |
110 | 115 | |
... | ... | @@ -119,16 +124,18 @@ |
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 | 132 | u32 *pi; |
126 | 133 | u8 *pb = dst; |
127 | 134 | |
128 | - while((((unsigned long)pb) & 0x3) && count--) | |
135 | + while ((((unsigned long)pb) & 0x3) && count--) | |
129 | 136 | *pb++ = inb(addr); |
130 | 137 | pi = (u32 *)pb; |
131 | - while(count >= 4) { | |
138 | + while (count >= 4) { | |
132 | 139 | u32 w; |
133 | 140 | |
134 | 141 | w = (inb(addr) << 24); |
135 | 142 | |
136 | 143 | |
137 | 144 | |
138 | 145 | |
... | ... | @@ -139,23 +146,25 @@ |
139 | 146 | count -= 4; |
140 | 147 | } |
141 | 148 | pb = (u8 *)pi; |
142 | - while(count--) | |
149 | + while (count--) | |
143 | 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 | 159 | u16 *ps = dst; |
151 | 160 | u32 *pi; |
152 | 161 | |
153 | - if(((unsigned long)ps) & 0x2) { | |
162 | + if (((unsigned long)ps) & 0x2) { | |
154 | 163 | *ps++ = le16_to_cpu(inw(addr)); |
155 | 164 | count--; |
156 | 165 | } |
157 | 166 | pi = (u32 *)ps; |
158 | - while(count >= 2) { | |
167 | + while (count >= 2) { | |
159 | 168 | u32 w; |
160 | 169 | |
161 | 170 | w = (le16_to_cpu(inw(addr)) << 16); |
162 | 171 | |
163 | 172 | |
164 | 173 | |
165 | 174 | |
166 | 175 | |
... | ... | @@ -164,31 +173,33 @@ |
164 | 173 | count -= 2; |
165 | 174 | } |
166 | 175 | ps = (u16 *)pi; |
167 | - if(count) | |
176 | + if (count) | |
168 | 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) { | |
175 | - if((((unsigned long)dst) & 0x3) == 0) { | |
183 | + void __iomem *addr = (void __iomem *) __addr; | |
184 | + | |
185 | + if (count) { | |
186 | + if ((((unsigned long)dst) & 0x3) == 0) { | |
176 | 187 | u32 *pi = dst; |
177 | - while(count--) | |
188 | + while (count--) | |
178 | 189 | *pi++ = le32_to_cpu(inl(addr)); |
179 | 190 | } else { |
180 | 191 | u32 l = 0, l2, *pi; |
181 | 192 | u16 *ps; |
182 | 193 | u8 *pb; |
183 | 194 | |
184 | - switch(((unsigned long)dst) & 3) { | |
195 | + switch (((unsigned long)dst) & 3) { | |
185 | 196 | case 0x2: |
186 | 197 | ps = dst; |
187 | 198 | count -= 1; |
188 | 199 | l = le32_to_cpu(inl(addr)); |
189 | 200 | *ps++ = l; |
190 | 201 | pi = (u32 *)ps; |
191 | - while(count--) { | |
202 | + while (count--) { | |
192 | 203 | l2 = le32_to_cpu(inl(addr)); |
193 | 204 | *pi++ = (l << 16) | (l2 >> 16); |
194 | 205 | l = l2; |
... | ... | @@ -205,7 +216,7 @@ |
205 | 216 | ps = (u16 *)pb; |
206 | 217 | *ps++ = ((l >> 8) & 0xffff); |
207 | 218 | pi = (u32 *)ps; |
208 | - while(count--) { | |
219 | + while (count--) { | |
209 | 220 | l2 = le32_to_cpu(inl(addr)); |
210 | 221 | *pi++ = (l << 24) | (l2 >> 8); |
211 | 222 | l = l2; |
... | ... | @@ -220,7 +231,7 @@ |
220 | 231 | l = le32_to_cpu(inl(addr)); |
221 | 232 | *pb++ = l >> 24; |
222 | 233 | pi = (u32 *)pb; |
223 | - while(count--) { | |
234 | + while (count--) { | |
224 | 235 | l2 = le32_to_cpu(inl(addr)); |
225 | 236 | *pi++ = (l << 8) | (l2 >> 24); |
226 | 237 | l = l2; |
include/asm-sparc64/io.h
... | ... | @@ -100,18 +100,41 @@ |
100 | 100 | #define inl_p(__addr) inl(__addr) |
101 | 101 | #define outl_p(__l, __addr) outl(__l, __addr) |
102 | 102 | |
103 | -extern void outsb(void __iomem *addr, const void *src, unsigned long count); | |
104 | -extern void outsw(void __iomem *addr, const void *src, unsigned long count); | |
105 | -extern void outsl(void __iomem *addr, const void *src, unsigned long count); | |
106 | -extern void insb(void __iomem *addr, void *dst, unsigned long count); | |
107 | -extern void insw(void __iomem *addr, void *dst, unsigned long count); | |
108 | -extern void insl(void __iomem *addr, void *dst, unsigned long count); | |
109 | -#define ioread8_rep(a,d,c) insb(a,d,c) | |
110 | -#define ioread16_rep(a,d,c) insw(a,d,c) | |
111 | -#define ioread32_rep(a,d,c) insl(a,d,c) | |
112 | -#define iowrite8_rep(a,s,c) outsb(a,s,c) | |
113 | -#define iowrite16_rep(a,s,c) outsw(a,s,c) | |
114 | -#define iowrite32_rep(a,s,c) outsl(a,s,c) | |
103 | +extern void outsb(unsigned long, const void *, unsigned long); | |
104 | +extern void outsw(unsigned long, const void *, unsigned long); | |
105 | +extern void outsl(unsigned long, const void *, unsigned long); | |
106 | +extern void insb(unsigned long, void *, unsigned long); | |
107 | +extern void insw(unsigned long, void *, unsigned long); | |
108 | +extern void insl(unsigned long, void *, unsigned long); | |
109 | + | |
110 | +static inline void ioread8_rep(void __iomem *port, void *buf, unsigned long count) | |
111 | +{ | |
112 | + insb((unsigned long __force)port, buf, count); | |
113 | +} | |
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 | 139 | /* Memory functions, same as I/O accesses on Ultra. */ |
117 | 140 | static inline u8 _readb(const volatile void __iomem *addr) |