Messages in this thread Patch in this message | | | Date | Sat, 4 Dec 1999 14:12:51 +0100 | From | Martin Mares <> | Subject | PCI patch for 2.3.30-pre5 |
| |
Hi Linus!
Here I send a PCI patch against 2.3.30-pre5.
Changes:
o Updated class list in pci_ids.h. o The list of classes (used in /proc/pci) is now generated automatically from the pci.ids file. o If device class and header type don't match each other, don't ignore the device and just reset the class to `unknown'. (Workaround for bug in recent VIA ACPI chips which report incorrect class ID.) o Updated pci.ids from pciutils 2.1.1.
Have a nice day Martin
--- include/linux/pci.h.mj Sat Dec 4 12:44:39 1999 +++ include/linux/pci.h Sat Dec 4 12:44:39 1999 @@ -450,6 +450,7 @@ int pci_proc_attach_device(struct pci_dev *dev); int pci_proc_detach_device(struct pci_dev *dev); void pci_name_device(struct pci_dev *dev); +char *pci_class_name(u32 class); void pci_read_bridge_bases(struct pci_bus *child); struct resource *pci_find_parent_resource(struct pci_dev *dev, struct resource *res); --- include/linux/pci_ids.h.mj Sat Dec 4 12:21:16 1999 +++ include/linux/pci_ids.h Sat Dec 4 12:22:35 1999 @@ -27,32 +27,37 @@ #define PCI_BASE_CLASS_DISPLAY 0x03 #define PCI_CLASS_DISPLAY_VGA 0x0300 #define PCI_CLASS_DISPLAY_XGA 0x0301 +#define PCI_CLASS_DISPLAY_3D 0x0302 #define PCI_CLASS_DISPLAY_OTHER 0x0380 #define PCI_BASE_CLASS_MULTIMEDIA 0x04 #define PCI_CLASS_MULTIMEDIA_VIDEO 0x0400 #define PCI_CLASS_MULTIMEDIA_AUDIO 0x0401 +#define PCI_CLASS_MULTIMEDIA_PHONE 0x0402 #define PCI_CLASS_MULTIMEDIA_OTHER 0x0480 #define PCI_BASE_CLASS_MEMORY 0x05 -#define PCI_CLASS_MEMORY_RAM 0x0500 -#define PCI_CLASS_MEMORY_FLASH 0x0501 -#define PCI_CLASS_MEMORY_OTHER 0x0580 +#define PCI_CLASS_MEMORY_RAM 0x0500 +#define PCI_CLASS_MEMORY_FLASH 0x0501 +#define PCI_CLASS_MEMORY_OTHER 0x0580 #define PCI_BASE_CLASS_BRIDGE 0x06 -#define PCI_CLASS_BRIDGE_HOST 0x0600 -#define PCI_CLASS_BRIDGE_ISA 0x0601 -#define PCI_CLASS_BRIDGE_EISA 0x0602 -#define PCI_CLASS_BRIDGE_MC 0x0603 -#define PCI_CLASS_BRIDGE_PCI 0x0604 -#define PCI_CLASS_BRIDGE_PCMCIA 0x0605 -#define PCI_CLASS_BRIDGE_NUBUS 0x0606 -#define PCI_CLASS_BRIDGE_CARDBUS 0x0607 -#define PCI_CLASS_BRIDGE_OTHER 0x0680 +#define PCI_CLASS_BRIDGE_HOST 0x0600 +#define PCI_CLASS_BRIDGE_ISA 0x0601 +#define PCI_CLASS_BRIDGE_EISA 0x0602 +#define PCI_CLASS_BRIDGE_MC 0x0603 +#define PCI_CLASS_BRIDGE_PCI 0x0604 +#define PCI_CLASS_BRIDGE_PCMCIA 0x0605 +#define PCI_CLASS_BRIDGE_NUBUS 0x0606 +#define PCI_CLASS_BRIDGE_CARDBUS 0x0607 +#define PCI_CLASS_BRIDGE_RACEWAY 0x0608 +#define PCI_CLASS_BRIDGE_OTHER 0x0680 #define PCI_BASE_CLASS_COMMUNICATION 0x07 #define PCI_CLASS_COMMUNICATION_SERIAL 0x0700 #define PCI_CLASS_COMMUNICATION_PARALLEL 0x0701 +#define PCI_CLASS_COMMUNICATION_MULTISERIAL 0x0702 +#define PCI_CLASS_COMMUNICATION_MODEM 0x0703 #define PCI_CLASS_COMMUNICATION_OTHER 0x0780 #define PCI_BASE_CLASS_SYSTEM 0x08 @@ -60,17 +65,20 @@ #define PCI_CLASS_SYSTEM_DMA 0x0801 #define PCI_CLASS_SYSTEM_TIMER 0x0802 #define PCI_CLASS_SYSTEM_RTC 0x0803 +#define PCI_CLASS_SYSTEM_PCI_HOTPLUG 0x0804 #define PCI_CLASS_SYSTEM_OTHER 0x0880 #define PCI_BASE_CLASS_INPUT 0x09 #define PCI_CLASS_INPUT_KEYBOARD 0x0900 #define PCI_CLASS_INPUT_PEN 0x0901 #define PCI_CLASS_INPUT_MOUSE 0x0902 +#define PCI_CLASS_INPUT_SCANNER 0x0903 +#define PCI_CLASS_INPUT_GAMEPORT 0x0904 #define PCI_CLASS_INPUT_OTHER 0x0980 #define PCI_BASE_CLASS_DOCKING 0x0a #define PCI_CLASS_DOCKING_GENERIC 0x0a00 -#define PCI_CLASS_DOCKING_OTHER 0x0a01 +#define PCI_CLASS_DOCKING_OTHER 0x0a80 #define PCI_BASE_CLASS_PROCESSOR 0x0b #define PCI_CLASS_PROCESSOR_386 0x0b00 @@ -78,6 +86,7 @@ #define PCI_CLASS_PROCESSOR_PENTIUM 0x0b02 #define PCI_CLASS_PROCESSOR_ALPHA 0x0b10 #define PCI_CLASS_PROCESSOR_POWERPC 0x0b20 +#define PCI_CLASS_PROCESSOR_MIPS 0x0b30 #define PCI_CLASS_PROCESSOR_CO 0x0b40 #define PCI_BASE_CLASS_SERIAL 0x0c @@ -86,11 +95,25 @@ #define PCI_CLASS_SERIAL_SSA 0x0c02 #define PCI_CLASS_SERIAL_USB 0x0c03 #define PCI_CLASS_SERIAL_FIBER 0x0c04 +#define PCI_CLASS_SERIAL_SMBUS 0x0c05 #define PCI_BASE_CLASS_INTELLIGENT 0x0e #define PCI_CLASS_INTELLIGENT_I2O 0x0e00 -#define PCI_CLASS_HOT_SWAP_CONTROLLER 0xff00 +#define PCI_BASE_CLASS_SATELLITE 0x0f +#define PCI_CLASS_SATELLITE_TV 0x0f00 +#define PCI_CLASS_SATELLITE_AUDIO 0x0f01 +#define PCI_CLASS_SATELLITE_VOICE 0x0f03 +#define PCI_CLASS_SATELLITE_DATA 0x0f04 + +#define PCI_BASE_CLASS_CRYPT 0x10 +#define PCI_CLASS_CRYPT_NETWORK 0x1000 +#define PCI_CLASS_CRYPT_ENTERTAINMENT 0x1001 +#define PCI_CLASS_CRYPT_OTHER 0x1080 + +#define PCI_BASE_CLASS_SIGNAL_PROCESSING 0x11 +#define PCI_CLASS_SP_DPIO 0x1100 +#define PCI_CLASS_SP_OTHER 0x1180 #define PCI_CLASS_OTHERS 0xff --- drivers/pci/pci.c.mj Sat Dec 4 12:03:08 1999 +++ drivers/pci/pci.c Sat Dec 4 12:03:08 1999 @@ -491,13 +491,16 @@ pci_read_config_word(dev, PCI_CB_SUBSYSTEM_ID, &dev->subsystem_device); break; default: /* unknown header */ - bad: printk(KERN_ERR "PCI: device %s has unknown header type %02x, ignoring.\n", dev->slot_name, hdr_type); continue; + bad: + printk(KERN_ERR "PCI: %s: class %x doesn't match header type %02x. Ignoring class.\n", + dev->slot_name, class, hdr_type); + dev->class = PCI_CLASS_NOT_DEFINED; } - DBG("PCI: %02x:%02x [%04x/%04x]\n", bus->number, dev->devfn, dev->vendor, dev->device); + DBG("PCI: %02x:%02x [%04x/%04x] %06x %02x\n", bus->number, dev->devfn, dev->vendor, dev->device, class, hdr_type); /* * Put it into the global PCI device chain. It's used to --- drivers/pci/proc.c.mj Sat Dec 4 12:26:24 1999 +++ drivers/pci/proc.c Sat Dec 4 12:53:13 1999 @@ -325,84 +325,6 @@ * Backward compatible /proc/pci interface. */ -static const char *pci_strclass (unsigned int class) -{ - switch (class >> 8) { - case PCI_CLASS_NOT_DEFINED: return "Non-VGA device"; - case PCI_CLASS_NOT_DEFINED_VGA: return "VGA compatible device"; - - case PCI_CLASS_STORAGE_SCSI: return "SCSI storage controller"; - case PCI_CLASS_STORAGE_IDE: return "IDE interface"; - case PCI_CLASS_STORAGE_FLOPPY: return "Floppy disk controller"; - case PCI_CLASS_STORAGE_IPI: return "IPI bus controller"; - case PCI_CLASS_STORAGE_RAID: return "RAID bus controller"; - case PCI_CLASS_STORAGE_OTHER: return "Unknown mass storage controller"; - - case PCI_CLASS_NETWORK_ETHERNET: return "Ethernet controller"; - case PCI_CLASS_NETWORK_TOKEN_RING: return "Token ring network controller"; - case PCI_CLASS_NETWORK_FDDI: return "FDDI network controller"; - case PCI_CLASS_NETWORK_ATM: return "ATM network controller"; - case PCI_CLASS_NETWORK_OTHER: return "Network controller"; - - case PCI_CLASS_DISPLAY_VGA: return "VGA compatible controller"; - case PCI_CLASS_DISPLAY_XGA: return "XGA compatible controller"; - case PCI_CLASS_DISPLAY_OTHER: return "Display controller"; - - case PCI_CLASS_MULTIMEDIA_VIDEO: return "Multimedia video controller"; - case PCI_CLASS_MULTIMEDIA_AUDIO: return "Multimedia audio controller"; - case PCI_CLASS_MULTIMEDIA_OTHER: return "Multimedia controller"; - - case PCI_CLASS_MEMORY_RAM: return "RAM memory"; - case PCI_CLASS_MEMORY_FLASH: return "FLASH memory"; - case PCI_CLASS_MEMORY_OTHER: return "Memory"; - - case PCI_CLASS_BRIDGE_HOST: return "Host bridge"; - case PCI_CLASS_BRIDGE_ISA: return "ISA bridge"; - case PCI_CLASS_BRIDGE_EISA: return "EISA bridge"; - case PCI_CLASS_BRIDGE_MC: return "MicroChannel bridge"; - case PCI_CLASS_BRIDGE_PCI: return "PCI bridge"; - case PCI_CLASS_BRIDGE_PCMCIA: return "PCMCIA bridge"; - case PCI_CLASS_BRIDGE_NUBUS: return "NuBus bridge"; - case PCI_CLASS_BRIDGE_CARDBUS: return "CardBus bridge"; - case PCI_CLASS_BRIDGE_OTHER: return "Bridge"; - - case PCI_CLASS_COMMUNICATION_SERIAL: return "Serial controller"; - case PCI_CLASS_COMMUNICATION_PARALLEL: return "Parallel controller"; - case PCI_CLASS_COMMUNICATION_OTHER: return "Communication controller"; - - case PCI_CLASS_SYSTEM_PIC: return "PIC"; - case PCI_CLASS_SYSTEM_DMA: return "DMA controller"; - case PCI_CLASS_SYSTEM_TIMER: return "Timer"; - case PCI_CLASS_SYSTEM_RTC: return "RTC"; - case PCI_CLASS_SYSTEM_OTHER: return "System peripheral"; - - case PCI_CLASS_INPUT_KEYBOARD: return "Keyboard controller"; - case PCI_CLASS_INPUT_PEN: return "Digitizer Pen"; - case PCI_CLASS_INPUT_MOUSE: return "Mouse controller"; - case PCI_CLASS_INPUT_OTHER: return "Input device controller"; - - case PCI_CLASS_DOCKING_GENERIC: return "Generic Docking Station"; - case PCI_CLASS_DOCKING_OTHER: return "Docking Station"; - - case PCI_CLASS_PROCESSOR_386: return "386"; - case PCI_CLASS_PROCESSOR_486: return "486"; - case PCI_CLASS_PROCESSOR_PENTIUM: return "Pentium"; - case PCI_CLASS_PROCESSOR_ALPHA: return "Alpha"; - case PCI_CLASS_PROCESSOR_POWERPC: return "Power PC"; - case PCI_CLASS_PROCESSOR_CO: return "Co-processor"; - - case PCI_CLASS_SERIAL_FIREWIRE: return "FireWire (IEEE 1394)"; - case PCI_CLASS_SERIAL_ACCESS: return "ACCESS Bus"; - case PCI_CLASS_SERIAL_SSA: return "SSA"; - case PCI_CLASS_SERIAL_USB: return "USB Controller"; - case PCI_CLASS_SERIAL_FIBER: return "Fiber Channel"; - - case PCI_CLASS_HOT_SWAP_CONTROLLER: return "Hot Swap Controller"; - - default: return "Unknown class"; - } -} - /* * Convert some of the configuration space registers of the device at * address (bus,devfn) into a string (possibly several lines each). @@ -411,8 +333,8 @@ */ static int sprint_dev_config(struct pci_dev *dev, char *buf, int size) { - unsigned int class_rev; - unsigned char latency, min_gnt, max_lat; + u32 class_rev; + unsigned char latency, min_gnt, max_lat, *class; int reg, len = 0; pci_read_config_dword(dev, PCI_CLASS_REVISION, &class_rev); @@ -423,10 +345,12 @@ return -1; len += sprintf(buf + len, " Bus %2d, device %3d, function %2d:\n", dev->bus->number, PCI_SLOT(dev->devfn), PCI_FUNC(dev->devfn)); - len += sprintf(buf + len, " %s: %s (rev %d).\n", - pci_strclass(class_rev >> 8), - dev->name, - class_rev & 0xff); + class = pci_class_name(class_rev >> 16); + if (class) + len += sprintf(buf+len, " %s", class); + else + len += sprintf(buf+len, " Class %04x", class_rev >> 16); + len += sprintf(buf+len, ": %s (rev %d).\n", dev->name, class_rev & 0xff); if (dev->irq) { if (len + 40 > size) @@ -531,7 +455,7 @@ { if (pci_present()) { proc_bus_pci_dir = proc_mkdir("pci", proc_bus); - create_proc_info_entry("devices",0, proc_bus_pci_dir, + create_proc_info_entry("devices", 0, proc_bus_pci_dir, get_pci_dev_info); proc_bus_pci_add(pci_root); create_proc_read_entry("pci", 0, NULL, pci_read_proc, NULL); --- drivers/pci/gen-devlist.c.mj Sat Dec 4 12:28:24 1999 +++ drivers/pci/gen-devlist.c Sat Dec 4 12:46:55 1999 @@ -1,5 +1,5 @@ /* - * Generate devlist.h from the PCI ID file. + * Generate devlist.h and classlist.h from the PCI ID file. * * (c) 1999 Martin Mares <mj@suse.cz> */ @@ -8,13 +8,13 @@ #include <string.h> static void -pq(char *c) +pq(FILE *f, char *c) { while (*c) { if (*c == '"') - printf("\\\""); + fprintf(f, "\\\""); else - putchar(*c); + fputc(*c, f); c++; } } @@ -24,6 +24,15 @@ { char line[1024], *c, vend[8]; int vendors = 0; + int mode = 0; + FILE *devf, *clsf; + + devf = fopen("devlist.h", "w"); + clsf = fopen("classlist.h", "w"); + if (!devf || !clsf) { + fprintf(stderr, "Cannot create output file!\n"); + return 1; + } while (fgets(line, sizeof(line)-1, stdin)) { if ((c = strchr(line, '\n'))) @@ -31,36 +40,65 @@ if (!line[0] || line[0] == '#') continue; if (line[1] == ' ') { - vend[0] = 0; - continue; + if (line[0] == 'C' && strlen(line) > 4 && line[4] == ' ') { + vend[0] = line[2]; + vend[1] = line[3]; + vend[2] = 0; + mode = 2; + } else goto err; } - if (line[0] == '\t') { - if (vend[0] && strlen(line) > 5 && line[5] == ' ') { - c = line + 5; - while (*c == ' ') - *c++ = 0; - printf("\tDEVICE(%s,%s,\"", vend, line+1); - pq(c); - puts("\")"); + else if (line[0] == '\t') { + if (line[1] == '\t') + continue; + switch (mode) { + case 1: + if (strlen(line) > 5 && line[5] == ' ') { + c = line + 5; + while (*c == ' ') + *c++ = 0; + fprintf(devf, "\tDEVICE(%s,%s,\"", vend, line+1); + pq(devf, c); + fputs("\")\n", devf); + } else goto err; + break; + case 2: + if (strlen(line) > 3 && line[3] == ' ') { + c = line + 3; + while (*c == ' ') + *c++ = 0; + fprintf(clsf, "CLASS(%s%s, \"%s\")\n", vend, line+1, c); + } else goto err; + break; + default: + goto err; } } else if (strlen(line) > 4 && line[4] == ' ') { c = line + 4; while (*c == ' ') *c++ = 0; if (vendors) - puts("ENDVENDOR()\n"); + fputs("ENDVENDOR()\n\n", devf); vendors++; strcpy(vend, line); - printf("VENDOR(%s,\"", vend); - pq(c); - puts("\")"); + fprintf(devf, "VENDOR(%s,\"", vend); + pq(devf, c); + fputs("\")\n", devf); + mode = 1; + } else { + err: + fprintf(stderr, "Syntax error in mode %d: %s\n", mode, line); + return 1; } } - puts("ENDVENDOR()\n\ + fputs("ENDVENDOR()\n\ \n\ #undef VENDOR\n\ #undef DEVICE\n\ -#undef ENDVENDOR"); +#undef ENDVENDOR\n", devf); + fputs("\n#undef CLASS", clsf); + + fclose(devf); + fclose(clsf); return 0; } --- drivers/pci/Makefile.mj Sat Dec 4 12:42:52 1999 +++ drivers/pci/Makefile Sat Dec 4 12:42:52 1999 @@ -33,10 +33,10 @@ include $(TOPDIR)/Rules.make -names.o: names.c devlist.h +names.o: names.c devlist.h classlist.h -devlist.h: pci.ids gen-devlist - ./gen-devlist <pci.ids >devlist.h +devlist.h classlist.h: pci.ids gen-devlist + ./gen-devlist <pci.ids gen-devlist: gen-devlist.c $(HOSTCC) $(HOSTCFLAGS) -o gen-devlist gen-devlist.c --- drivers/pci/pci.ids.mj Sat Dec 4 14:02:25 1999 +++ drivers/pci/pci.ids Sat Dec 4 14:02:30 1999 @@ -4,7 +4,7 @@ # Maintained by Martin Mares <pci-ids@ucw.cz> # If you have any new entries, send them to the maintainer. # -# $Id: pci.ids,v 1.41 1999/10/30 09:25:10 mj Exp $ +# $Id: pci.ids,v 1.43 1999/12/04 12:32:55 mj Exp $ # # Vendors, devices and subsystems. Please keep sorted. @@ -221,6 +221,7 @@ 1113 1207 EN-1207-TX Fast Ethernet 1109 2400 ANA-6944A/TX Fast Ethernet 1186 1100 DFE-500TX Fast Ethernet + 1186 1112 DFE-570TX Fast Ethernet 1282 9100 AEF-380TXD Fast Ethernet 2646 0001 KNE100TX Fast Ethernet 000a 21230 Video Codec @@ -649,9 +650,12 @@ 1092 0157 FIRE GL 1000 PRO 1097 3d01 Jeronimo Pro 3d3d 0100 Reference Permedia 2 3D - 8000 LYNX FireWire Host Controller + 8000 PCILynx/PCILynx2 IEEE 1394 Link Layer Controller + e4bf 1010 CF1-1-SNARE + e4bf 1020 CF1-2-SNARE 8009 OHCI Compliant FireWire Controller 8019 TSB12LV23 OHCI Compliant IEEE-1394 Controller + e4bf 1010 CF2-1-CYMBAL a001 TDC1570 a100 TDC1561 ac10 PCI1050 @@ -671,6 +675,7 @@ fe00 FireWire Host Controller fe03 12C01A FireWire Host Controller 104d Sony Corporation + 8039 CXD3222 iLINK Controller 104e Oak Technology, Inc 0017 OTI-64017 0107 OTI-107 [Spitfire] @@ -1236,6 +1241,8 @@ 1683 IGA-1683 2000 CyberPro 2000 2010 CyberPro 2000A + 5000 CyberPro 5000 + 5050 CyberPro 5050 10eb Artists Graphics 0101 3GA 8111 Twist3 Frame Grabber @@ -1483,7 +1490,7 @@ 112e Infomedia Microelectronics Inc. 112f Imaging Technology Inc 0000 MVC IC-PCI - 0001 Video frame grabber/processor + 0001 MVC IM-PCI Video frame grabber/processor 1130 Computervision 1131 Philips Semiconductors 7145 SAA7145 @@ -2202,6 +2209,7 @@ 1280 Photoscript Group Ltd. 1281 Yokogawa Electric Corporation 1282 Davicom Semiconductor, Inc. + 9102 Ethernet 100/10 MBit 1283 Integrated Technology Express, Inc. 673a IT8330G 8330 IT8330G @@ -2271,6 +2279,7 @@ 12b8 Korg 12b9 US Robotics/3Com 1006 WinModem + 1008 56K FaxModem Model 5610 12ba PMC Sierra 12bb Nippon Unisoft Corporation 12bc Array Microsystems @@ -2286,6 +2295,7 @@ 12c4 Connect Tech Inc 12c5 Picture Elements Incorporated 0081 PCIVST [Grayscale Thresholding Engine] + 0086 THR2 Thresholder 12c6 Mitani Corporation 12c7 Dialogic Corp 12c8 G Force Co, Ltd @@ -2436,22 +2446,40 @@ 131d Sysmic, Inc. 131e Xinex Networks Inc 131f Siig Inc + 1000 CyberSerial (1-port) 16550 + 1001 CyberSerial (1-port) 16650 + 1002 CyberSerial (1-port) 16850 1010 Duet 1S(16550)+1P 1011 Duet 1S(16650)+1P 1012 Duet 1S(16850)+1P 1020 CyberParallel (1-port) 1021 CyberParallel (2-port) + 1030 CyberSerial (2-port) 16550 + 1031 CyberSerial (2-port) 16650 + 1032 CyberSerial (2-port) 16850 1034 Trio 2S(16550)+1P 1035 Trio 2S(16650)+1P 1036 Trio 2S(16850)+1P + 1050 CyberSerial (4-port) 16550 + 1051 CyberSerial (4-port) 16650 + 1052 CyberSerial (4-port) 16850 + 2000 CyberSerial (1-port) 16550 + 2001 CyberSerial (1-port) 16650 + 2002 CyberSerial (1-port) 16850 2010 Duet 1S(16550)+1P 2011 Duet 1S(16650)+1P 2012 Duet 1S(16850)+1P 2020 CyberParallel (1-port) 2021 CyberParallel (2-port) + 2030 CyberSerial (2-port) 16550 + 2031 CyberSerial (2-port) 16650 + 2032 CyberSerial (2-port) 16850 2040 Trio 1S(16550)+2P 2041 Trio 1S(16650)+2P 2042 Trio 1S(16850)+2P + 2050 CyberSerial (4-port) 16550 + 2051 CyberSerial (4-port) 16650 + 2052 CyberSerial (4-port) 16850 2060 Trio 2S(16550)+1P 2061 Trio 2S(16650)+1P 2062 Trio 2S(16850)+1P @@ -2572,7 +2600,9 @@ 1395 Ambicom Inc 1396 Cipher Systems Inc 1397 Cologne Chip Designs GmbH - 2bd0 ISDN network controller + 2bd0 ISDN network controller [HFC-PCI] + 1397 2bd0 ISDN Board + e4bf 1000 CI1-1-Harp 1398 Clarion co. Ltd 1399 Rios systems Co Ltd 139a Alacritech Inc @@ -2705,6 +2735,7 @@ 1410 Midas lab Inc 1411 Ikos Systems Inc 1412 IC Ensemble Inc + 1712 ICE1712 [Envy24] 1413 Addonics 1414 Microsoft Corporation 1415 Oxford Semiconductor Ltd @@ -2969,7 +3000,10 @@ 1517 ECHOTEK Corp 1518 PEP MODULAR Computers GmbH 1519 TELEFON AKTIEBOLAGET LM Ericsson -151a GLOBETEK Inc +151a Globetek + 1002 PCI-1002 + 1004 PCI-1004 + 1008 PCI-1008 151b COMBOX Ltd 151c DIGITAL AUDIO LABS Inc 151d Fujitsu Computer Products Of America @@ -3310,6 +3344,11 @@ 103c 10C7 MegaRaid T5 1111 1111 MegaRaid 466 113c 03A2 MegaRaid + 2410 82801 82810 Chipset ISA Bridge (LPC) + 2411 82801 82810 Chipset IDE + 2412 82801 82810 Chipset USB + 2413 82801 82810 Chipset SMBus + 2418 82801 82810 PCI Bridge 5200 EtherExpress PRO/100 5201 EtherExpress PRO/100 7000 82371SB PIIX3 ISA [Natoma/Triton II] @@ -3485,6 +3524,7 @@ 0001 Model 300 128k 0059 0001 128k ISDN-S/T Adapter 0059 0003 128k ISDN-U Adapter +e4bf EKF Elektronik GmbH eabb Aashima Technology B.V. ecc0 Echo Corporation edd8 ARK Logic Inc --- drivers/pci/names.c.mj Sat Dec 4 12:46:38 1999 +++ drivers/pci/names.c Sat Dec 4 12:48:04 1999 @@ -1,9 +1,7 @@ /* - * $Id: oldproc.c,v 1.24 1998/10/11 15:13:04 mj Exp $ + * PCI Class and Device Name Tables * - * Backward-compatible procfs interface for PCI. - * - * Copyright 1993, 1994, 1995, 1997 Drew Eckhardt, Frederic Potter, + * Copyright 1993--1999 Drew Eckhardt, Frederic Potter, * David Mosberger-Tang, Martin Mares */ @@ -91,4 +89,29 @@ sprintf(n, " (#%d)", nr); } } +} + +/* + * Class names. Not in .init section as they are needed in runtime. + */ + +static u16 pci_class_numbers[] = { +#define CLASS(x,y) 0x##x, +#include "classlist.h" +}; + +static char *pci_class_names[] = { +#define CLASS(x,y) y, +#include "classlist.h" +}; + +char * +pci_class_name(u32 class) +{ + int i; + + for(i=0; i<sizeof(pci_class_numbers)/sizeof(pci_class_numbers[0]); i++) + if (pci_class_numbers[i] == class) + return pci_class_names[i]; + return NULL; } --- Makefile.mj Sat Dec 4 12:28:33 1999 +++ Makefile Sat Dec 4 12:28:33 1999 @@ -396,7 +396,7 @@ rm -f .tmp* rm -f drivers/char/consolemap_deftbl.c drivers/video/promcon_tbl.c rm -f drivers/char/conmakehash - rm -f drivers/pci/devlist.h drivers/pci/gen-devlist + rm -f drivers/pci/devlist.h drivers/pci/classlist.h drivers/pci/gen-devlist rm -f drivers/sound/bin2hex drivers/sound/hex2hex rm -f net/khttpd/make_times_h rm -f net/khttpd/times.h - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |