// PCI bus-driver declarations shared with PCI function drivers. #pragma once #include #include #include #define PCI_MAX_BARS 6u #define PCI_VENDOR_INVALID 0xFFFFu #define PCI_REG_VENDOR_DEVICE 0x00u #define PCI_REG_COMMAND_STATUS 0x04u #define PCI_REG_REVISION_CLASS 0x08u #define PCI_REG_HEADER_TYPE 0x0Cu #define PCI_REG_BAR0 0x10u #define PCI_REG_SUBSYSTEM 0x2Cu #define PCI_REG_CAP_PTR 0x34u #define PCI_REG_INTERRUPT_LINE_PIN 0x3Cu #define PCI_COMMAND_IO_SPACE 0x0001u #define PCI_COMMAND_MEMORY_SPACE 0x0002u #define PCI_COMMAND_BUS_MASTER 0x0004u #define PCI_COMMAND_INTX_DISABLE 0x0400u #define PCI_HEADER_TYPE_MASK 0x7Fu #define PCI_HEADER_TYPE_MULTI 0x80u #define PCI_STATUS_CAP_LIST 0x0010u #define PCI_CAP_ID_MSI 0x05u #define PCI_CAP_ID_MSIX 0x11u #define PCI_MSI_CTRL_ENABLE 0x0001u #define PCI_MSI_CTRL_MME_MASK 0x0070u #define PCI_MSI_CTRL_64BIT 0x0080u #define PCI_MSI_CTRL_PVM 0x0100u #define PCI_MSI_ADDRESS_BASE 0xFEE00000u #define PCI_IRQ_VECTOR_BASE 0x20u typedef struct PCI_PDO_EXTENSION { PCI_DEVICE_INFO Info; PCI_BAR Bars[PCI_MAX_BARS]; uint8_t CapabilityOffset; } PCI_PDO_EXTENSION;