109f67678Sanish /* 209f67678Sanish * CDDL HEADER START 309f67678Sanish * 409f67678Sanish * The contents of this file are subject to the terms of the 5337fc9e2Sanish * Common Development and Distribution License (the "License"). 6337fc9e2Sanish * You may not use this file except in compliance with the License. 709f67678Sanish * 809f67678Sanish * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 909f67678Sanish * or http://www.opensolaris.org/os/licensing. 1009f67678Sanish * See the License for the specific language governing permissions 1109f67678Sanish * and limitations under the License. 1209f67678Sanish * 1309f67678Sanish * When distributing Covered Code, include this CDDL HEADER in each 1409f67678Sanish * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1509f67678Sanish * If applicable, add the following below this CDDL HEADER, with the 1609f67678Sanish * fields enclosed by brackets "[]" replaced with your own identifying 1709f67678Sanish * information: Portions Copyright [yyyy] [name of copyright owner] 1809f67678Sanish * 1909f67678Sanish * CDDL HEADER END 2009f67678Sanish */ 2109f67678Sanish 2209f67678Sanish /* 23337fc9e2Sanish * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 2409f67678Sanish * Use is subject to license terms. 2509f67678Sanish */ 2613c8743eSMarcel Telka /* 2713c8743eSMarcel Telka * Copyright 2013 Nexenta Systems, Inc. All rights reserved. 2813c8743eSMarcel Telka */ 2909f67678Sanish 3009f67678Sanish #include <sys/types.h> 3109f67678Sanish #include <sys/stat.h> 3209f67678Sanish #include "pci_strings.h" 3309f67678Sanish 3409f67678Sanish const pci_class_strings_t class_pci[] = { 359675e051SRichard Lowe { 0, 0, 0, "Unspecified class", "unknown" }, 369675e051SRichard Lowe { 0, 1, 0, "VGA compatible controller", "unknown" }, 379675e051SRichard Lowe 389675e051SRichard Lowe { 1, 0, 0, "SCSI bus controller", "scsi" }, 39c9645facSRobert Mustacchi { 1, 0, 0x11, "SCSI storage device (SOP, PQI)", "scsi" }, 40c9645facSRobert Mustacchi { 1, 0, 0x12, "SCSI bus controller (SOP, PQI)", "scsi" }, 41c9645facSRobert Mustacchi { 1, 0, 0x13, "SCSI bus controller and device (SOP, PQI)", "scsi" }, 42c9645facSRobert Mustacchi { 1, 0, 0x21, "SCSI bus controller and device (SOP, NVMe)", "scsi" }, 439675e051SRichard Lowe { 1, 1, 0x80, "IDE controller", /* Special case */ "ide" }, 449675e051SRichard Lowe { 1, 2, 0, "Floppy controller", "flpydis" }, 459675e051SRichard Lowe { 1, 3, 0, "IPI bus controller", "ipi" }, 469675e051SRichard Lowe { 1, 4, 0, "RAID controller", "raid" }, 479675e051SRichard Lowe { 1, 5, 0x20, "ATA controller with single DMA", "ata" }, 489675e051SRichard Lowe { 1, 5, 0x30, "ATA controller with chained DMA", "ata" }, 499675e051SRichard Lowe { 1, 6, 0, "Serial ATA Direct Port Access (DPA)", "sata" }, 509675e051SRichard Lowe { 1, 6, 1, "SATA AHCI Interface", "sata" }, 519675e051SRichard Lowe { 1, 6, 2, "Serial Storage Bus Interface", "sata" }, 529675e051SRichard Lowe { 1, 7, 0, "Serial Attached SCSI Controller", "sas" }, 539675e051SRichard Lowe { 1, 7, 1, "Serial Storage Bus Interface", "sas" }, 549675e051SRichard Lowe { 1, 8, 0, "Non-Volatile memory controller", "unknown" }, 559675e051SRichard Lowe { 1, 8, 1, "NVMHCI", "unknown" }, 569675e051SRichard Lowe { 1, 8, 2, "NVM Express", "nvme" }, 57c9645facSRobert Mustacchi { 1, 8, 2, "NVM Express administrative controller", "unknown" }, 589675e051SRichard Lowe { 1, 9, 0, "UFS controller", "unknown" }, 599675e051SRichard Lowe { 1, 9, 1, "UFS Host Controller Interface", "unknown" }, 609675e051SRichard Lowe { 1, 0x80, 0, "Mass storage controller", "unknown" }, 619675e051SRichard Lowe 629675e051SRichard Lowe { 2, 0, 0, "Ethernet controller", "etherne" }, 63*d7574e9aSRobert Mustacchi { 2, 0, 1, "Ethernet controller IDPF compliant", "idpf" }, 649675e051SRichard Lowe { 2, 1, 0, "Token ring controller", "tokenrg" }, 659675e051SRichard Lowe { 2, 2, 0, "FDDI controller", "fddi" }, 669675e051SRichard Lowe { 2, 3, 0, "ATM controller", "atm" }, 679675e051SRichard Lowe { 2, 4, 0, "ISDN controller", "isdn" }, 689675e051SRichard Lowe { 2, 5, 0, "WorldFip controller", "unknown" }, 699675e051SRichard Lowe { 2, 6, 0, "PICMG 2.14 Multi computing controller", "mcd" }, 709675e051SRichard Lowe { 2, 7, 0, "InfiniBand controller", "ib", }, 71c9645facSRobert Mustacchi { 2, 8, 0, "Host fabric controller", "unknown", }, 729675e051SRichard Lowe { 2, 0x80, 0, "Network controller", "unknown" }, 739675e051SRichard Lowe 749675e051SRichard Lowe { 3, 0, 0, "VGA compatible controller", "vga" }, 759675e051SRichard Lowe { 3, 0, 1, "8514-compatible display controller", "vgs8514" }, 769675e051SRichard Lowe { 3, 1, 0, "XGA video controller", "xga" }, 779675e051SRichard Lowe { 3, 2, 0, "3D controller", "3d" }, 789675e051SRichard Lowe { 3, 0x80, 0, "Video controller", "unknown" }, 799675e051SRichard Lowe 809675e051SRichard Lowe { 4, 0, 0, "Video device", "video" }, 819675e051SRichard Lowe { 4, 1, 0, "Audio device", "audio" }, 829675e051SRichard Lowe { 4, 2, 0, "Computer Telephony device", "teleph" }, 83c9645facSRobert Mustacchi { 4, 3, 0, "High Definition Audio 1.0", "audio" }, 84c9645facSRobert Mustacchi { 4, 3, 0x80, "High Definition Audio 1.0", "audio" }, 859675e051SRichard Lowe { 4, 0x80, 0, "Multimedia device", "unknown" }, 869675e051SRichard Lowe 879675e051SRichard Lowe { 5, 0, 0, "Ram", "ram" }, 889675e051SRichard Lowe { 5, 1, 0, "Flash memory", "flash" }, 89c9645facSRobert Mustacchi { 5, 2, 0, "CXL Memory Device", "cxl" }, 90c9645facSRobert Mustacchi { 5, 2, 0x10, "CXL 2.0 Memory Device", "cxl" }, 919675e051SRichard Lowe { 5, 0x80, 0, "Memory controller", "unknown" }, 929675e051SRichard Lowe 939675e051SRichard Lowe { 6, 0, 0, "Host bridge", "hostpci" }, 949675e051SRichard Lowe { 6, 1, 0, "ISA bridge", "pci-isa" }, 959675e051SRichard Lowe { 6, 2, 0, "EISA bridge", "pcieisa" }, 969675e051SRichard Lowe { 6, 3, 0, "MCA bridge", "pci-mca" }, 979675e051SRichard Lowe { 6, 4, 0, "PCI-PCI bridge", "pci-pci" }, 989675e051SRichard Lowe { 6, 4, 1, "Subtractive Decode PCI-PCI bridge", "unknown" }, 999675e051SRichard Lowe { 6, 5, 0, "PCMCIA bridge", "pcipcmc" }, 1009675e051SRichard Lowe { 6, 6, 0, "NuBus bridge", "pcinubu" }, 1019675e051SRichard Lowe { 6, 7, 0, "CardBus bridge", "pcicard" }, 1029675e051SRichard Lowe { 6, 8, 0, "RACE-way bridge transport mode", "pcirace" }, 1039675e051SRichard Lowe { 6, 8, 1, "RACE-way bridge endpoint mode", "pcirace" }, 1049675e051SRichard Lowe { 6, 9, 0x40, "Semi-transparent PCI-PCI primary bridge", "stpci" }, 1059675e051SRichard Lowe { 6, 9, 0x80, "Semi-transparent PCI-PCI secondary bridge", "stpci" }, 1069675e051SRichard Lowe { 6, 0xA, 0, "Infiniband-PCI bridge", "ib-pci" }, 1079675e051SRichard Lowe { 6, 0xB, 0, "AS Custom Interface bridge", "as-pci" }, 1089675e051SRichard Lowe { 6, 0xB, 1, "ASI-SIG Defined Portal Interface", "as-pci" }, 1099675e051SRichard Lowe { 6, 0x80, 0, "Bridge device", "unknown" }, 1109675e051SRichard Lowe 1119675e051SRichard Lowe { 7, 0, 0, "Serial controller", "serial" }, 1129675e051SRichard Lowe { 7, 0, 1, "16450-compatible serial controller", "paralle" }, 1139675e051SRichard Lowe { 7, 0, 2, "16550-compatible serial controller", "paralle" }, 1149675e051SRichard Lowe { 7, 0, 3, "16650-compatible serial controller", "paralle" }, 1159675e051SRichard Lowe { 7, 0, 4, "16750-compatible serial controller", "paralle" }, 1169675e051SRichard Lowe { 7, 0, 5, "16850-compatible serial controller", "paralle" }, 1179675e051SRichard Lowe { 7, 0, 6, "16950-compatible serial controller", "paralle" }, 1189675e051SRichard Lowe { 7, 1, 0, "Parallel port", "paralle" }, 1199675e051SRichard Lowe { 7, 1, 1, "Bidirectional parallel port", "paralle" }, 1209675e051SRichard Lowe { 7, 1, 2, "ECP 1.X parallel port", "paralle" }, 1219675e051SRichard Lowe { 7, 1, 3, "IEEE 1284 parallel port", "paralle" }, 1229675e051SRichard Lowe { 7, 1, 0xFE, "IEEE 1284 target device", "1284tar" }, 1239675e051SRichard Lowe { 7, 2, 0, "Multiport serial controller", "multise" }, 1249675e051SRichard Lowe { 7, 3, 0, "Modem controller", "mdmctrl" }, 1259675e051SRichard Lowe { 7, 3, 1, "Hayes 16450-compatible modem", "modem" }, 1269675e051SRichard Lowe { 7, 3, 2, "Hayes 16550-compatible modem", "modem" }, 1279675e051SRichard Lowe { 7, 3, 3, "Hayes 16650-compatible modem", "modem" }, 1289675e051SRichard Lowe { 7, 3, 4, "Hayes 16750-compatible modem", "modem" }, 1299675e051SRichard Lowe { 7, 4, 0, "GPIB controller", "gpibctl" }, 1309675e051SRichard Lowe { 7, 5, 0, "Smartcard controller", "smctrlr" }, 1319675e051SRichard Lowe { 7, 0x80, 0, "Communication device", "commdev" }, 1329675e051SRichard Lowe 1339675e051SRichard Lowe { 8, 0, 0, "8259 PIC", "pic" }, 1349675e051SRichard Lowe { 8, 0, 1, "ISA PIC", "pic" }, 1359675e051SRichard Lowe { 8, 0, 2, "EISA PIC", "pic" }, 1369675e051SRichard Lowe { 8, 0, 0x10, "I/O APIC", "pic" }, 1379675e051SRichard Lowe { 8, 0, 0x20, "I/O(x) APIC", "iopic" }, 1389675e051SRichard Lowe { 8, 1, 0, "8237 DMA controller", "dma" }, 1399675e051SRichard Lowe { 8, 1, 1, "ISA DMA controller", "dma" }, 1409675e051SRichard Lowe { 8, 1, 2, "EISA DMA controller", "dma" }, 1419675e051SRichard Lowe { 8, 2, 0, "8254 system timer", "timer" }, 1429675e051SRichard Lowe { 8, 2, 1, "ISA system timer", "timer" }, 1439675e051SRichard Lowe { 8, 2, 2, "EISA system timers", "timer" }, 1449675e051SRichard Lowe { 8, 2, 3, "High Performance Event timer", "timer" }, 1459675e051SRichard Lowe { 8, 3, 0, "Real time clock", "rtc" }, 1469675e051SRichard Lowe { 8, 3, 1, "ISA real time clock", "rtc" }, 1479675e051SRichard Lowe { 8, 4, 0, "PCI Hot-Plug controller", "pcihp" }, 1489675e051SRichard Lowe { 8, 5, 0, "SD Host controller", "sd-hc" }, 1499675e051SRichard Lowe { 8, 5, 1, "SD Host controller with DMA", "sd-hc" }, 1509675e051SRichard Lowe { 8, 5, 2, "Vendor Unique SD Host controller", "sd-hc" }, 1519675e051SRichard Lowe { 8, 6, 0, "IOMMU controller", "iommu" }, 1529675e051SRichard Lowe { 8, 7, 0, "Root Complex Event Collector", "unknown" }, 153ccb3ca45SRobert Mustacchi { 8, 8, 0, "Time Card", "unknown" }, 154ccb3ca45SRobert Mustacchi { 8, 8, 1, "Time Card - OCP TAP", "unknown" }, 1559675e051SRichard Lowe { 8, 0x80, 0, "System peripheral", "unknown" }, 1569675e051SRichard Lowe 1579675e051SRichard Lowe { 9, 0, 0, "Keyboard controller", "keyboar" }, 1589675e051SRichard Lowe { 9, 1, 0, "Digitizer (pen)", "tablet" }, 1599675e051SRichard Lowe { 9, 2, 0, "Mouse controller", "mouse" }, 1609675e051SRichard Lowe { 9, 3, 0, "Scanner controller", "scanner" }, 1619675e051SRichard Lowe { 9, 4, 0, "Gameport controller", "gamepor" }, 1629675e051SRichard Lowe { 9, 4, 0x10, "Gameport Legacy controller", "gamepor" }, 1639675e051SRichard Lowe { 9, 0x80, 0, "Input controller", "unknown" }, 1649675e051SRichard Lowe 1659675e051SRichard Lowe { 10, 0, 0, "Generic Docking station", "docking" }, 1669675e051SRichard Lowe { 10, 0x80, 0, "Docking station", "unknown" }, 1679675e051SRichard Lowe 1689675e051SRichard Lowe { 11, 0, 0, "386", "386" }, 1699675e051SRichard Lowe { 11, 1, 0, "486", "486" }, 1709675e051SRichard Lowe { 11, 2, 0, "Pentium", "pentium" }, 1719675e051SRichard Lowe { 11, 0x10, 0, "Alpha", "alpha" }, 1729675e051SRichard Lowe { 11, 0x20, 0, "Power-PC", "powerpc" }, 1739675e051SRichard Lowe { 11, 0x30, 0, "MIPS", "mips" }, 1749675e051SRichard Lowe { 11, 0x40, 0, "Co-processor", "coproc" }, 1759675e051SRichard Lowe { 11, 0x80, 0, "Processor", "unknown" }, 1769675e051SRichard Lowe 1779675e051SRichard Lowe { 12, 0, 0, "FireWire (IEEE 1394)", "1394" }, 1789675e051SRichard Lowe { 12, 0, 0x10, "FireWire (IEEE 1394) OpenHCI compliant", "1394" }, 1799675e051SRichard Lowe { 12, 1, 0, "ACCESS.bus", "access" }, 1809675e051SRichard Lowe { 12, 2, 0, "SSA", "ssa" }, 1819675e051SRichard Lowe { 12, 3, 0, "Universal Serial Bus UHCI compliant", "usb" }, 1829675e051SRichard Lowe { 12, 3, 0x10, "Universal Serial Bus OHCI compliant", "usb" }, 1839675e051SRichard Lowe { 12, 3, 0x20, "Universal Serial Bus EHCI compliant", "usb" }, 1849675e051SRichard Lowe { 12, 3, 0x30, "Universal Serial Bus XHCI compliant", "usb" }, 185c9645facSRobert Mustacchi { 12, 3, 0x40, "USB4 Host Interface", "usb" }, 1869675e051SRichard Lowe { 12, 3, 0x80, "Universal Serial Bus generic HCD", "usb" }, 1879675e051SRichard Lowe { 12, 3, 0xFE, "Universal Serial Bus device", "usb" }, 1889675e051SRichard Lowe { 12, 4, 0, "Fibre Channel", "fibre" }, 1899675e051SRichard Lowe { 12, 5, 0, "SMBus (System Management Bus)", "smbus" }, 1909675e051SRichard Lowe { 12, 6, 0, "InfiniBand", "ib" }, 1919675e051SRichard Lowe { 12, 7, 0, "IPMI SMIC Interface", "ipmi" }, 1929675e051SRichard Lowe { 12, 7, 1, "IPMI Keyboard Controller Style Interface", "ipmi" }, 1939675e051SRichard Lowe { 12, 7, 2, "IPMI Block Transfer Interface", "ipmi" }, 1949675e051SRichard Lowe { 12, 8, 0, "SERCOS Interface Standard", "sercos" }, 1959675e051SRichard Lowe { 12, 9, 0, "CANbus", "canbus" }, 1969675e051SRichard Lowe { 12, 10, 0, "MIPI I3C Host Controller Interface", "unknown" }, 197ccb3ca45SRobert Mustacchi { 12, 11, 0, "CXL Fabric Managment Host Interface", "unknown" }, 1989675e051SRichard Lowe { 12, 0x80, 0, "Serial Bus Controller", "unknown" }, 1999675e051SRichard Lowe 2009675e051SRichard Lowe { 13, 0, 0, "IRDA Wireless controller", "irda" }, 2019675e051SRichard Lowe { 13, 1, 0, "Consumer IR Wireless controller", "ir" }, 2029675e051SRichard Lowe { 13, 1, 0x10, "UWB Radio controller", "ir-uwb" }, 2039675e051SRichard Lowe { 13, 0x10, 0, "RF Wireless controller", "rf" }, 2049675e051SRichard Lowe { 13, 0x11, 0, "Bluetooth Wireless controller", "btooth" }, 2059675e051SRichard Lowe { 13, 0x12, 0, "Broadband Wireless controller", "brdband" }, 2069675e051SRichard Lowe { 13, 0x20, 0, "802.11a Wireless controller", "802.11a" }, 2079675e051SRichard Lowe { 13, 0x21, 0, "802.11b Wireless controller", "802.11b" }, 2089675e051SRichard Lowe { 13, 0x40, 0, "Cellular controller/modem", "unknown" }, 2099675e051SRichard Lowe { 13, 0x41, 0, "Cellular controller/modem w/ ethernet", "unknown" }, 2109675e051SRichard Lowe { 13, 0x80, 0, "Wireless controller", "unknown" }, 2119675e051SRichard Lowe 2129675e051SRichard Lowe { 14, 0, 0, "I2O controller", "i2o" }, 2139675e051SRichard Lowe { 14, 0, 1, "I2O Arch Specification 1.0", "i2o" }, 2149675e051SRichard Lowe 2159675e051SRichard Lowe { 15, 1, 0, "TV Satellite controller", "tv" }, 2169675e051SRichard Lowe { 15, 2, 0, "Audio Satellite controller", "audio" }, 2179675e051SRichard Lowe { 15, 3, 0, "Voice Satellite controller", "voice" }, 2189675e051SRichard Lowe { 15, 4, 0, "Data Satellite controller", "data" }, 2199675e051SRichard Lowe { 15, 0x80, 0, "Satellite Comm controller", "unknown" }, 2209675e051SRichard Lowe 2219675e051SRichard Lowe { 16, 0, 0, "Network and computing en/decryption", "netcryp" }, 222c9645facSRobert Mustacchi { 16, 0x10, 0, "Entertainment en/decryption", "entcryp" }, 223ccb3ca45SRobert Mustacchi { 16, 0x20, 0, "Trusted Platform Module", "tpm" }, 2249675e051SRichard Lowe { 16, 0x80, 0, "En/decryption controller", "unknown" }, 2259675e051SRichard Lowe 2269675e051SRichard Lowe { 17, 0, 0, "DPIO modules", "dpio" }, 2279675e051SRichard Lowe { 17, 1, 0, "Performance counters", "perfcnt" }, 2289675e051SRichard Lowe { 17, 0x10, 0, "Comm Synch time and freq test/measurement", "cstftm" }, 2299675e051SRichard Lowe { 17, 0x20, 0, "Management card", "mgmtcrd" }, 2309675e051SRichard Lowe { 17, 0x80, 0, "DSP/DAP controllers", "unknown" }, 2319675e051SRichard Lowe 2329675e051SRichard Lowe { 18, 0, 0, "Processing Accelerator", "unknown" }, 233c9645facSRobert Mustacchi { 18, 1, 0, "SNIA Smart Data Acceleration Interface controller", 234c9645facSRobert Mustacchi "sdxi" }, 2359675e051SRichard Lowe 2369675e051SRichard Lowe { 19, 0, 0, "Non-essential Instrumentation", "unknown" }, 23709f67678Sanish }; 23809f67678Sanish 239bd97c7ceSRobert Mustacchi size_t class_pci_items = sizeof (class_pci) / sizeof (class_pci[0]); 240