abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi/*
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi * CDDL HEADER START
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi *
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi * The contents of this file are subject to the terms of the
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi * Common Development and Distribution License (the "License").
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi * You may not use this file except in compliance with the License.
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi *
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi * or http://www.opensolaris.org/os/licensing.
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi * See the License for the specific language governing permissions
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi * and limitations under the License.
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi *
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi * When distributing Covered Code, include this CDDL HEADER in each
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi * If applicable, add the following below this CDDL HEADER, with the
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi * fields enclosed by brackets "[]" replaced with your own identifying
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi * information: Portions Copyright [yyyy] [name of copyright owner]
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi *
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi * CDDL HEADER END
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi */
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi/*
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi * Copyright (c) 2012, Joyent, Inc. All rights reserved.
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi */
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi/*
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi * This header file is private to illumos and should not be shipped.
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi */
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi#ifndef _PCIDB_H
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi#define _PCIDB_H
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi#include <stdint.h>
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi#ifdef __cplusplus
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern "C" {
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi#endif
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi#define PCIDB_VERSION 1
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchitypedef struct pcidb_hdl pcidb_hdl_t;
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchitypedef struct pcidb_vendor pcidb_vendor_t;
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchitypedef struct pcidb_device pcidb_device_t;
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchitypedef struct pcidb_subvd pcidb_subvd_t;
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern pcidb_hdl_t *pcidb_open(int);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern void pcidb_close(pcidb_hdl_t *);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern pcidb_vendor_t *pcidb_lookup_vendor(pcidb_hdl_t *, uint16_t);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern pcidb_vendor_t *pcidb_vendor_iter(pcidb_hdl_t *);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern pcidb_vendor_t *pcidb_vendor_iter_next(pcidb_vendor_t *);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern const char *pcidb_vendor_name(pcidb_vendor_t *);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern uint16_t pcidb_vendor_id(pcidb_vendor_t *);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern pcidb_device_t *pcidb_lookup_device(pcidb_hdl_t *, uint16_t, uint16_t);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern pcidb_device_t *pcidb_lookup_device_by_vendor(pcidb_vendor_t *,
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi uint16_t);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern pcidb_device_t *pcidb_device_iter(pcidb_vendor_t *);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern pcidb_device_t *pcidb_device_iter_next(pcidb_device_t *);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern const char *pcidb_device_name(pcidb_device_t *);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern uint16_t pcidb_device_id(pcidb_device_t *);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern pcidb_vendor_t *pcidb_device_vendor(pcidb_device_t *);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern pcidb_subvd_t *pcidb_lookup_subvd(pcidb_hdl_t *, uint16_t, uint16_t,
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi uint16_t, uint16_t);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern pcidb_subvd_t *pcidb_lookup_subvd_by_vendor(pcidb_vendor_t *, uint16_t,
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi uint16_t, uint16_t);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern pcidb_subvd_t *pcidb_lookup_subvd_by_device(pcidb_device_t *, uint16_t,
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi uint16_t);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern pcidb_subvd_t *pcidb_subvd_iter(pcidb_device_t *);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern pcidb_subvd_t *pcidb_subvd_iter_next(pcidb_subvd_t *);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern const char *pcidb_subvd_name(pcidb_subvd_t *);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern uint16_t pcidb_subvd_svid(pcidb_subvd_t *);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern uint16_t pcidb_subvd_sdid(pcidb_subvd_t *);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern pcidb_device_t *pcidb_subvd_device(pcidb_subvd_t *);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchiextern pcidb_vendor_t *pcidb_subvd_vendor(pcidb_subvd_t *);
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi#ifdef __cplusplus
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi}
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi#endif
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi
abc79d9dd51e98eafb6fc25b4a0b4f66bef40b00Robert Mustacchi#endif /* _PCIDB_H */