Commit 8a36895c0ddac143b7f0e87d46153f4f75d9fff7

Authored by David S. Miller
1 parent 5843e37e24

[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)