Viewing: pci.h
📄 pci.h (Read Only) ⬅ To go back
#ifndef PCI_H
#define PCI_H

#include <stdint.h>

struct pci_device {
    uint8_t  bus;
    uint8_t  slot;
    uint8_t  func;
    uint16_t vendor_id;
    uint16_t device_id;
    uint8_t  class_code;
    uint8_t  subclass;
    uint8_t  prog_if;
    uint8_t  header_type;
    uint32_t bar[6];
    uint8_t  irq_line;
};

#define PCI_MAX_DEVICES 32

uint32_t pci_config_read(uint8_t bus, uint8_t slot, uint8_t func, uint8_t offset);
void     pci_config_write(uint8_t bus, uint8_t slot, uint8_t func, uint8_t offset, uint32_t value);

void pci_init(void);
int  pci_get_device_count(void);
const struct pci_device* pci_get_device(int index);
const struct pci_device* pci_find_device(uint16_t vendor, uint16_t device);
const struct pci_device* pci_find_class(uint8_t class_code, uint8_t subclass);

void pci_driver_register(void);

#endif