#ifndef _SYS_PCI_PROPS_H
#define _SYS_PCI_PROPS_H
#include <sys/stdint.h>
#include <sys/dditypes.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
PCI_PROP_F_MULT_FUNC = 1 << 0,
PCI_PROP_F_PCIE = 1 << 1,
PCI_PROP_F_SLOT_VALID = 1 << 2
} pci_prop_flags_t;
typedef struct pci_prop_data {
pci_prop_flags_t ppd_flags;
uint8_t ppd_bus;
uint8_t ppd_dev;
uint8_t ppd_func;
uint8_t ppd_rev;
uint8_t ppd_header;
uint8_t ppd_class;
uint8_t ppd_subclass;
uint8_t ppd_pi;
uint16_t ppd_vendid;
uint16_t ppd_devid;
uint16_t ppd_subvid;
uint16_t ppd_subsys;
uint16_t ppd_pcie_type;
uint16_t ppd_slotno;
uint8_t ppd_pcie_cap_off;
uint8_t ppd_ipin;
uint8_t ppd_mingrt;
uint8_t ppd_maxlat;
uint16_t ppd_status;
} pci_prop_data_t;
typedef enum {
PCI_PROP_OK = 0,
PCI_PROP_E_BAD_READ,
PCI_PROP_E_UNKNOWN_HEADER,
PCI_PROP_E_BAD_PCIE_CAP,
PCI_PROP_E_NDI,
PCI_PROP_E_DDI
} pci_prop_failure_t;
extern pci_prop_failure_t pci_prop_data_fill(ddi_acc_handle_t, uint8_t, uint8_t,
uint8_t, pci_prop_data_t *);
extern pci_prop_failure_t pci_prop_name_node(dev_info_t *,
const pci_prop_data_t *);
extern pci_prop_failure_t pci_prop_set_common_props(dev_info_t *,
const pci_prop_data_t *);
extern pci_prop_failure_t pci_prop_set_compatible(dev_info_t *,
const pci_prop_data_t *);
extern boolean_t pci_prop_class_is_vga(const pci_prop_data_t *);
extern boolean_t pci_prop_class_is_isa(const pci_prop_data_t *);
extern boolean_t pci_prop_class_is_ioapic(const pci_prop_data_t *);
extern boolean_t pci_prop_class_is_pcibridge(const pci_prop_data_t *);
#ifdef __cplusplus
}
#endif
#endif