Lines Matching +full:8 +full:- +full:port
1 // SPDX-License-Identifier: GPL-2.0
5 * Copyright (c) Matthew Wilcox 2001 for Hewlett-Packard
17 ** Assumes the device can cope with 32-bit transfers. If it can't,
42 count--; in memcpy_fromio()
50 count -= 2; in memcpy_fromio()
57 count -= 4; in memcpy_fromio()
65 count -= 2; in memcpy_fromio()
69 while (count--) { in memcpy_fromio()
77 * Read COUNT 8-bit bytes from port PORT into memory starting at
80 void insb (unsigned long port, void *dst, unsigned long count) in insb() argument
89 count--; in insb()
90 *p = inb(port); in insb()
96 count -= 4; in insb()
97 w = inb(port) << 24; in insb()
98 w |= inb(port) << 16; in insb()
99 w |= inb(port) << 8; in insb()
100 w |= inb(port); in insb()
106 --count; in insb()
107 *p = inb(port); in insb()
114 * Read COUNT 16-bit words from port PORT into memory starting at
120 void insw (unsigned long port, void *dst, unsigned long count) in insw() argument
132 case 0x00: /* Buffer 32-bit aligned */ in insw()
135 count -= 2; in insw()
136 l = cpu_to_le16(inw(port)) << 16; in insw()
137 l |= cpu_to_le16(inw(port)); in insw()
142 *(unsigned short *)p = cpu_to_le16(inw(port)); in insw()
146 case 0x02: /* Buffer 16-bit aligned */ in insw()
147 *(unsigned short *)p = cpu_to_le16(inw(port)); in insw()
149 count--; in insw()
152 count -= 2; in insw()
153 l = cpu_to_le16(inw(port)) << 16; in insw()
154 l |= cpu_to_le16(inw(port)); in insw()
159 *(unsigned short *)p = cpu_to_le16(inw(port)); in insw()
163 case 0x01: /* Buffer 8-bit aligned */ in insw()
166 * in this case, 16bit will have to do -- DE */ in insw()
167 --count; in insw()
169 l = cpu_to_le16(inw(port)); in insw()
170 *p = l >> 8; in insw()
172 while (count--) in insw()
174 l2 = cpu_to_le16(inw(port)); in insw()
175 *(unsigned short *)p = (l & 0xff) << 8 | (l2 >> 8); in insw()
187 * Read COUNT 32-bit words from port PORT into memory starting at
192 void insl (unsigned long port, void *dst, unsigned long count) in insl() argument
204 case 0x00: /* Buffer 32-bit aligned */ in insl()
205 while (count--) in insl()
207 *(unsigned int *)p = cpu_to_le32(inl(port)); in insl()
212 case 0x02: /* Buffer 16-bit aligned */ in insl()
213 --count; in insl()
215 l = cpu_to_le32(inl(port)); in insl()
219 while (count--) in insl()
221 l2 = cpu_to_le32(inl(port)); in insl()
228 case 0x01: /* Buffer 8-bit aligned */ in insl()
229 --count; in insl()
231 l = cpu_to_le32(inl(port)); in insl()
234 *(unsigned short *)p = (l >> 8) & 0xffff; in insl()
236 while (count--) in insl()
238 l2 = cpu_to_le32(inl(port)); in insl()
239 *(unsigned int *)p = (l & 0xff) << 24 | (l2 >> 8); in insl()
245 case 0x03: /* Buffer 8-bit aligned */ in insl()
246 --count; in insl()
248 l = cpu_to_le32(inl(port)); in insl()
251 while (count--) in insl()
253 l2 = cpu_to_le32(inl(port)); in insl()
254 *(unsigned int *)p = (l & 0xffffff) << 8 | l2 >> 24; in insl()
258 *(unsigned short *)p = (l >> 8) & 0xffff; in insl()
270 * doing byte writes the slow way (no r-m-w cycle).
272 void outsb(unsigned long port, const void * src, unsigned long count) in outsb() argument
278 count--; in outsb()
279 outb(*p, port); in outsb()
290 void outsw (unsigned long port, const void *src, unsigned long count) in outsw() argument
302 case 0x00: /* Buffer 32-bit aligned */ in outsw()
304 count -= 2; in outsw()
307 outw(le16_to_cpu(l >> 16), port); in outsw()
308 outw(le16_to_cpu(l & 0xffff), port); in outsw()
311 outw(le16_to_cpu(*(unsigned short*)p), port); in outsw()
315 case 0x02: /* Buffer 16-bit aligned */ in outsw()
317 outw(le16_to_cpu(*(unsigned short*)p), port); in outsw()
319 count--; in outsw()
322 count -= 2; in outsw()
325 outw(le16_to_cpu(l >> 16), port); in outsw()
326 outw(le16_to_cpu(l & 0xffff), port); in outsw()
329 outw(le16_to_cpu(*(unsigned short *)p), port); in outsw()
333 case 0x01: /* Buffer 8-bit aligned */ in outsw()
335 * in this case, 16bit will have to do -- DE */ in outsw()
337 l = *p << 8; in outsw()
339 count--; in outsw()
342 count--; in outsw()
345 outw(le16_to_cpu(l | l2 >> 8), port); in outsw()
346 l = l2 << 8; in outsw()
349 outw (le16_to_cpu(l | l2>>8), port); in outsw()
362 void outsl (unsigned long port, const void *src, unsigned long count) in outsl() argument
374 case 0x00: /* Buffer 32-bit aligned */ in outsl()
375 while (count--) in outsl()
377 outl(le32_to_cpu(*(unsigned int *)p), port); in outsl()
382 case 0x02: /* Buffer 16-bit aligned */ in outsl()
383 --count; in outsl()
388 while (count--) in outsl()
392 outl (le32_to_cpu(l << 16 | l2 >> 16), port); in outsl()
396 outl (le32_to_cpu(l << 16 | l2), port); in outsl()
398 case 0x01: /* Buffer 8-bit aligned */ in outsl()
399 --count; in outsl()
403 l |= *(unsigned short *)p << 8; in outsl()
406 while (count--) in outsl()
410 outl (le32_to_cpu(l | l2 >> 24), port); in outsl()
411 l = l2 << 8; in outsl()
414 outl (le32_to_cpu(l | l2), port); in outsl()
416 case 0x03: /* Buffer 8-bit aligned */ in outsl()
417 --count; in outsl()
422 while (count--) in outsl()
426 outl (le32_to_cpu(l | l2 >> 8), port); in outsl()
432 outl (le32_to_cpu(l | l2), port); in outsl()