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