94#define PCI_CAP_MSI 0x05
95#define PCI_CAP_MSIX 0x11
void pci_conf1_write(struct pci_host *host, struct pci_dev *dev, uint16_t reg, uint32_t val)
Writes a 32-bit register of a function's configuration space.
uint32_t pci_conf1_read(struct pci_host *host, struct pci_dev *dev, uint16_t reg)
Reads a 32-bit register of a function's configuration space.
void pci_ecam_write(struct pci_host *host, struct pci_dev *dev, uint16_t reg, uint32_t val)
Writes a 32-bit register of a function's configuration space.
uint32_t pci_ecam_read(struct pci_host *host, struct pci_dev *dev, uint16_t reg)
Reads a 32-bit register of a function's configuration space.
void(*) irq_handler_t(void *arg)
int pci_irq(struct pci_dev *dev)
Finds the IRQ that a function's interrupt pin comes to.
uint16_t pci_reg16_read(struct pci_dev *dev, uint8_t off)
Reads a 16-bit configuration register.
uint32_t pci_reg32_read(struct pci_dev *dev, uint8_t off)
Reads a 32-bit configuration register.
void pci_reg32_write(struct pci_dev *dev, uint8_t off, uint32_t val)
Writes a 32-bit configuration register.
int pci_device_scan(uint16_t vendor_id, uint16_t device_id, struct pci_dev *ref)
Finds a device by its vendor and device IDs, on bus 0.
int pci_scan_device(uint8_t class, uint8_t subclass, struct pci_dev *_dev, size_t nr)
Finds the functions of a class and subclass, on bus 0.
int pci_msi_enable(struct pci_dev *dev, irq_handler_t handler, void *arg)
Has a function send its interrupts as messages (MSI) instead of on its interrupt line: one message,...
uint32_t pci_read_bar(struct pci_dev *dev, uint8_t id)
Reads a base address register as it is, flag bits included.
int pci_host_set(struct pci_host *h)
Sets the platform's host bridge, from platform_init().
void pci_enable(struct pci_dev *dev)
Turns a function's memory and port decoding on, and bus mastering, so that it can do DMA.
void pci_reg8_write(struct pci_dev *dev, uint8_t off, uint8_t val)
Writes an 8-bit configuration register: the 32-bit register it's in is read, changed and written back...
void pci_reg16_write(struct pci_dev *dev, uint8_t off, uint16_t val)
Writes a 16-bit configuration register: the 32-bit register it's in is read, changed and written back...
uint8_t pci_cap_find(struct pci_dev *dev, uint8_t id)
Finds one of a function's capabilities.
uint8_t pci_reg8_read(struct pci_dev *dev, uint8_t off)
Reads an 8-bit configuration register.
unsigned long long int uint64_t
unsigned short int uint16_t
A device driver: its operations, any of which may be NULL.
An installed handler, on its interrupt's list.
Where a device's registers are.
A base address register (BAR): where the device's registers are, how big they are,...
A PCI function: its bus, device (slot) and function numbers.
The host bridge, which the platform describes (platform_init() sets it): how its configuration space ...
uint32_t(*) read(struct pci_host *host, struct pci_dev *dev, uint16_t reg)
void(*) write(struct pci_host *host, struct pci_dev *dev, uint16_t reg, uint32_t val)