34 lines
766 B
C
34 lines
766 B
C
#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 |