root / lab4 / .minix-src / include / dev / pci / pciio.h @ 14
History | View | Annotate | Download (3.97 KB)
1 | 13 | up20180614 | /* $NetBSD: pciio.h,v 1.4 2014/07/25 01:38:26 mrg Exp $ */
|
---|---|---|---|
2 | |||
3 | /*
|
||
4 | * Copyright 2001 Wasabi Systems, Inc.
|
||
5 | * All rights reserved.
|
||
6 | *
|
||
7 | * Written by Jason R. Thorpe for Wasabi Systems, Inc.
|
||
8 | *
|
||
9 | * Redistribution and use in source and binary forms, with or without
|
||
10 | * modification, are permitted provided that the following conditions
|
||
11 | * are met:
|
||
12 | * 1. Redistributions of source code must retain the above copyright
|
||
13 | * notice, this list of conditions and the following disclaimer.
|
||
14 | * 2. Redistributions in binary form must reproduce the above copyright
|
||
15 | * notice, this list of conditions and the following disclaimer in the
|
||
16 | * documentation and/or other materials provided with the distribution.
|
||
17 | * 3. All advertising materials mentioning features or use of this software
|
||
18 | * must display the following acknowledgement:
|
||
19 | * This product includes software developed for the NetBSD Project by
|
||
20 | * Wasabi Systems, Inc.
|
||
21 | * 4. The name of Wasabi Systems, Inc. may not be used to endorse
|
||
22 | * or promote products derived from this software without specific prior
|
||
23 | * written permission.
|
||
24 | *
|
||
25 | * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
|
||
26 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||
27 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||
28 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WASABI SYSTEMS, INC
|
||
29 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||
30 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||
31 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||
32 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||
33 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||
34 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||
35 | * POSSIBILITY OF SUCH DAMAGE.
|
||
36 | */
|
||
37 | |||
38 | #ifndef _DEV_PCI_PCIIO_H_
|
||
39 | #define _DEV_PCI_PCIIO_H_
|
||
40 | |||
41 | /*
|
||
42 | * User -> kernel interface for PCI bus access.
|
||
43 | */
|
||
44 | |||
45 | #include <sys/ioccom.h> |
||
46 | |||
47 | /*
|
||
48 | * pciio_cfgreg:
|
||
49 | *
|
||
50 | * Representation of a PCI config space register.
|
||
51 | */
|
||
52 | struct pciio_cfgreg {
|
||
53 | u_int reg; /* offset into PCI configuration space */
|
||
54 | uint32_t val; /* value of the register */
|
||
55 | }; |
||
56 | |||
57 | /*
|
||
58 | * Read and write PCI configuration space registers on a
|
||
59 | * specific device.
|
||
60 | */
|
||
61 | #define PCI_IOC_CFGREAD _IOWR('P', 0, struct pciio_cfgreg) |
||
62 | #define PCI_IOC_CFGWRITE _IOW('P', 1, struct pciio_cfgreg) |
||
63 | |||
64 | /*
|
||
65 | * pciio_bdf_cfgreg:
|
||
66 | *
|
||
67 | * Like pciio_cfgreg, except for any bus/dev/func within
|
||
68 | * a given PCI domain.
|
||
69 | */
|
||
70 | struct pciio_bdf_cfgreg {
|
||
71 | u_int bus; |
||
72 | u_int device; |
||
73 | u_int function; |
||
74 | struct pciio_cfgreg cfgreg;
|
||
75 | }; |
||
76 | |||
77 | /*
|
||
78 | * Read and write PCI configuration space registers on any
|
||
79 | * device within a given PCI domain.
|
||
80 | */
|
||
81 | #define PCI_IOC_BDF_CFGREAD _IOWR('P', 2, struct pciio_bdf_cfgreg) |
||
82 | #define PCI_IOC_BDF_CFGWRITE _IOW('P', 3, struct pciio_bdf_cfgreg) |
||
83 | |||
84 | /*
|
||
85 | * pciio_businfo:
|
||
86 | *
|
||
87 | * Information for a PCI bus (autoconfiguration node) instance.
|
||
88 | */
|
||
89 | struct pciio_businfo {
|
||
90 | u_int busno; /* bus number */
|
||
91 | u_int maxdevs; /* max devices on bus */
|
||
92 | }; |
||
93 | |||
94 | #define PCI_IOC_BUSINFO _IOR('P', 4, struct pciio_businfo) |
||
95 | |||
96 | /*
|
||
97 | * pciio_drvname:
|
||
98 | *
|
||
99 | * Driver info for a PCI device (autoconfiguration node) instance.
|
||
100 | * Must be run on the correct bus.
|
||
101 | */
|
||
102 | |||
103 | #define PCI_IO_DRVNAME_LEN 16 |
||
104 | struct pciio_drvname {
|
||
105 | u_int device; /* in: device number */
|
||
106 | u_int function; /* in: function number */
|
||
107 | char name[PCI_IO_DRVNAME_LEN];
|
||
108 | }; |
||
109 | |||
110 | #define PCI_IOC_DRVNAME _IOWR('P', 5, struct pciio_drvname) |
||
111 | |||
112 | |||
113 | #if defined(__minix)
|
||
114 | struct pciio_map {
|
||
115 | int flags; /* reserved, must be 0 */ |
||
116 | u_int phys_offset; |
||
117 | size_t size; |
||
118 | int readonly;
|
||
119 | char reserved[36]; /* reserved, must be 0 */ |
||
120 | void *vaddr;
|
||
121 | void *vaddr_ret;
|
||
122 | }; |
||
123 | |||
124 | #define PCI_IOC_MAP _IOWR('P', 100, struct pciio_map) |
||
125 | #define PCI_IOC_UNMAP _IOW('P', 101, struct pciio_map) |
||
126 | |||
127 | struct pciio_acl {
|
||
128 | u_int domain; |
||
129 | u_int bus; |
||
130 | u_int device; |
||
131 | u_int function; |
||
132 | }; |
||
133 | |||
134 | #define PCI_IOC_RESERVE _IOW('P', 102, struct pciio_acl) |
||
135 | #define PCI_IOC_RELEASE _IOW('P', 103, struct pciio_acl) |
||
136 | #endif /* defined(__minix) */ |
||
137 | #endif /* _DEV_PCI_PCIIO_H_ */ |