root / lab4 / .minix-src / include / dev / pci / pciio.h @ 14
History | View | Annotate | Download (3.97 KB)
1 |
/* $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_ */ |