kernel/inc/drivers/pci.h

49 lines
1.6 KiB
C

// This file is part of noxos and licensed under the MIT open source license
#ifndef NOXOS_PCI_H
#define NOXOS_PCI_H
#include "utils/stdtypes.h"
#include "utils/string.h"
typedef struct {
uint16_t vendor_id;
uint16_t device_id;
uint16_t command_reg;
uint16_t status_reg;
uint8_t revision_id;
uint8_t progif; // Programming Interface Byte
uint8_t subclass;
uint8_t main_class;
uint8_t cache_line_size;
uint8_t latency_timer;
uint8_t header_type;
uint8_t bist; // Built-in Self-Test
} __attribute__((packed)) pci_device_header_T;
typedef struct {
pci_device_header_T header;
uint32_t bar0;
uint32_t bar1;
uint32_t bar2;
uint32_t bar3;
uint32_t bar4;
uint32_t bar5;
uint32_t cardbus_cis_pointer;
uint16_t subsystem_vendor_id;
uint16_t subsystem_id;
uint32_t expansion_rom_base_address;
uint8_t capabilities;
uint8_t reserved[7];
uint8_t interrupt_line;
uint8_t interrupt_pin;
uint8_t min_grant;
uint8_t max_latency;
} __attribute__((packed)) pci_header_0_T;
void pci_init ();
string_t pci_get_vendor_string (uint16_t vendor_id);
string_t pci_get_device_string (uint16_t device_id);
#endif // NOXOS_PCI_H