1 /*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21
22 /*
23 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
25 */
26 /*
27 * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
28 */
29
30 #include <sys/types.h>
31 #include <sys/stat.h>
32 #include "pci_strings.h"
33
34 const pci_class_strings_t class_pci[] = {
35 { 0, 0, 0, "Unspecified class", "unknown" },
36 { 0, 1, 0, "VGA compatible controller", "unknown" },
37
38 { 1, 0, 0, "SCSI bus controller", "scsi" },
39 { 1, 1, 0x80, "IDE controller", /* Special case */ "ide" },
40 { 1, 2, 0, "Floppy controller", "flpydis" },
41 { 1, 3, 0, "IPI bus controller", "ipi" },
42 { 1, 4, 0, "RAID controller", "raid" },
43 { 1, 5, 0x20, "ATA controller with single DMA", "ata" },
44 { 1, 5, 0x30, "ATA controller with chained DMA", "ata" },
45 { 1, 6, 0, "Serial ATA Direct Port Access (DPA)", "sata" },
46 { 1, 6, 1, "SATA AHCI Interface", "sata" },
47 { 1, 6, 2, "Serial Storage Bus Interface", "sata" },
48 { 1, 7, 0, "Serial Attached SCSI Controller", "sas" },
49 { 1, 7, 1, "Serial Storage Bus Interface", "sas" },
50 { 1, 0x80, 0, "Mass storage controller", "unknown" },
51
52 { 2, 0, 0, "Ethernet controller", "etherne" },
53 { 2, 1, 0, "Token ring controller", "tokenrg" },
54 { 2, 2, 0, "FDDI controller", "fddi" },
55 { 2, 3, 0, "ATM controller", "atm" },
56 { 2, 4, 0, "ISDN controller", "isdn" },
57 { 2, 5, 0, "WorldFip controller", "unknown" },
58 { 2, 6, 0, "PICMG 2.14 Multi computing controller", "mcd" },
59 { 2, 0x80, 0, "Network controller", "unknown" },
60
61 { 3, 0, 0, "VGA compatible controller", "vga" },
62 { 3, 0, 1, "8514-compatible display controller", "vgs8514" },
63 { 3, 1, 0, "XGA video controller", "xga" },
64 { 3, 2, 0, "3D controller", "3d" },
65 { 3, 0x80, 0, "Video controller", "unknown" },
66
67 { 4, 0, 0, "Video device", "video" },
68 { 4, 1, 0, "Audio device", "audio" },
69 { 4, 2, 0, "Computer Telephony device", "teleph" },
70 { 4, 3, 0, "Mixed Mode device", "mixed" },
71 { 4, 0x80, 0, "Multimedia device", "unknown" },
72
73 { 5, 0, 0, "Ram", "ram" },
74 { 5, 1, 0, "Flash memory", "flash" },
75 { 5, 0x80, 0, "Memory controller", "unknown" },
76
77 { 6, 0, 0, "Host bridge", "hostpci" },
78 { 6, 1, 0, "ISA bridge", "pci-isa" },
79 { 6, 2, 0, "EISA bridge", "pcieisa" },
80 { 6, 3, 0, "MCA bridge", "pci-mca" },
81 { 6, 4, 0, "PCI-PCI bridge", "pci-pci" },
82 { 6, 4, 1, "Subtractive Decode PCI-PCI bridge", "unknown" },
83 { 6, 5, 0, "PCMCIA bridge", "pcipcmc" },
84 { 6, 6, 0, "NuBus bridge", "pcinubu" },
85 { 6, 7, 0, "CardBus bridge", "pcicard" },
86 { 6, 8, 0, "RACE-way bridge transport mode", "pcirace" },
87 { 6, 8, 1, "RACE-way bridge endpoint mode", "pcirace" },
88 { 6, 9, 0x40, "Semi-transparent PCI-PCI primary bridge", "stpci" },
89 { 6, 9, 0x80, "Semi-transparent PCI-PCI secondary bridge", "stpci" },
90 { 6, 0xA, 0, "Infiniband-PCI bridge", "ib-pci" },
91 { 6, 0xB, 0, "AS Custom Interface bridge", "as-pci" },
92 { 6, 0xB, 1, "ASI-SIG Defined Portal Interface", "as-pci" },
93 { 6, 0x80, 0, "Bridge device", "unknown" },
94
95 { 7, 0, 0, "Serial controller", "serial" },
96 { 7, 0, 1, "16450-compatible serial controller", "paralle" },
97 { 7, 0, 2, "16550-compatible serial controller", "paralle" },
98 { 7, 0, 3, "16650-compatible serial controller", "paralle" },
99 { 7, 0, 4, "16750-compatible serial controller", "paralle" },
100 { 7, 0, 5, "16850-compatible serial controller", "paralle" },
101 { 7, 0, 6, "16950-compatible serial controller", "paralle" },
102 { 7, 1, 0, "Parallel port", "paralle" },
103 { 7, 1, 1, "Bidirectional parallel port", "paralle" },
104 { 7, 1, 2, "ECP 1.X parallel port", "paralle" },
105 { 7, 1, 3, "IEEE 1284 parallel port", "paralle" },
106 { 7, 1, 0xFE, "IEEE 1284 target device", "1284tar" },
107 { 7, 2, 0, "Multiport serial controller", "multise" },
108 { 7, 3, 0, "Modem controller", "mdmctrl" },
109 { 7, 3, 1, "Hayes 16450-compatible modem", "modem" },
110 { 7, 3, 2, "Hayes 16550-compatible modem", "modem" },
111 { 7, 3, 3, "Hayes 16650-compatible modem", "modem" },
112 { 7, 3, 4, "Hayes 16750-compatible modem", "modem" },
113 { 7, 4, 0, "GPIB controller", "gpibctl" },
114 { 7, 5, 0, "Smartcard controller", "smctrlr" },
115 { 7, 0x80, 0, "Communication device", "commdev" },
116
117 { 8, 0, 0, "8259 PIC", "pic" },
118 { 8, 0, 1, "ISA PIC", "pic" },
119 { 8, 0, 2, "EISA PIC", "pic" },
120 { 8, 0, 0x10, "I/O APIC", "pic" },
121 { 8, 0, 0x20, "I/O(x) APIC", "iopic" },
122 { 8, 1, 0, "8237 DMA controller", "dma" },
123 { 8, 1, 1, "ISA DMA controller", "dma" },
124 { 8, 1, 2, "EISA DMA controller", "dma" },
125 { 8, 2, 0, "8254 system timer", "timer" },
126 { 8, 2, 1, "ISA system timer", "timer" },
127 { 8, 2, 2, "EISA system timers", "timer" },
128 { 8, 2, 3, "High Performance Event timer", "timer" },
129 { 8, 3, 0, "Real time clock", "rtc" },
130 { 8, 3, 1, "ISA real time clock", "rtc" },
131 { 8, 4, 0, "PCI Hot-Plug controller", "pcihp" },
132 { 8, 5, 0, "SD Host controller", "sd-hc" },
133 { 8, 6, 0, "IOMMU controller", "iommu" },
134 { 8, 0x80, 0, "System peripheral", "unknown" },
135
136 { 9, 0, 0, "Keyboard controller", "keyboar" },
137 { 9, 1, 0, "Digitizer (pen)", "tablet" },
138 { 9, 2, 0, "Mouse controller", "mouse" },
139 { 9, 3, 0, "Scanner controller", "scanner" },
140 { 9, 4, 0, "Gameport controller", "gamepor" },
141 { 9, 4, 0x10, "Gameport Legacy controller", "gamepor" },
142 { 9, 0x80, 0, "Input controller", "unknown" },
143
144 { 10, 0, 0, "Generic Docking station", "docking" },
145 { 10, 0x80, 0, "Docking station", "unknown" },
146
147 { 11, 0, 0, "386", "386" },
148 { 11, 1, 0, "486", "486" },
149 { 11, 2, 0, "Pentium", "pentium" },
150 { 11, 0x10, 0, "Alpha", "alpha" },
151 { 11, 0x20, 0, "Power-PC", "powerpc" },
152 { 11, 0x30, 0, "MIPS", "mips" },
153 { 11, 0x40, 0, "Co-processor", "coproc" },
154 { 11, 0x80, 0, "Processor", "unknown" },
155
156 { 12, 0, 0, "FireWire (IEEE 1394)", "1394" },
157 { 12, 0, 0x10, "FireWire (IEEE 1394) OpenHCI compliant", "1394" },
158 { 12, 1, 0, "ACCESS.bus", "access" },
159 { 12, 2, 0, "SSA", "ssa" },
160 { 12, 3, 0, "Universal Serial Bus UHCI compliant", "usb" },
161 { 12, 3, 0x10, "Universal Serial Bus OHCI compliant", "usb" },
162 { 12, 3, 0x20, "Universal Serial Bus EHCI compliant", "usb" },
163 { 12, 3, 0x80, "Universal Serial Bus generic HCD", "usb" },
164 { 12, 3, 0xFE, "Universal Serial Bus device", "usb" },
165 { 12, 4, 0, "Fibre Channel", "fibre" },
166 { 12, 5, 0, "SMBus (System Management Bus)", "smbus" },
167 { 12, 6, 0, "InfiniBand", "ib" },
168 { 12, 7, 0, "IPMI SMIC Interface", "ipmi" },
169 { 12, 7, 1, "IPMI Keyboard Controller Style Interface", "ipmi" },
170 { 12, 7, 2, "IPMI Block Transfer Interface", "ipmi" },
171 { 12, 8, 0, "SERCOS Interface Standard", "sercos" },
172 { 12, 9, 0, "CANbus", "canbus" },
173 { 12, 0x80, 0, "Serial Bus Controller", "unknown" },
174
175 { 13, 0, 0, "IRDA Wireless controller", "irda" },
176 { 13, 1, 0, "Consumer IR Wireless controller", "ir" },
177 { 13, 1, 0x10, "UWB Radio controller", "ir-uwb" },
178 { 13, 0x10, 0, "RF Wireless controller", "rf" },
179 { 13, 0x11, 0, "Bluetooth Wireless controller", "btooth" },
180 { 13, 0x12, 0, "Broadband Wireless controller", "brdband" },
181 { 13, 0x20, 0, "802.11a Wireless controller", "802.11a" },
182 { 13, 0x21, 0, "802.11b Wireless controller", "802.11b" },
183 { 13, 0x80, 0, "Wireless controller", "unknown" },
184
185 { 14, 0, 0, "I20 controller", "i2o" },
186 { 14, 0, 1, "I20 Arch Specification 1.0", "i2o" },
187
188 { 15, 1, 0, "TV Satellite controller", "tv" },
189 { 15, 2, 0, "Audio Satellite controller", "audio" },
190 { 15, 3, 0, "Voice Satellite controller", "voice" },
191 { 15, 4, 0, "Data Satellite controller", "data" },
192 { 15, 0x80, 0, "Satellite Comm controller", "unknown" },
193
194 { 16, 0, 0, "Network and computing en/decryption", "netcryp" },
195 { 16, 1, 0, "Entertainment en/decryption", "entcryp" },
196 { 16, 0x80, 0, "En/decryption controller", "unknown" },
197
198 { 17, 0, 0, "DPIO modules", "dpio" },
199 { 17, 1, 0, "Performance counters", "perfcnt" },
200 { 17, 0x10, 0, "Comm Synch time and freq test/measurement", "cstftm" },
201 { 17, 0x20, 0, "Management card", "mgmtcrd" },
202 { 17, 0x80, 0, "DSP/DAP controllers", "unknown" }
203 };
204
205 int class_pci_items = sizeof (class_pci) / sizeof (class_pci[0]);