xref: /illumos-gate/usr/src/lib/libpcidb/common/pcidb.h (revision 8a37ae75)
1abc79d9dSRobert Mustacchi /*
2abc79d9dSRobert Mustacchi  * CDDL HEADER START
3abc79d9dSRobert Mustacchi  *
4abc79d9dSRobert Mustacchi  * The contents of this file are subject to the terms of the
5abc79d9dSRobert Mustacchi  * Common Development and Distribution License (the "License").
6abc79d9dSRobert Mustacchi  * You may not use this file except in compliance with the License.
7abc79d9dSRobert Mustacchi  *
8abc79d9dSRobert Mustacchi  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9abc79d9dSRobert Mustacchi  * or http://www.opensolaris.org/os/licensing.
10abc79d9dSRobert Mustacchi  * See the License for the specific language governing permissions
11abc79d9dSRobert Mustacchi  * and limitations under the License.
12abc79d9dSRobert Mustacchi  *
13abc79d9dSRobert Mustacchi  * When distributing Covered Code, include this CDDL HEADER in each
14abc79d9dSRobert Mustacchi  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15abc79d9dSRobert Mustacchi  * If applicable, add the following below this CDDL HEADER, with the
16abc79d9dSRobert Mustacchi  * fields enclosed by brackets "[]" replaced with your own identifying
17abc79d9dSRobert Mustacchi  * information: Portions Copyright [yyyy] [name of copyright owner]
18abc79d9dSRobert Mustacchi  *
19abc79d9dSRobert Mustacchi  * CDDL HEADER END
20abc79d9dSRobert Mustacchi  */
21abc79d9dSRobert Mustacchi /*
22abc79d9dSRobert Mustacchi  * Copyright (c) 2012, Joyent, Inc. All rights reserved.
23*8a37ae75SRobert Mustacchi  * Copyright 2021 Oxide Computer Company
24abc79d9dSRobert Mustacchi  */
25abc79d9dSRobert Mustacchi 
26abc79d9dSRobert Mustacchi /*
27abc79d9dSRobert Mustacchi  * This header file is private to illumos and should not be shipped.
28abc79d9dSRobert Mustacchi  */
29abc79d9dSRobert Mustacchi 
30abc79d9dSRobert Mustacchi #ifndef	_PCIDB_H
31abc79d9dSRobert Mustacchi #define	_PCIDB_H
32abc79d9dSRobert Mustacchi 
33abc79d9dSRobert Mustacchi #include <stdint.h>
34abc79d9dSRobert Mustacchi 
35abc79d9dSRobert Mustacchi #ifdef __cplusplus
36abc79d9dSRobert Mustacchi extern "C" {
37abc79d9dSRobert Mustacchi #endif
38abc79d9dSRobert Mustacchi 
39abc79d9dSRobert Mustacchi #define	PCIDB_VERSION	1
40abc79d9dSRobert Mustacchi 
41abc79d9dSRobert Mustacchi typedef struct pcidb_hdl pcidb_hdl_t;
42abc79d9dSRobert Mustacchi typedef struct pcidb_vendor pcidb_vendor_t;
43abc79d9dSRobert Mustacchi typedef struct pcidb_device pcidb_device_t;
44abc79d9dSRobert Mustacchi typedef struct pcidb_subvd pcidb_subvd_t;
45*8a37ae75SRobert Mustacchi typedef struct pcidb_class pcidb_class_t;
46*8a37ae75SRobert Mustacchi typedef struct pcidb_subclass pcidb_subclass_t;
47*8a37ae75SRobert Mustacchi typedef struct pcidb_progif pcidb_progif_t;
48abc79d9dSRobert Mustacchi 
49abc79d9dSRobert Mustacchi extern pcidb_hdl_t *pcidb_open(int);
50abc79d9dSRobert Mustacchi extern void pcidb_close(pcidb_hdl_t *);
51abc79d9dSRobert Mustacchi 
52abc79d9dSRobert Mustacchi extern pcidb_vendor_t *pcidb_lookup_vendor(pcidb_hdl_t *, uint16_t);
53abc79d9dSRobert Mustacchi extern pcidb_vendor_t *pcidb_vendor_iter(pcidb_hdl_t *);
54abc79d9dSRobert Mustacchi extern pcidb_vendor_t *pcidb_vendor_iter_next(pcidb_vendor_t *);
55abc79d9dSRobert Mustacchi 
56abc79d9dSRobert Mustacchi extern const char *pcidb_vendor_name(pcidb_vendor_t *);
57abc79d9dSRobert Mustacchi extern uint16_t pcidb_vendor_id(pcidb_vendor_t *);
58abc79d9dSRobert Mustacchi 
59abc79d9dSRobert Mustacchi extern pcidb_device_t *pcidb_lookup_device(pcidb_hdl_t *, uint16_t, uint16_t);
60abc79d9dSRobert Mustacchi extern pcidb_device_t *pcidb_lookup_device_by_vendor(pcidb_vendor_t *,
61abc79d9dSRobert Mustacchi     uint16_t);
62abc79d9dSRobert Mustacchi extern pcidb_device_t *pcidb_device_iter(pcidb_vendor_t *);
63abc79d9dSRobert Mustacchi extern pcidb_device_t *pcidb_device_iter_next(pcidb_device_t *);
64abc79d9dSRobert Mustacchi 
65abc79d9dSRobert Mustacchi extern const char *pcidb_device_name(pcidb_device_t *);
66abc79d9dSRobert Mustacchi extern uint16_t pcidb_device_id(pcidb_device_t *);
67abc79d9dSRobert Mustacchi extern pcidb_vendor_t *pcidb_device_vendor(pcidb_device_t *);
68abc79d9dSRobert Mustacchi 
69abc79d9dSRobert Mustacchi extern pcidb_subvd_t *pcidb_lookup_subvd(pcidb_hdl_t *, uint16_t, uint16_t,
70abc79d9dSRobert Mustacchi     uint16_t, uint16_t);
71abc79d9dSRobert Mustacchi extern pcidb_subvd_t *pcidb_lookup_subvd_by_vendor(pcidb_vendor_t *, uint16_t,
72abc79d9dSRobert Mustacchi     uint16_t, uint16_t);
73abc79d9dSRobert Mustacchi extern pcidb_subvd_t *pcidb_lookup_subvd_by_device(pcidb_device_t *, uint16_t,
74abc79d9dSRobert Mustacchi     uint16_t);
75abc79d9dSRobert Mustacchi extern pcidb_subvd_t *pcidb_subvd_iter(pcidb_device_t *);
76abc79d9dSRobert Mustacchi extern pcidb_subvd_t *pcidb_subvd_iter_next(pcidb_subvd_t *);
77abc79d9dSRobert Mustacchi 
78abc79d9dSRobert Mustacchi extern const char *pcidb_subvd_name(pcidb_subvd_t *);
79abc79d9dSRobert Mustacchi extern uint16_t pcidb_subvd_svid(pcidb_subvd_t *);
80abc79d9dSRobert Mustacchi extern uint16_t pcidb_subvd_sdid(pcidb_subvd_t *);
81abc79d9dSRobert Mustacchi extern pcidb_device_t *pcidb_subvd_device(pcidb_subvd_t *);
82abc79d9dSRobert Mustacchi extern pcidb_vendor_t *pcidb_subvd_vendor(pcidb_subvd_t *);
83abc79d9dSRobert Mustacchi 
84*8a37ae75SRobert Mustacchi extern pcidb_class_t *pcidb_lookup_class(pcidb_hdl_t *, uint8_t);
85*8a37ae75SRobert Mustacchi extern pcidb_class_t *pcidb_class_iter(pcidb_hdl_t *);
86*8a37ae75SRobert Mustacchi extern pcidb_class_t *pcidb_class_iter_next(pcidb_class_t *);
87*8a37ae75SRobert Mustacchi 
88*8a37ae75SRobert Mustacchi extern const char *pcidb_class_name(pcidb_class_t *);
89*8a37ae75SRobert Mustacchi extern uint8_t pcidb_class_code(pcidb_class_t *);
90*8a37ae75SRobert Mustacchi 
91*8a37ae75SRobert Mustacchi extern pcidb_subclass_t *pcidb_lookup_subclass(pcidb_hdl_t *, uint8_t, uint8_t);
92*8a37ae75SRobert Mustacchi extern pcidb_subclass_t *pcidb_lookup_subclass_by_class(pcidb_class_t *,
93*8a37ae75SRobert Mustacchi     uint8_t);
94*8a37ae75SRobert Mustacchi extern pcidb_subclass_t *pcidb_subclass_iter(pcidb_class_t *);
95*8a37ae75SRobert Mustacchi extern pcidb_subclass_t *pcidb_subclass_iter_next(pcidb_subclass_t *);
96*8a37ae75SRobert Mustacchi 
97*8a37ae75SRobert Mustacchi extern const char *pcidb_subclass_name(pcidb_subclass_t *);
98*8a37ae75SRobert Mustacchi extern uint8_t pcidb_subclass_code(pcidb_subclass_t *);
99*8a37ae75SRobert Mustacchi 
100*8a37ae75SRobert Mustacchi extern pcidb_progif_t *pcidb_lookup_progif(pcidb_hdl_t *, uint8_t, uint8_t,
101*8a37ae75SRobert Mustacchi     uint8_t);
102*8a37ae75SRobert Mustacchi extern pcidb_progif_t *pcidb_lookup_progif_by_subclass(pcidb_subclass_t *,
103*8a37ae75SRobert Mustacchi     uint8_t);
104*8a37ae75SRobert Mustacchi extern pcidb_progif_t *pcidb_progif_iter(pcidb_subclass_t *);
105*8a37ae75SRobert Mustacchi extern pcidb_progif_t *pcidb_progif_iter_next(pcidb_progif_t *);
106*8a37ae75SRobert Mustacchi 
107*8a37ae75SRobert Mustacchi extern const char *pcidb_progif_name(pcidb_progif_t *);
108*8a37ae75SRobert Mustacchi extern uint8_t pcidb_progif_code(pcidb_progif_t *);
109*8a37ae75SRobert Mustacchi 
110abc79d9dSRobert Mustacchi #ifdef __cplusplus
111abc79d9dSRobert Mustacchi }
112abc79d9dSRobert Mustacchi #endif
113abc79d9dSRobert Mustacchi 
114abc79d9dSRobert Mustacchi #endif /* _PCIDB_H */
115