297 lines
10 KiB
C
297 lines
10 KiB
C
//
|
|
// Created by rick on 06-03-21.
|
|
//
|
|
#ifndef NEW_KERNEL_PCI_DEVICES_H
|
|
#define NEW_KERNEL_PCI_DEVICES_H
|
|
|
|
#include <sys/types.h>
|
|
|
|
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
|