1 /*-
2 * Copyright 2003-2011 Netlogic Microsystems (Netlogic). All rights
3 * reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY Netlogic Microsystems ``AS IS'' AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NETLOGIC OR CONTRIBUTORS BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
26 * THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 * NETLOGIC_BSD */
29
30 #include <sys/cdefs.h>
31 __FBSDID("$FreeBSD: releng/11.2/sys/mips/nlm/bus_space_rmi_pci.c 331722 2018-03-29 02:50:57Z eadler $");
32
33 #include <sys/param.h>
34 #include <sys/systm.h>
35 #include <sys/bus.h>
36 #include <sys/kernel.h>
37 #include <sys/endian.h>
38 #include <sys/malloc.h>
39 #include <sys/ktr.h>
40
41 #include <vm/vm.h>
42 #include <vm/pmap.h>
43 #include <vm/vm_kern.h>
44 #include <vm/vm_extern.h>
45
46 #include <machine/bus.h>
47 #include <machine/cache.h>
48
49 static int
50 rmi_pci_bus_space_map(void *t, bus_addr_t addr,
51 bus_size_t size, int flags,
52 bus_space_handle_t * bshp);
53
54 static void
55 rmi_pci_bus_space_unmap(void *t, bus_space_handle_t bsh,
56 bus_size_t size);
57
58 static int
59 rmi_pci_bus_space_subregion(void *t,
60 bus_space_handle_t bsh,
61 bus_size_t offset, bus_size_t size,
62 bus_space_handle_t * nbshp);
63
64 static u_int8_t
65 rmi_pci_bus_space_read_1(void *t,
66 bus_space_handle_t handle,
67 bus_size_t offset);
68
69 static u_int16_t
70 rmi_pci_bus_space_read_2(void *t,
71 bus_space_handle_t handle,
72 bus_size_t offset);
73
74 static u_int32_t
75 rmi_pci_bus_space_read_4(void *t,
76 bus_space_handle_t handle,
77 bus_size_t offset);
78
79 static void
80 rmi_pci_bus_space_read_multi_1(void *t,
81 bus_space_handle_t handle,
82 bus_size_t offset, u_int8_t * addr,
83 size_t count);
84
85 static void
86 rmi_pci_bus_space_read_multi_2(void *t,
87 bus_space_handle_t handle,
88 bus_size_t offset, u_int16_t * addr,
89 size_t count);
90
91 static void
92 rmi_pci_bus_space_read_multi_4(void *t,
93 bus_space_handle_t handle,
94 bus_size_t offset, u_int32_t * addr,
95 size_t count);
96
97 static void
98 rmi_pci_bus_space_read_region_1(void *t,
99 bus_space_handle_t bsh,
100 bus_size_t offset, u_int8_t * addr,
101 size_t count);
102
103 static void
104 rmi_pci_bus_space_read_region_2(void *t,
105 bus_space_handle_t bsh,
106 bus_size_t offset, u_int16_t * addr,
107 size_t count);
108
109 static void
110 rmi_pci_bus_space_read_region_4(void *t,
111 bus_space_handle_t bsh,
112 bus_size_t offset, u_int32_t * addr,
113 size_t count);
114
115 static void
116 rmi_pci_bus_space_write_1(void *t,
117 bus_space_handle_t handle,
118 bus_size_t offset, u_int8_t value);
119
120 static void
121 rmi_pci_bus_space_write_2(void *t,
122 bus_space_handle_t handle,
123 bus_size_t offset, u_int16_t value);
124
125 static void
126 rmi_pci_bus_space_write_4(void *t,
127 bus_space_handle_t handle,
128 bus_size_t offset, u_int32_t value);
129
130 static void
131 rmi_pci_bus_space_write_multi_1(void *t,
132 bus_space_handle_t handle,
133 bus_size_t offset,
134 const u_int8_t * addr,
135 size_t count);
136
137 static void
138 rmi_pci_bus_space_write_multi_2(void *t,
139 bus_space_handle_t handle,
140 bus_size_t offset,
141 const u_int16_t * addr,
142 size_t count);
143
144 static void
145 rmi_pci_bus_space_write_multi_4(void *t,
146 bus_space_handle_t handle,
147 bus_size_t offset,
148 const u_int32_t * addr,
149 size_t count);
150
151 static void
152 rmi_pci_bus_space_write_region_2(void *t,
153 bus_space_handle_t bsh,
154 bus_size_t offset,
155 const u_int16_t * addr,
156 size_t count);
157
158 static void
159 rmi_pci_bus_space_write_region_4(void *t,
160 bus_space_handle_t bsh,
161 bus_size_t offset,
162 const u_int32_t * addr,
163 size_t count);
164
165 static void
166 rmi_pci_bus_space_set_region_2(void *t,
167 bus_space_handle_t bsh,
168 bus_size_t offset, u_int16_t value,
169 size_t count);
170
171 static void
172 rmi_pci_bus_space_set_region_4(void *t,
173 bus_space_handle_t bsh,
174 bus_size_t offset, u_int32_t value,
175 size_t count);
176
177 static void
178 rmi_pci_bus_space_barrier(void *tag __unused, bus_space_handle_t bsh __unused,
179 bus_size_t offset __unused, bus_size_t len __unused, int flags);
180
181 static void
182 rmi_pci_bus_space_copy_region_2(void *t,
183 bus_space_handle_t bsh1,
184 bus_size_t off1,
185 bus_space_handle_t bsh2,
186 bus_size_t off2, size_t count);
187
188 u_int8_t
189 rmi_pci_bus_space_read_stream_1(void *t, bus_space_handle_t handle,
190 bus_size_t offset);
191
192 static u_int16_t
193 rmi_pci_bus_space_read_stream_2(void *t, bus_space_handle_t handle,
194 bus_size_t offset);
195
196 static u_int32_t
197 rmi_pci_bus_space_read_stream_4(void *t, bus_space_handle_t handle,
198 bus_size_t offset);
199
200 static void
201 rmi_pci_bus_space_read_multi_stream_1(void *t,
202 bus_space_handle_t handle,
203 bus_size_t offset, u_int8_t * addr,
204 size_t count);
205
206 static void
207 rmi_pci_bus_space_read_multi_stream_2(void *t,
208 bus_space_handle_t handle,
209 bus_size_t offset, u_int16_t * addr,
210 size_t count);
211
212 static void
213 rmi_pci_bus_space_read_multi_stream_4(void *t,
214 bus_space_handle_t handle,
215 bus_size_t offset, u_int32_t * addr,
216 size_t count);
217
218 void
219 rmi_pci_bus_space_write_stream_1(void *t, bus_space_handle_t bsh,
220 bus_size_t offset, u_int8_t value);
221
222 static void
223 rmi_pci_bus_space_write_stream_2(void *t, bus_space_handle_t handle,
224 bus_size_t offset, u_int16_t value);
225
226 static void
227 rmi_pci_bus_space_write_stream_4(void *t, bus_space_handle_t handle,
228 bus_size_t offset, u_int32_t value);
229
230 static void
231 rmi_pci_bus_space_write_multi_stream_1(void *t,
232 bus_space_handle_t handle,
233 bus_size_t offset,
234 const u_int8_t * addr,
235 size_t count);
236
237 static void
238 rmi_pci_bus_space_write_multi_stream_2(void *t,
239 bus_space_handle_t handle,
240 bus_size_t offset,
241 const u_int16_t * addr,
242 size_t count);
243
244 static void
245 rmi_pci_bus_space_write_multi_stream_4(void *t,
246 bus_space_handle_t handle,
247 bus_size_t offset,
248 const u_int32_t * addr,
249 size_t count);
250
251 #define TODO() printf("XLR memory bus space function '%s' unimplemented\n", __func__)
252
253 static struct bus_space local_rmi_pci_bus_space = {
254 /* cookie */
255 (void *)0,
256
257 /* mapping/unmapping */
258 rmi_pci_bus_space_map,
259 rmi_pci_bus_space_unmap,
260 rmi_pci_bus_space_subregion,
261
262 /* allocation/deallocation */
263 NULL,
264 NULL,
265
266 /* barrier */
267 rmi_pci_bus_space_barrier,
268
269 /* read (single) */
270 rmi_pci_bus_space_read_1,
271 rmi_pci_bus_space_read_2,
272 rmi_pci_bus_space_read_4,
273 NULL,
274
275 /* read multiple */
276 rmi_pci_bus_space_read_multi_1,
277 rmi_pci_bus_space_read_multi_2,
278 rmi_pci_bus_space_read_multi_4,
279 NULL,
280
281 /* read region */
282 rmi_pci_bus_space_read_region_1,
283 rmi_pci_bus_space_read_region_2,
284 rmi_pci_bus_space_read_region_4,
285 NULL,
286
287 /* write (single) */
288 rmi_pci_bus_space_write_1,
289 rmi_pci_bus_space_write_2,
290 rmi_pci_bus_space_write_4,
291 NULL,
292
293 /* write multiple */
294 rmi_pci_bus_space_write_multi_1,
295 rmi_pci_bus_space_write_multi_2,
296 rmi_pci_bus_space_write_multi_4,
297 NULL,
298
299 /* write region */
300 NULL,
301 rmi_pci_bus_space_write_region_2,
302 rmi_pci_bus_space_write_region_4,
303 NULL,
304
305 /* set multiple */
306 NULL,
307 NULL,
308 NULL,
309 NULL,
310
311 /* set region */
312 NULL,
313 rmi_pci_bus_space_set_region_2,
314 rmi_pci_bus_space_set_region_4,
315 NULL,
316
317 /* copy */
318 NULL,
319 rmi_pci_bus_space_copy_region_2,
320 NULL,
321 NULL,
322
323 /* read (single) stream */
324 rmi_pci_bus_space_read_stream_1,
325 rmi_pci_bus_space_read_stream_2,
326 rmi_pci_bus_space_read_stream_4,
327 NULL,
328
329 /* read multiple stream */
330 rmi_pci_bus_space_read_multi_stream_1,
331 rmi_pci_bus_space_read_multi_stream_2,
332 rmi_pci_bus_space_read_multi_stream_4,
333 NULL,
334
335 /* read region stream */
336 rmi_pci_bus_space_read_region_1,
337 rmi_pci_bus_space_read_region_2,
338 rmi_pci_bus_space_read_region_4,
339 NULL,
340
341 /* write (single) stream */
342 rmi_pci_bus_space_write_stream_1,
343 rmi_pci_bus_space_write_stream_2,
344 rmi_pci_bus_space_write_stream_4,
345 NULL,
346
347 /* write multiple stream */
348 rmi_pci_bus_space_write_multi_stream_1,
349 rmi_pci_bus_space_write_multi_stream_2,
350 rmi_pci_bus_space_write_multi_stream_4,
351 NULL,
352
353 /* write region stream */
354 NULL,
355 rmi_pci_bus_space_write_region_2,
356 rmi_pci_bus_space_write_region_4,
357 NULL,
358 };
359
360 /* generic bus_space tag */
361 bus_space_tag_t rmi_pci_bus_space = &local_rmi_pci_bus_space;
362
363 /*
364 * Map a region of device bus space into CPU virtual address space.
365 */
366 static int
367 rmi_pci_bus_space_map(void *t __unused, bus_addr_t addr,
368 bus_size_t size __unused, int flags __unused,
369 bus_space_handle_t * bshp)
370 {
371 *bshp = addr;
372 return (0);
373 }
374
375 /*
376 * Unmap a region of device bus space.
377 */
378 static void
379 rmi_pci_bus_space_unmap(void *t __unused, bus_space_handle_t bsh __unused,
380 bus_size_t size __unused)
381 {
382 }
383
384 /*
385 * Get a new handle for a subregion of an already-mapped area of bus space.
386 */
387
388 static int
389 rmi_pci_bus_space_subregion(void *t __unused, bus_space_handle_t bsh,
390 bus_size_t offset, bus_size_t size __unused,
391 bus_space_handle_t * nbshp)
392 {
393 *nbshp = bsh + offset;
394 return (0);
395 }
396
397 /*
398 * Read a 1, 2, 4, or 8 byte quantity from bus space
399 * described by tag/handle/offset.
400 */
401
402 static u_int8_t
403 rmi_pci_bus_space_read_1(void *tag, bus_space_handle_t handle,
404 bus_size_t offset)
405 {
406 return (u_int8_t) (*(volatile u_int8_t *)(handle + offset));
407 }
408
409 static u_int16_t
410 rmi_pci_bus_space_read_2(void *tag, bus_space_handle_t handle,
411 bus_size_t offset)
412 {
413 u_int16_t value;
414
415 value = *(volatile u_int16_t *)(handle + offset);
416 return bswap16(value);
417 }
418
419 static u_int32_t
420 rmi_pci_bus_space_read_4(void *tag, bus_space_handle_t handle,
421 bus_size_t offset)
422 {
423 uint32_t value;
424
425 value = *(volatile u_int32_t *)(handle + offset);
426 return bswap32(value);
427 }
428
429 /*
430 * Read `count' 1, 2, 4, or 8 byte quantities from bus space
431 * described by tag/handle/offset and copy into buffer provided.
432 */
433 static void
434 rmi_pci_bus_space_read_multi_1(void *tag, bus_space_handle_t handle,
435 bus_size_t offset, u_int8_t * addr, size_t count)
436 {
437 while (count--) {
438 *addr = *(volatile u_int8_t *)(handle + offset);
439 addr++;
440 }
441 }
442
443 static void
444 rmi_pci_bus_space_read_multi_2(void *tag, bus_space_handle_t handle,
445 bus_size_t offset, u_int16_t * addr, size_t count)
446 {
447
448 while (count--) {
449 *addr = *(volatile u_int16_t *)(handle + offset);
450 *addr = bswap16(*addr);
451 addr++;
452 }
453 }
454
455 static void
456 rmi_pci_bus_space_read_multi_4(void *tag, bus_space_handle_t handle,
457 bus_size_t offset, u_int32_t * addr, size_t count)
458 {
459
460 while (count--) {
461 *addr = *(volatile u_int32_t *)(handle + offset);
462 *addr = bswap32(*addr);
463 addr++;
464 }
465 }
466
467 /*
468 * Write the 1, 2, 4, or 8 byte value `value' to bus space
469 * described by tag/handle/offset.
470 */
471
472 static void
473 rmi_pci_bus_space_write_1(void *tag, bus_space_handle_t handle,
474 bus_size_t offset, u_int8_t value)
475 {
476 mips_sync();
477 *(volatile u_int8_t *)(handle + offset) = value;
478 }
479
480 static void
481 rmi_pci_bus_space_write_2(void *tag, bus_space_handle_t handle,
482 bus_size_t offset, u_int16_t value)
483 {
484 mips_sync();
485 *(volatile u_int16_t *)(handle + offset) = bswap16(value);
486 }
487
488
489 static void
490 rmi_pci_bus_space_write_4(void *tag, bus_space_handle_t handle,
491 bus_size_t offset, u_int32_t value)
492 {
493 mips_sync();
494 *(volatile u_int32_t *)(handle + offset) = bswap32(value);
495 }
496
497 /*
498 * Write `count' 1, 2, 4, or 8 byte quantities from the buffer
499 * provided to bus space described by tag/handle/offset.
500 */
501
502
503 static void
504 rmi_pci_bus_space_write_multi_1(void *tag, bus_space_handle_t handle,
505 bus_size_t offset, const u_int8_t * addr, size_t count)
506 {
507 mips_sync();
508 while (count--) {
509 (*(volatile u_int8_t *)(handle + offset)) = *addr;
510 addr++;
511 }
512 }
513
514 static void
515 rmi_pci_bus_space_write_multi_2(void *tag, bus_space_handle_t handle,
516 bus_size_t offset, const u_int16_t * addr, size_t count)
517 {
518 mips_sync();
519 while (count--) {
520 (*(volatile u_int16_t *)(handle + offset)) = bswap16(*addr);
521 addr++;
522 }
523 }
524
525 static void
526 rmi_pci_bus_space_write_multi_4(void *tag, bus_space_handle_t handle,
527 bus_size_t offset, const u_int32_t * addr, size_t count)
528 {
529 mips_sync();
530 while (count--) {
531 (*(volatile u_int32_t *)(handle + offset)) = bswap32(*addr);
532 addr++;
533 }
534 }
535
536 /*
537 * Write `count' 1, 2, 4, or 8 byte value `val' to bus space described
538 * by tag/handle starting at `offset'.
539 */
540
541 static void
542 rmi_pci_bus_space_set_region_2(void *t, bus_space_handle_t bsh,
543 bus_size_t offset, u_int16_t value, size_t count)
544 {
545 bus_addr_t addr = bsh + offset;
546
547 for (; count != 0; count--, addr += 2)
548 (*(volatile u_int16_t *)(addr)) = value;
549 }
550
551 static void
552 rmi_pci_bus_space_set_region_4(void *t, bus_space_handle_t bsh,
553 bus_size_t offset, u_int32_t value, size_t count)
554 {
555 bus_addr_t addr = bsh + offset;
556
557 for (; count != 0; count--, addr += 4)
558 (*(volatile u_int32_t *)(addr)) = value;
559 }
560
561
562 /*
563 * Copy `count' 1, 2, 4, or 8 byte values from bus space starting
564 * at tag/bsh1/off1 to bus space starting at tag/bsh2/off2.
565 */
566 static void
567 rmi_pci_bus_space_copy_region_2(void *t, bus_space_handle_t bsh1,
568 bus_size_t off1, bus_space_handle_t bsh2,
569 bus_size_t off2, size_t count)
570 {
571 TODO();
572 }
573
574 /*
575 * Read `count' 1, 2, 4, or 8 byte quantities from bus space
576 * described by tag/handle/offset and copy into buffer provided.
577 */
578
579 u_int8_t
580 rmi_pci_bus_space_read_stream_1(void *t, bus_space_handle_t handle,
581 bus_size_t offset)
582 {
583
584 return *((volatile u_int8_t *)(handle + offset));
585 }
586
587
588 static u_int16_t
589 rmi_pci_bus_space_read_stream_2(void *t, bus_space_handle_t handle,
590 bus_size_t offset)
591 {
592 return *(volatile u_int16_t *)(handle + offset);
593 }
594
595
596 static u_int32_t
597 rmi_pci_bus_space_read_stream_4(void *t, bus_space_handle_t handle,
598 bus_size_t offset)
599 {
600 return (*(volatile u_int32_t *)(handle + offset));
601 }
602
603
604 static void
605 rmi_pci_bus_space_read_multi_stream_1(void *tag, bus_space_handle_t handle,
606 bus_size_t offset, u_int8_t * addr, size_t count)
607 {
608 while (count--) {
609 *addr = (*(volatile u_int8_t *)(handle + offset));
610 addr++;
611 }
612 }
613
614 static void
615 rmi_pci_bus_space_read_multi_stream_2(void *tag, bus_space_handle_t handle,
616 bus_size_t offset, u_int16_t * addr, size_t count)
617 {
618 while (count--) {
619 *addr = (*(volatile u_int16_t *)(handle + offset));
620 addr++;
621 }
622 }
623
624 static void
625 rmi_pci_bus_space_read_multi_stream_4(void *tag, bus_space_handle_t handle,
626 bus_size_t offset, u_int32_t * addr, size_t count)
627 {
628 while (count--) {
629 *addr = (*(volatile u_int32_t *)(handle + offset));
630 addr++;
631 }
632 }
633
634
635
636 /*
637 * Read `count' 1, 2, 4, or 8 byte quantities from bus space
638 * described by tag/handle and starting at `offset' and copy into
639 * buffer provided.
640 */
641 void
642 rmi_pci_bus_space_read_region_1(void *t, bus_space_handle_t bsh,
643 bus_size_t offset, u_int8_t * addr, size_t count)
644 {
645 bus_addr_t baddr = bsh + offset;
646
647 while (count--) {
648 *addr++ = (*(volatile u_int8_t *)(baddr));
649 baddr += 1;
650 }
651 }
652
653 void
654 rmi_pci_bus_space_read_region_2(void *t, bus_space_handle_t bsh,
655 bus_size_t offset, u_int16_t * addr, size_t count)
656 {
657 bus_addr_t baddr = bsh + offset;
658
659 while (count--) {
660 *addr++ = (*(volatile u_int16_t *)(baddr));
661 baddr += 2;
662 }
663 }
664
665 void
666 rmi_pci_bus_space_read_region_4(void *t, bus_space_handle_t bsh,
667 bus_size_t offset, u_int32_t * addr, size_t count)
668 {
669 bus_addr_t baddr = bsh + offset;
670
671 while (count--) {
672 *addr++ = (*(volatile u_int32_t *)(baddr));
673 baddr += 4;
674 }
675 }
676
677
678 void
679 rmi_pci_bus_space_write_stream_1(void *t, bus_space_handle_t handle,
680 bus_size_t offset, u_int8_t value)
681 {
682 mips_sync();
683 *(volatile u_int8_t *)(handle + offset) = value;
684 }
685
686 static void
687 rmi_pci_bus_space_write_stream_2(void *t, bus_space_handle_t handle,
688 bus_size_t offset, u_int16_t value)
689 {
690 mips_sync();
691 *(volatile u_int16_t *)(handle + offset) = value;
692 }
693
694
695 static void
696 rmi_pci_bus_space_write_stream_4(void *t, bus_space_handle_t handle,
697 bus_size_t offset, u_int32_t value)
698 {
699 mips_sync();
700 *(volatile u_int32_t *)(handle + offset) = value;
701 }
702
703
704 static void
705 rmi_pci_bus_space_write_multi_stream_1(void *tag, bus_space_handle_t handle,
706 bus_size_t offset, const u_int8_t * addr, size_t count)
707 {
708 mips_sync();
709 while (count--) {
710 (*(volatile u_int8_t *)(handle + offset)) = *addr;
711 addr++;
712 }
713 }
714
715 static void
716 rmi_pci_bus_space_write_multi_stream_2(void *tag, bus_space_handle_t handle,
717 bus_size_t offset, const u_int16_t * addr, size_t count)
718 {
719 mips_sync();
720 while (count--) {
721 (*(volatile u_int16_t *)(handle + offset)) = *addr;
722 addr++;
723 }
724 }
725
726 static void
727 rmi_pci_bus_space_write_multi_stream_4(void *tag, bus_space_handle_t handle,
728 bus_size_t offset, const u_int32_t * addr, size_t count)
729 {
730 mips_sync();
731 while (count--) {
732 (*(volatile u_int32_t *)(handle + offset)) = *addr;
733 addr++;
734 }
735 }
736
737 void
738 rmi_pci_bus_space_write_region_2(void *t,
739 bus_space_handle_t bsh,
740 bus_size_t offset,
741 const u_int16_t * addr,
742 size_t count)
743 {
744 bus_addr_t baddr = (bus_addr_t) bsh + offset;
745
746 while (count--) {
747 (*(volatile u_int16_t *)(baddr)) = *addr;
748 addr++;
749 baddr += 2;
750 }
751 }
752
753 void
754 rmi_pci_bus_space_write_region_4(void *t, bus_space_handle_t bsh,
755 bus_size_t offset, const u_int32_t * addr, size_t count)
756 {
757 bus_addr_t baddr = bsh + offset;
758
759 while (count--) {
760 (*(volatile u_int32_t *)(baddr)) = *addr;
761 addr++;
762 baddr += 4;
763 }
764 }
765
766 static void
767 rmi_pci_bus_space_barrier(void *tag __unused, bus_space_handle_t bsh __unused,
768 bus_size_t offset __unused, bus_size_t len __unused, int flags)
769 {
770
771 }
Cache object: fe2e9362095bfeb75509f6d8b611d7fc
|