// // Created by rick on 06-03-21. // #ifndef NEW_KERNEL_PCI_DEVICES_H #define NEW_KERNEL_PCI_DEVICES_H #include typedef struct pci_device_info_t { uint8_t code; char *name; struct pci_device_info_t *sub; } pci_device_info; // build from https://wiki.osdev.org/PCI#Class_Codes pci_device_info info_unclassified[] = { {0x00, "Non VGA Compatible", NULL}, {0x01, "VGA Compatible", NULL}, {0, NULL, NULL}, }; pci_device_info info_mass_storage_ide[] = { {0x00, "ISA comp only", NULL}, {0x05, "PCI native only", NULL}, {0x0A, "ISA compatibility controller, 2C, PCI native", NULL}, {0x0F, "PCI native controller, 2C, ISA comp", NULL}, {0x80, "ISA comp only, BM", NULL}, {0x85, "PCI native only, BM", NULL}, {0x8A, "ISA Comp only, 2C, BM, PCI native", NULL}, {0x8F, "PCI native, 2C, BM, ISA comp", NULL}, {0, NULL, NULL}, }; pci_device_info info_mass_storage_ata[] = { {0x20, "Single DMA", NULL}, {0x30, "Chained DMA", NULL}, {0, NULL, NULL}, }; pci_device_info info_mass_storage_sata[] = { {0x00, "Vendor specific", NULL}, {0x01, "AHCI 1.0", NULL}, {0x02, "Serial Storage Bus", NULL}, {0, NULL, NULL}, }; pci_device_info info_mass_storage_sas[] = { {0x00, "SAS", NULL}, {0x01, "Serial Storage Bus", NULL}, {0, NULL, NULL}, }; pci_device_info info_mass_storage_nvm[] = { {0x01, "NVMHCI", NULL}, {0x02, "NVM Express", NULL}, {0, NULL, NULL}, }; pci_device_info info_mass_storage[] = { {0x00, "SCSI Bus Controller", NULL}, {0x01, "IDE Controller", info_mass_storage_ide}, {0x02, "Floppy Disk Controller", NULL}, {0x03, "IPI Bus Controller", NULL}, {0x04, "RAID Controller", NULL}, {0x05, "ATA Controller", info_mass_storage_ata}, {0x06, "Serial ATA", info_mass_storage_sata}, {0x07, "Serial Attached SCSI", info_mass_storage_sas}, {0x08, "NVM Controller", info_mass_storage_nvm}, {0x80, "Other", NULL}, {0, NULL, NULL}, }; pci_device_info info_network_controller[] = { {0x00, "Ethernet", NULL}, {0x01, "Token Ring", NULL}, {0x02, "FDDI", NULL}, {0x03, "ATM", NULL}, {0x04, "ISDN", NULL}, {0x05, "WordFip", NULL}, {0x06, "FICMG 2.14 Multi Computing", NULL}, {0x07, "Infiniband", NULL}, {0x08, "Fabric", NULL}, {0x80, "Other", NULL}, {0, NULL, NULL}, }; pci_device_info info_display_vga_comp[] = { {0x00, "VGA", NULL}, {0x01, "8514", NULL}, {0, NULL, 0}, }; pci_device_info info_display_controller[] = { {0x00, "VGA Compatible", info_display_vga_comp}, {0x01, "XGA", NULL}, {0x02, "3D", NULL}, {0x80, "Other", NULL}, {0, NULL, NULL}, }; pci_device_info info_multimedia_controller[] = { {0x00, "Video", NULL}, {0x01, "Audio", NULL}, {0x02, "Computer Telephony", NULL}, {0x03, "Audio", NULL}, {0x80, "Other", NULL}, {0, NULL, NULL}, }; pci_device_info info_memory_controller[] = { {0x00, "RAM", NULL}, {0x01, "Flash", NULL}, {0x80, "Other", NULL}, {0, NULL, NULL}, }; pci_device_info info_bridge_pci4[] = { {0x00, "Normal", NULL}, {0x01, "Subtractive", NULL}, {0, NULL, NULL}, }; pci_device_info info_bridge_raceway[] = { {0x00, "Transparent", NULL}, {0x01, "Endpoint", NULL}, {0, NULL, NULL}, }; pci_device_info info_bridge_pci9[] = { {0x40, "Semi-transparent, primary", NULL}, {0x80, "Semi-transparent, secondary", NULL}, {0, NULL, NULL}, }; pci_device_info info_bridge_device[] = { {0x00, "Host", NULL}, {0x01, "ISA", NULL}, {0x02, "EISA", NULL}, {0x03, "MCA", NULL}, {0x04, "PCI-to-PCI4", info_bridge_pci4}, {0x05, "PMCIA", NULL}, {0x06, "NuBus", NULL}, {0x07, "CardBus", NULL}, {0x08, "RACEway", info_bridge_raceway}, {0x09, "PCI-to-PCI9", info_bridge_pci9}, {0x0A, "Infiniband-to-host", NULL}, {0x80, "Other", NULL}, {0, NULL, NULL}, }; pci_device_info info_simple_comm[] = { {0x00, "Serial", NULL}, // todo sub {0x01, "Parallel", NULL}, // todo sub {0x02, "Multiport serial", NULL}, {0x03, "Modem", NULL}, // todo sub {0x04, "IEEE 488.1/2 GPIB", NULL}, {0x05, "Smart card", NULL}, {0x80, "Other", NULL}, {0, NULL, NULL}, }; pci_device_info info_base_system_peripheral[] = { {0x00, "PIC", NULL}, // todo sub {0x01, "DMA", NULL}, // todo sub {0x02, "Timer", NULL}, // todo sub {0x03, "RTC", NULL}, // todo sub {0x04, "PCI Hot Plug", NULL}, {0x05, "SD", NULL}, {0x06, "IOMMU", NULL}, {0x80, "Other", NULL}, {0, NULL, NULL}, }; pci_device_info info_input_device[] = { {0x00, "Keyboard", NULL}, {0x01, "Digitizer pen", NULL}, {0x02, "Mouse", NULL}, {0x03, "Scanner", NULL}, {0x04, "Game Port", NULL}, // todo sub {0x80, "Other", NULL}, {0, NULL, NULL}, }; pci_device_info info_docking_station[] = { {0x00, "Generic", NULL}, {0x80, "Other", NULL}, {0, NULL, NULL}, }; pci_device_info info_processor[] = { {0x00, "386", NULL}, {0x01, "486", NULL}, {0x02, "Pentium", NULL}, {0x03, "Pentium Pro", NULL}, {0x10, "Alpha", NULL}, {0x20, "PowerPC", NULL}, {0x30, "MIPS", NULL}, {0x40, "Co-Processor", NULL}, {0x80, "Other", NULL}, {0, NULL, NULL}, }; pci_device_info info_serial_bus_usb[] = { {0x00, "UHCI (1.0)", NULL}, {0x10, "OHCI (1.1)", NULL}, {0x20, "EHCI (2.0)", NULL}, {0x30, "XHCI (3.0)", NULL}, {0x80, "Unspecified", NULL}, {0xFE, "Device", NULL}, {0, NULL, NULL}, }; pci_device_info info_serial_bus[] = { {0x00, "FireWire", NULL}, // todo sub {0x01, "ACCESS bus", NULL}, {0x02, "SSA", NULL}, {0x03, "USB", info_serial_bus_usb}, {0x04, "Fibre Channel", NULL}, {0x05, "SMBus", NULL}, {0x06, "InfiniBand", NULL}, {0x07, "IPMI Interface", NULL}, // todo sub {0x08, "SERCOS", NULL}, {0x09, "CanBus", NULL}, {0x80, "Other", NULL}, {0, NULL, NULL}, }; pci_device_info info_wireless[] = { {0x00, "IRDA Comp", NULL}, {0x01, "Consumer IR", NULL}, {0x10, "RF", NULL}, {0x11, "Bluetooth", NULL}, {0x12, "Broadband", NULL}, {0x20, "Ethernet 802.1a", NULL}, {0x21, "Ethernet 802.1b", NULL}, {0x80, "Other", NULL}, {0, NULL, NULL}, }; pci_device_info info_intelligent[] = { {0x00, "I20", NULL}, {0, NULL, NULL}, }; pci_device_info info_satellite[] = { {0x01, "Satellite TV", NULL}, {0x02, "Satellite Audio", NULL}, {0x03, "Satellite Voice", NULL}, {0x04, "Satellite Data", NULL}, {0, NULL, NULL}, }; pci_device_info info_encryption[] = { {0x00, "Network and Computing", NULL}, {0x10, "Entertainment", NULL}, {0x80, "Other", NULL}, {0, NULL, NULL}, }; pci_device_info info_signal_processing[] = { {0x00, "DPIO Modules", NULL}, {0x01, "Performance Counters", NULL}, {0x10, "Communication Synchronizer", NULL}, {0x20, "Signal Processing Management", NULL}, {0x80, "Other", NULL}, {0, NULL, NULL}, }; pci_device_info pci_root_info[] = { {0x00, "Unclassified", info_unclassified}, {0x01, "Mass Storage", info_mass_storage}, {0x02, "Network", info_network_controller}, {0x03, "Display", info_display_controller}, {0x04, "Multimedia", info_multimedia_controller}, {0x05, "Memory", info_memory_controller}, {0x06, "Bridge", info_bridge_device}, {0x07, "Simple Communication", info_simple_comm}, {0x08, "Base System Peripheral", info_base_system_peripheral}, {0x09, "Input Device", info_input_device}, {0x0a, "Docking", info_docking_station}, {0x0b, "Processor", info_processor}, {0x0c, "Serial Bus", info_serial_bus}, {0x0d, "Wireless", info_wireless}, {0x0e, "Intelligent", info_intelligent}, {0x0f, "Satellite Comm", info_satellite}, {0x10, "Encryption", info_encryption}, {0x11, "Signal Processing", info_signal_processing}, {0x12, "Processing Accelerator", NULL}, {0x13, "Non-Essential", NULL}, {0x40, "Co-Processor", NULL}, {0xFF, "Unassigned", NULL}, {0, NULL, NULL}, }; #endif //NEW_KERNEL_PCI_DEVICES_H