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