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