#ifndef _PCIEX_PCI_NVIDIA_H
#define _PCIEX_PCI_NVIDIA_H
#ifdef __cplusplus
extern "C" {
#endif
boolean_t look_for_any_pciex_device(uchar_t);
boolean_t check_if_device_is_pciex(dev_info_t *, uchar_t, uchar_t,
uchar_t, boolean_t *, ushort_t *, ushort_t *);
boolean_t create_pcie_root_bus(uchar_t, dev_info_t *);
void add_nvidia_isa_bridge_props(dev_info_t *, uchar_t, uchar_t,
uchar_t);
#define NVIDIA_VENDOR_ID 0x10de
#define NVIDIA_INTR_BCR_OFF 0x3C
#define NVIDIA_INTR_BCR_SERR_FORWARD_BIT 0x02
#define NVIDIA_CK804_DEVICE_ID 0x5d
#define NVIDIA_CK804_DEFAULT_ISA_BRIDGE_DEVID 0x50
#define NVIDIA_CK804_PRO_ISA_BRIDGE_DEVID 0x51
#define NVIDIA_CK804_SLAVE_ISA_BRIDGE_DEVID 0xd3
#define NVIDIA_CK804_AER_VALID_REVID 0xa3
#define NVIDIA_CK804_LPC2PCI_DEVICE_ID(did) \
(((did) == NVIDIA_CK804_DEFAULT_ISA_BRIDGE_DEVID) || \
((did) == NVIDIA_CK804_PRO_ISA_BRIDGE_DEVID) || \
((did) == NVIDIA_CK804_SLAVE_ISA_BRIDGE_DEVID))
#define NVIDIA_CK804_ISA_SYSCTRL_BAR_OFF 0x64
#define NVIDIA_CK804_ISA_ANALOG_BAR_OFF 0x68
#define NVIDIA_CK804_VEND_CYA1_OFF 0xf40
#define NVIDIA_CK804_VEND_CYA1_ERPT_VAL 0x2000
#define NVIDIA_CK804_VEND_CYA1_ERPT_MASK 0xdfff
#define NVIDIA_C51_DEVICE_ID_XVR16 0x2fb
#define NVIDIA_C51_DEVICE_ID_XVR1_0 0x2fc
#define NVIDIA_C51_DEVICE_ID_XVR1_1 0x2fd
#define NVIDIA_C51_DEVICE_ID(did) \
(((did) == NVIDIA_C51_DEVICE_ID_XVR16) || \
((did) == NVIDIA_C51_DEVICE_ID_XVR1_0) || \
((did) == NVIDIA_C51_DEVICE_ID_XVR1_1))
#define NVIDIA_MCP55_DEVICE_ID_XVR4 0x374
#define NVIDIA_MCP55_DEVICE_ID_XVR8 0x375
#define NVIDIA_MCP55_DEVICE_ID_XVR8_VC1 0x376
#define NVIDIA_MCP55_DEVICE_ID_XVR16 0x377
#define NVIDIA_MCP55_DEVICE_ID_XVR4_VC1 0x378
#define NVIDIA_MCP55_DEVICE_ID(did) \
(((did) == NVIDIA_MCP55_DEVICE_ID_XVR4) || \
((did) == NVIDIA_MCP55_DEVICE_ID_XVR8) || \
((did) == NVIDIA_MCP55_DEVICE_ID_XVR16) || \
((did) == NVIDIA_MCP55_DEVICE_ID_XVR4_VC1) || \
((did) == NVIDIA_MCP55_DEVICE_ID_XVR8_VC1))
#define NVIDIA_MCP55_PCI2LPC_DEVICE_ID_OP0 0x360
#define NVIDIA_MCP55_PCI2LPC_DEVICE_ID_OP1 0x361
#define NVIDIA_MCP55_PCI2LPC_DEVICE_ID_OP2 0x362
#define NVIDIA_MCP55_PCI2LPC_DEVICE_ID_OP3 0x363
#define NVIDIA_MCP55_PCI2LPC_DEVICE_ID_OP4 0x364
#define NVIDIA_MCP55_PCI2LPC_DEVICE_ID_OP5 0x365
#define NVIDIA_MCP55_PCI2LPC_DEVICE_ID_OP6 0x366
#define NVIDIA_MCP55_PCI2LPC_DEVICE_ID_OP7 0x367
#define NVIDIA_MCP55_LPC2PCI_DEVICE_ID(did) \
(((did) == NVIDIA_MCP55_PCI2LPC_DEVICE_ID_OP0) || \
((did) == NVIDIA_MCP55_PCI2LPC_DEVICE_ID_OP1) || \
((did) == NVIDIA_MCP55_PCI2LPC_DEVICE_ID_OP2) || \
((did) == NVIDIA_MCP55_PCI2LPC_DEVICE_ID_OP3) || \
((did) == NVIDIA_MCP55_PCI2LPC_DEVICE_ID_OP4) || \
((did) == NVIDIA_MCP55_PCI2LPC_DEVICE_ID_OP5) || \
((did) == NVIDIA_MCP55_PCI2LPC_DEVICE_ID_OP6) || \
((did) == NVIDIA_MCP55_PCI2LPC_DEVICE_ID_OP7))
#define NVIDIA_MCP61_DEVICE_ID_XVR4 0x3e8
#define NVIDIA_MCP61_DEVICE_ID_XVR8 0x3e9
#define NVIDIA_MCP61_DEVICE_ID(did) \
(((did) == NVIDIA_MCP61_DEVICE_ID_XVR4) || \
((did) == NVIDIA_MCP61_DEVICE_ID_XVR8))
#define NVIDIA_MCP65_DEVICE_ID_XVR4 0x458
#define NVIDIA_MCP65_DEVICE_ID_XVR8 0x459
#define NVIDIA_MCP65_DEVICE_ID_XVR16 0x45a
#define NVIDIA_MCP65_DEVICE_ID(did) \
(((did) == NVIDIA_MCP65_DEVICE_ID_XVR4) || \
((did) == NVIDIA_MCP65_DEVICE_ID_XVR8) || \
((did) == NVIDIA_MCP65_DEVICE_ID_XVR16))
#define NVIDIA_IS_LPC_BRIDGE(vid, did) \
(((vid) == NVIDIA_VENDOR_ID) && \
(NVIDIA_CK804_LPC2PCI_DEVICE_ID(did) || \
NVIDIA_MCP55_LPC2PCI_DEVICE_ID(did)))
#define NVIDIA_PCIE_RC_DEV_ID(did) \
(((did) == NVIDIA_CK804_DEVICE_ID) || \
NVIDIA_C51_DEVICE_ID(did) || \
NVIDIA_MCP55_DEVICE_ID(did) || \
NVIDIA_MCP61_DEVICE_ID(did) || \
NVIDIA_MCP65_DEVICE_ID(did))
#ifdef __cplusplus
}
#endif
#endif