diff options
Diffstat (limited to 'com32/include/sys/pci.h')
| -rw-r--r-- | com32/include/sys/pci.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/com32/include/sys/pci.h b/com32/include/sys/pci.h index f1c1eb55..b3099584 100644 --- a/com32/include/sys/pci.h +++ b/com32/include/sys/pci.h @@ -4,8 +4,39 @@ #include <inttypes.h> #include <sys/io.h> +#define MAX_VENDOR_NAME_SIZE 255 +#define MAX_PRODUCT_NAME_SIZE 255 +#define MAX_PCI_DEVICES 32 +#define MAX_PCI_BUSES 255 + typedef uint32_t pciaddr_t; +typedef struct { + char vendor_name[MAX_VENDOR_NAME_SIZE]; + uint16_t vendor; + char product_name[MAX_PRODUCT_NAME_SIZE]; + uint16_t product; + uint16_t sub_vendor; + uint16_t sub_product; + uint8_t revision; +} s_pci_device; + +typedef struct { + uint16_t id; + s_pci_device *pci_device[MAX_PCI_DEVICES]; + uint8_t pci_device_count; +} s_pci_bus; + +typedef struct { + s_pci_device pci_device[MAX_PCI_DEVICES]; + uint8_t count; +} s_pci_device_list; + +typedef struct { + s_pci_bus pci_bus[MAX_PCI_BUSES]; + uint8_t count; +} s_pci_bus_list; + static inline pciaddr_t pci_mkaddr(uint32_t bus, uint32_t dev, uint32_t func, uint32_t reg) { @@ -30,4 +61,5 @@ void pci_writeb(uint8_t, pciaddr_t); void pci_writew(uint16_t, pciaddr_t); void pci_writel(uint32_t, pciaddr_t); +extern int pci_scan(s_pci_bus_list *pci_bus_list, s_pci_device_list *pci_device_list); #endif /* _SYS_PCI_H */ |
