PCI patch for 2.3.30-pre5

Martin Mares (mj@suse.cz)
Sat, 4 Dec 1999 14:12:51 +0100


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/