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]);