#ifndef __PCI_H #define __PCI_H #include "system.h" typedef struct DeviceDescriptor { uint32_t PortBase; uint32_t Interrupt; uint16_t Bus; uint16_t Device; uint16_t Function; uint16_t VendorId; uint16_t DeviceId; uint8_t ClassId; uint8_t SubClassId; uint8_t InterfaceId; uint8_t Revision; }; uint32_t Read(uint16_t busNumber, uint16_t deviceNumber, uint16_t functionNumber, uint32_t registerOffset); void Write(uint16_t busNumber, uint16_t deviceNumber, uint16_t functionNumber, uint32_t registerOffset, uint32_t value); bool DeviceHasFunctions(uint16_t bus, uint16_t device); void EnumPCISubsystem(void); struct DeviceDescriptor GetDeviceDescriptor(uint16_t busNumber, uint16_t deviceNumber, uint16_t functionNumber); #endif