root/usr/src/common/pci/pci_strings.c
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */

/*
 * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */
/*
 * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
 */

#include <sys/types.h>
#include <sys/stat.h>
#include "pci_strings.h"

const pci_class_strings_t class_pci[] = {
        { 0, 0, 0,      "Unspecified class",                    "unknown" },
        { 0, 1, 0,      "VGA compatible controller",            "unknown" },

        { 1, 0, 0,      "SCSI bus controller",                  "scsi" },
        { 1, 0, 0x11,   "SCSI storage device (SOP, PQI)",       "scsi" },
        { 1, 0, 0x12,   "SCSI bus controller (SOP, PQI)",       "scsi" },
        { 1, 0, 0x13,   "SCSI bus controller and device (SOP, PQI)", "scsi" },
        { 1, 0, 0x21,   "SCSI bus controller and device (SOP, NVMe)", "scsi" },
        { 1, 1, 0x80,   "IDE controller", /* Special case */    "ide" },
        { 1, 2, 0,      "Floppy controller",                    "flpydis" },
        { 1, 3, 0,      "IPI bus controller",                   "ipi" },
        { 1, 4, 0,      "RAID controller",                      "raid" },
        { 1, 5, 0x20,   "ATA controller with single DMA",       "ata" },
        { 1, 5, 0x30,   "ATA controller with chained DMA",      "ata" },
        { 1, 6, 0,      "Serial ATA Direct Port Access (DPA)",  "sata" },
        { 1, 6, 1,      "SATA AHCI Interface",                  "sata" },
        { 1, 6, 2,      "Serial Storage Bus Interface",         "sata" },
        { 1, 7, 0,      "Serial Attached SCSI Controller",      "sas" },
        { 1, 7, 1,      "Serial Storage Bus Interface",         "sas" },
        { 1, 8, 0,      "Non-Volatile memory controller",       "unknown" },
        { 1, 8, 1,      "NVMHCI",                               "unknown" },
        { 1, 8, 2,      "NVM Express",                          "nvme" },
        { 1, 8, 2,      "NVM Express administrative controller", "unknown" },
        { 1, 9, 0,      "UFS controller",                       "unknown" },
        { 1, 9, 1,      "UFS Host Controller Interface",        "unknown" },
        { 1, 0x80, 0,   "Mass storage controller",              "unknown" },

        { 2, 0, 0,      "Ethernet controller",                  "etherne" },
        { 2, 0, 1,      "Ethernet controller IDPF compliant",   "idpf" },
        { 2, 1, 0,      "Token ring controller",                "tokenrg" },
        { 2, 2, 0,      "FDDI controller",                      "fddi" },
        { 2, 3, 0,      "ATM controller",                       "atm" },
        { 2, 4, 0,      "ISDN controller",                      "isdn" },
        { 2, 5, 0,      "WorldFip controller",                  "unknown" },
        { 2, 6, 0,      "PICMG 2.14 Multi computing controller", "mcd" },
        { 2, 7, 0,      "InfiniBand controller",                "ib", },
        { 2, 8, 0,      "Host fabric controller",               "unknown", },
        { 2, 0x80, 0,   "Network controller",                   "unknown" },

        { 3, 0, 0,      "VGA compatible controller",            "vga" },
        { 3, 0, 1,      "8514-compatible display controller",   "vgs8514" },
        { 3, 1, 0,      "XGA video controller",                 "xga" },
        { 3, 2, 0,      "3D controller",                        "3d" },
        { 3, 0x80, 0,   "Video controller",                     "unknown" },

        { 4, 0, 0,      "Video device",                         "video" },
        { 4, 1, 0,      "Audio device",                         "audio" },
        { 4, 2, 0,      "Computer Telephony device",            "teleph" },
        { 4, 3, 0,      "High Definition Audio 1.0",            "audio" },
        { 4, 3, 0x80,   "High Definition Audio 1.0",            "audio" },
        { 4, 0x80, 0,   "Multimedia device",                    "unknown" },

        { 5, 0, 0,      "Ram",                                  "ram" },
        { 5, 1, 0,      "Flash memory",                         "flash" },
        { 5, 2, 0,      "CXL Memory Device",                    "cxl" },
        { 5, 2, 0x10,   "CXL 2.0 Memory Device",                "cxl" },
        { 5, 0x80, 0,   "Memory controller",                    "unknown" },

        { 6, 0, 0,      "Host bridge",                          "hostpci" },
        { 6, 1, 0,      "ISA bridge",                           "pci-isa" },
        { 6, 2, 0,      "EISA bridge",                          "pcieisa" },
        { 6, 3, 0,      "MCA bridge",                           "pci-mca" },
        { 6, 4, 0,      "PCI-PCI bridge",                       "pci-pci" },
        { 6, 4, 1,      "Subtractive Decode PCI-PCI bridge",    "unknown" },
        { 6, 5, 0,      "PCMCIA bridge",                        "pcipcmc" },
        { 6, 6, 0,      "NuBus bridge",                         "pcinubu" },
        { 6, 7, 0,      "CardBus bridge",                       "pcicard" },
        { 6, 8, 0,      "RACE-way bridge transport mode",       "pcirace" },
        { 6, 8, 1,      "RACE-way bridge endpoint mode",        "pcirace" },
        { 6, 9, 0x40,   "Semi-transparent PCI-PCI primary bridge",   "stpci" },
        { 6, 9, 0x80,   "Semi-transparent PCI-PCI secondary bridge", "stpci" },
        { 6, 0xA, 0,    "Infiniband-PCI bridge",                "ib-pci" },
        { 6, 0xB, 0,    "AS Custom Interface bridge",           "as-pci" },
        { 6, 0xB, 1,    "ASI-SIG Defined Portal Interface",     "as-pci" },
        { 6, 0x80, 0,   "Bridge device",                        "unknown" },

        { 7, 0, 0,      "Serial controller",                    "serial" },
        { 7, 0, 1,      "16450-compatible serial controller",   "paralle" },
        { 7, 0, 2,      "16550-compatible serial controller",   "paralle" },
        { 7, 0, 3,      "16650-compatible serial controller",   "paralle" },
        { 7, 0, 4,      "16750-compatible serial controller",   "paralle" },
        { 7, 0, 5,      "16850-compatible serial controller",   "paralle" },
        { 7, 0, 6,      "16950-compatible serial controller",   "paralle" },
        { 7, 1, 0,      "Parallel port",                        "paralle" },
        { 7, 1, 1,      "Bidirectional parallel port",          "paralle" },
        { 7, 1, 2,      "ECP 1.X parallel port",                "paralle" },
        { 7, 1, 3,      "IEEE 1284 parallel port",              "paralle" },
        { 7, 1, 0xFE,   "IEEE 1284 target device",              "1284tar" },
        { 7, 2, 0,      "Multiport serial controller",          "multise" },
        { 7, 3, 0,      "Modem controller",                     "mdmctrl" },
        { 7, 3, 1,      "Hayes 16450-compatible modem",         "modem" },
        { 7, 3, 2,      "Hayes 16550-compatible modem",         "modem" },
        { 7, 3, 3,      "Hayes 16650-compatible modem",         "modem" },
        { 7, 3, 4,      "Hayes 16750-compatible modem",         "modem" },
        { 7, 4, 0,      "GPIB controller",                      "gpibctl" },
        { 7, 5, 0,      "Smartcard controller",                 "smctrlr" },
        { 7, 0x80, 0,   "Communication device",                 "commdev" },

        { 8, 0, 0,      "8259 PIC",                             "pic" },
        { 8, 0, 1,      "ISA PIC",                              "pic" },
        { 8, 0, 2,      "EISA PIC",                             "pic" },
        { 8, 0, 0x10,   "I/O APIC",                             "pic" },
        { 8, 0, 0x20,   "I/O(x) APIC",                          "iopic" },
        { 8, 1, 0,      "8237 DMA controller",                  "dma" },
        { 8, 1, 1,      "ISA DMA controller",                   "dma" },
        { 8, 1, 2,      "EISA DMA controller",                  "dma" },
        { 8, 2, 0,      "8254 system timer",                    "timer" },
        { 8, 2, 1,      "ISA system timer",                     "timer" },
        { 8, 2, 2,      "EISA system timers",                   "timer" },
        { 8, 2, 3,      "High Performance Event timer",         "timer" },
        { 8, 3, 0,      "Real time clock",                      "rtc" },
        { 8, 3, 1,      "ISA real time clock",                  "rtc" },
        { 8, 4, 0,      "PCI Hot-Plug controller",              "pcihp" },
        { 8, 5, 0,      "SD Host controller",                   "sd-hc" },
        { 8, 5, 1,      "SD Host controller with DMA",          "sd-hc" },
        { 8, 5, 2,      "Vendor Unique SD Host controller",     "sd-hc" },
        { 8, 6, 0,      "IOMMU controller",                     "iommu" },
        { 8, 7, 0,      "Root Complex Event Collector",         "unknown" },
        { 8, 8, 0,      "Time Card",                            "unknown" },
        { 8, 8, 1,      "Time Card - OCP TAP",                  "unknown" },
        { 8, 0x80, 0,   "System peripheral",                    "unknown" },

        { 9, 0, 0,      "Keyboard controller",                  "keyboar" },
        { 9, 1, 0,      "Digitizer (pen)",                      "tablet" },
        { 9, 2, 0,      "Mouse controller",                     "mouse" },
        { 9, 3, 0,      "Scanner controller",                   "scanner" },
        { 9, 4, 0,      "Gameport controller",                  "gamepor" },
        { 9, 4, 0x10,   "Gameport Legacy controller",           "gamepor" },
        { 9, 0x80, 0,   "Input controller",                     "unknown" },

        { 10, 0, 0,     "Generic Docking station",              "docking" },
        { 10, 0x80, 0,  "Docking station",                      "unknown" },

        { 11, 0, 0,     "386",                                  "386" },
        { 11, 1, 0,     "486",                                  "486" },
        { 11, 2, 0,     "Pentium",                              "pentium" },
        { 11, 0x10, 0,  "Alpha",                                "alpha" },
        { 11, 0x20, 0,  "Power-PC",                             "powerpc" },
        { 11, 0x30, 0,  "MIPS",                                 "mips" },
        { 11, 0x40, 0,  "Co-processor",                         "coproc" },
        { 11, 0x80, 0,  "Processor",                            "unknown" },

        { 12, 0, 0,     "FireWire (IEEE 1394)",                 "1394" },
        { 12, 0, 0x10,  "FireWire (IEEE 1394) OpenHCI compliant", "1394" },
        { 12, 1, 0,     "ACCESS.bus",                           "access" },
        { 12, 2, 0,     "SSA",                                  "ssa" },
        { 12, 3, 0,     "Universal Serial Bus UHCI compliant",  "usb" },
        { 12, 3, 0x10,  "Universal Serial Bus OHCI compliant",  "usb" },
        { 12, 3, 0x20,  "Universal Serial Bus EHCI compliant",  "usb" },
        { 12, 3, 0x30,  "Universal Serial Bus XHCI compliant",  "usb" },
        { 12, 3, 0x40,  "USB4 Host Interface",                  "usb" },
        { 12, 3, 0x80,  "Universal Serial Bus generic HCD",     "usb" },
        { 12, 3, 0xFE,  "Universal Serial Bus device",          "usb" },
        { 12, 4, 0,     "Fibre Channel",                        "fibre" },
        { 12, 5, 0,     "SMBus (System Management Bus)",        "smbus" },
        { 12, 6, 0,     "InfiniBand",                           "ib" },
        { 12, 7, 0,     "IPMI SMIC Interface",                  "ipmi" },
        { 12, 7, 1,     "IPMI Keyboard Controller Style Interface", "ipmi" },
        { 12, 7, 2,     "IPMI Block Transfer Interface",        "ipmi" },
        { 12, 8, 0,     "SERCOS Interface Standard",            "sercos" },
        { 12, 9, 0,     "CANbus",                               "canbus" },
        { 12, 10, 0,    "MIPI I3C Host Controller Interface",   "unknown" },
        { 12, 11, 0,    "CXL Fabric Managment Host Interface",  "unknown" },
        { 12, 12, 0,    "Memory Mapped Buffer Interface endpoint", "unknown" },
        { 12, 0x80, 0,  "Serial Bus Controller",                "unknown" },

        { 13, 0, 0,     "IRDA Wireless controller",             "irda" },
        { 13, 1, 0,     "Consumer IR Wireless controller",      "ir" },
        { 13, 1, 0x10,  "UWB Radio  controller",                "ir-uwb" },
        { 13, 0x10, 0,  "RF Wireless controller",               "rf" },
        { 13, 0x11, 0,  "Bluetooth Wireless controller",        "btooth" },
        { 13, 0x12, 0,  "Broadband Wireless controller",        "brdband" },
        { 13, 0x20, 0,  "802.11a Wireless controller",          "802.11a" },
        { 13, 0x21, 0,  "802.11b Wireless controller",          "802.11b" },
        { 13, 0x40, 0,  "Cellular controller/modem",            "unknown" },
        { 13, 0x41, 0,  "Cellular controller/modem w/ ethernet", "unknown" },
        { 13, 0x80, 0,  "Wireless controller",                  "unknown" },

        { 14, 0, 0,     "I2O controller",                       "i2o" },
        { 14, 0, 1,     "I2O Arch Specification 1.0",           "i2o" },

        { 15, 1, 0,     "TV Satellite controller",              "tv" },
        { 15, 2, 0,     "Audio Satellite controller",           "audio" },
        { 15, 3, 0,     "Voice Satellite controller",           "voice" },
        { 15, 4, 0,     "Data Satellite controller",            "data" },
        { 15, 0x80, 0,  "Satellite Comm controller",            "unknown" },

        { 16, 0, 0,     "Network and computing en/decryption",  "netcryp" },
        { 16, 0x10, 0,  "Entertainment en/decryption",          "entcryp" },
        { 16, 0x20, 0,  "Trusted Platform Module",              "tpm" },
        { 16, 0x80, 0,  "En/decryption controller",             "unknown" },

        { 17, 0, 0,     "DPIO modules",                         "dpio" },
        { 17, 1, 0,     "Performance counters",                 "perfcnt" },
        { 17, 0x10, 0,  "Comm Synch time and freq test/measurement", "cstftm" },
        { 17, 0x20, 0,  "Management card",                      "mgmtcrd" },
        { 17, 0x80, 0,  "DSP/DAP controllers",                  "unknown" },

        { 18, 0, 0,     "Processing Accelerator",               "unknown" },
        { 18, 1, 0,     "SNIA Smart Data Acceleration Interface controller",
                "sdxi" },

        { 19, 0, 0,     "Non-essential Instrumentation",        "unknown" },
};

size_t class_pci_items = sizeof (class_pci) / sizeof (class_pci[0]);