3 char *pci_func_desc(uint8_t class, uint8_t sub, uint8_t prog) {
4 uint32_t funcno, special;
6 funcno = class << 16 | sub << 8 | prog;
7 special = class << 16 | sub << 8;
10 case 0x010000: return "IDE Controller"; break;
11 case 0x020500: return "PICMG 2.14 Multi Computing"; break;
12 case 0x060700: return "RACEway Bridge"; break;
16 case 0x000000: return "Any device except for VGA-Compatible devices"; break;
17 case 0x000100: return "VGA-Compatible Device"; break;
18 case 0x010000: return "SCSI Bus Controller"; break;
19 case 0x010200: return "Floppy Disk Controller"; break;
20 case 0x010300: return "IPI Bus Controller"; break;
21 case 0x010400: return "RAID Controller"; break;
22 case 0x010520: return "ATA Controller (Single DMA)"; break;
23 case 0x010530: return "ATA Controller (Chained DMA)"; break;
24 case 0x010600: return "Serial ATA (Vendor Specific Interface)"; break;
25 case 0x010601: return "Serial ATA (AHCI 1.0)"; break;
26 case 0x010700: return "Serial Attached SCSI (SAS)"; break;
27 case 0x018000: return "Other Mass Storage Controller"; break;
28 case 0x020000: return "Ethernet Controller"; break;
29 case 0x020100: return "Token Ring Controller"; break;
30 case 0x020200: return "FDDI Controller"; break;
31 case 0x020300: return "ATM Controller"; break;
32 case 0x020400: return "ISDN Controller"; break;
33 case 0x020500: return "WorldFip Controller"; break;
34 case 0x028000: return "Other Network Controller"; break;
35 case 0x030000: return "VGA-Compatible Controller"; break;
36 case 0x030001: return "8512-Compatible Controller"; break;
37 case 0x030100: return "XGA Controller"; break;
38 case 0x030200: return "3D Controller (Not VGA-Compatible)"; break;
39 case 0x038000: return "Other Display Controller"; break;
40 case 0x040000: return "Video Device"; break;
41 case 0x040100: return "Audio Device"; break;
42 case 0x040200: return "Computer Telephony Device"; break;
43 case 0x048000: return "Other Multimedia Device"; break;
44 case 0x050000: return "RAM Controller"; break;
45 case 0x050100: return "Flash Controller"; break;
46 case 0x058000: return "Other Memory Controller"; break;
47 case 0x060000: return "Host Bridge"; break;
48 case 0x060100: return "ISA Bridge"; break;
49 case 0x060200: return "EISA Bridge"; break;
50 case 0x060300: return "MCA Bridge"; break;
51 case 0x060400: return "PCI-to-PCI Bridge"; break;
52 case 0x060401: return "PCI-to-PCI Bridge (Subtractive Decode)"; break;
53 case 0x060500: return "PCMCIA Bridge"; break;
54 case 0x060600: return "NuBus Bridge"; break;
55 case 0x060700: return "CardBus Bridge"; break;
56 case 0x060940: return "PCI-to-PCI Bridge (Semi-Transparent, Primary)"; break;
57 case 0x060980: return "PCI-to-PCI Bridge (Semi-Transparent, Secondary)"; break;
58 case 0x068000: return "Other Bridge Device"; break;
59 case 0x070000: return "Generic XT-Compatible Serial Controller"; break;
60 case 0x070001: return "16450-Compatible Serial Controller"; break;
61 case 0x070002: return "16550-Compatible Serial Controller"; break;
62 case 0x070003: return "16650-Compatible Serial Controller"; break;
63 case 0x070004: return "16750-Compatible Serial Controller"; break;
64 case 0x070005: return "16850-Compatible Serial Controller"; break;
65 case 0x070006: return "16950-Compatible Serial Controller"; break;
66 case 0x070100: return "Parallel Port"; break;
67 case 0x070101: return "Bi-Directional Parallel Port"; break;
68 case 0x070102: return "ECP 1.X Compliant Parallel Port"; break;
69 case 0x070103: return "IEEE 1284 Controller"; break;
70 case 0x070200: return "Multiport Serial Controller"; break;
71 case 0x070300: return "Generic Modem"; break;
72 case 0x070301: return "Hayes Compatible Modem (16450-Compatible Interface)"; break;
73 case 0x070302: return "Hayes Compatible Modem (16550-Compatible Interface)"; break;
74 case 0x070303: return "Hayes Compatible Modem (16650-Compatible Interface)"; break;
75 case 0x070304: return "Hayes Compatible Modem (16750-Compatible Interface)"; break;
76 case 0x070400: return "IEEE 488.1/2 (GPIB) Controller"; break;
77 case 0x070500: return "Smart Card"; break;
78 case 0x078000: return "Other Communications Device"; break;
79 case 0x080000: return "Generic 8259 PIC"; break;
80 case 0x080001: return "ISA PIC"; break;
81 case 0x080002: return "EISA PIC"; break;
82 case 0x080010: return "I/O APIC Interrupt Controller"; break;
83 case 0x080020: return "I/O(x) APIC Interrupt Controller"; break;
84 case 0x080100: return "Generic 8237 DMA Controller"; break;
85 case 0x080101: return "ISA DMA Controller"; break;
86 case 0x080102: return "EISA DMA Controller"; break;
87 case 0x080200: return "Generic 8254 System Timer"; break;
88 case 0x080201: return "ISA System Timer"; break;
89 case 0x080202: return "EISA System Timer"; break;
90 case 0x080300: return "Generic RTC Controller"; break;
91 case 0x080301: return "ISA RTC Controller"; break;
92 case 0x080400: return "Generic PCI Hot-Plug Controller"; break;
93 case 0x088000: return "Other System Peripheral"; break;
94 case 0x090000: return "Keyboard Controller"; break;
95 case 0x090100: return "Consumer IR Controller"; break;
96 case 0x090200: return "Audio Controller"; break;
97 case 0x090300: return "Voice Controller"; break;
98 case 0x090310: return "USB (Open Host Controller Spec"; break;
99 case 0x090320: return "USB2 Host Controller (Intel Enhanced Host Controller Interface)"; break;
100 case 0x090380: return "USB"; break;
101 case 0x090400: return "Data Controller"; break;
102 case 0x090410: return "Gameport Contrlller (Legacy)"; break;
103 case 0x090500: return "SMBus"; break;
104 case 0x090600: return "InfiniBand"; break;
105 case 0x090700: return "IPMI SMIC Interface"; break;
106 case 0x090701: return "IPMI Kybd Controller Style Interface"; break;
107 case 0x090702: return "IPMI Block Transfer Interface"; break;
108 case 0x090800: return "SERCOS Interface Standard (IEC 61491)"; break;
109 case 0x090900: return "CANbus"; break;
110 case 0x091000: return "RF Controller"; break;
111 case 0x091100: return "Bluetooth Controller"; break;
112 case 0x091200: return "Broadband Controller"; break;
113 case 0x092000: return "Ethernet Controller (802.11a)"; break;
114 case 0x092100: return "Ethernet Controller (802.11b)"; break;
115 case 0x093000: return "MIPS Processor"; break;
116 case 0x094000: return "Co-Processor"; break;
117 case 0x094010: return "IEEE 1394 Controller (1394 OpenHCI Spec)"; break;
118 case 0x098000: return "Message FIFO"; break;
119 case 0x100000: return "Network and Computing Encrpytion/Decryption"; break;
120 case 0x101000: return "Entertainment Encryption/Decryption"; break;
121 case 0x108000: return "Other Encryption/Decryption"; break;
122 case 0x110000: return "DPIO Modules"; break;
123 case 0x110100: return "Performance Counters"; break;
124 case 0x111000: return "Communications Syncrhonization Plus Time and Frequency Test/Measurment"; break;
125 case 0x112000: return "Management Card"; break;
126 case 0x118000: return "Other Data Acquisition/Signal Processing Controller"; break;