Files
Astral/kernel-src/include/kernel/pci.h
T

42 lines
1.1 KiB
C

#ifndef _PCI_H
#define _PCI_H
// 2 byte fields
#define PCI_CONFIG_VENDOR 0x0
#define PCI_CONFIG_DEVICEID 0x2
// 1 byte fields
#define PCI_CONFIG_REVISION 0x8
#define PCI_CONFIG_PROGIF 0x9
#define PCI_CONFIG_SUBCLASS 0xa
#define PCI_CONFIG_CLASS 0xb
#define PCI_CONFIG_HEADERTYPE 0xe
#define PCI_HEADERTYPE_MULTIFUNCTION_MASK 0x80
#define PCI_HEADERTYPE_MASK 0x7f
#define PCI_HEADERTYPE_STANDARD 0
typedef struct pcienum_t {
struct pcienum_t *next;
int bus;
int device;
int function;
int type;
int class;
int subclass;
int progif;
int vendor;
int deviceid;
int revision;
} pcienum_t;
uint8_t pci_read8(int bus, int device, int function, uint32_t offset);
uint16_t pci_read16(int bus, int device, int function, uint32_t offset);
uint32_t pci_read32(int bus, int device, int function, uint32_t offset);
void pci_write8(int bus, int device, int function, uint32_t offset, uint8_t v);
void pci_write16(int bus, int device, int function, uint32_t offset, uint16_t v);
void pci_write32(int bus, int device, int function, uint32_t offset, uint32_t value);
void pci_init();
#endif