summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKay Sievers <kay@vrfy.org>2012-11-09 14:29:10 +0100
committerKay Sievers <kay@vrfy.org>2012-11-09 14:29:10 +0100
commitcf7ebcea78223b95b2676b97e1d2aad16caa3c86 (patch)
tree0e6601476eeb42b645e1f1017bc4e7ba4948bba4
parenta660c63c551b88136ac6176855b5907cc533e848 (diff)
udev: hwdb - add pci class descriptions
-rw-r--r--Makefile.am1
-rw-r--r--hwdb/20-pci-classes.hwdb531
-rw-r--r--hwdb/20-pci-vendor-product.hwdb3
-rwxr-xr-xhwdb/ids-update.pl252
4 files changed, 695 insertions, 92 deletions
diff --git a/Makefile.am b/Makefile.am
index 6e07a169ca..27b505f9d1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1798,6 +1798,7 @@ dist_udevrules_DATA += \
dist_udevhwdb_DATA = \
hwdb/20-pci-vendor-product.hwdb \
+ hwdb/20-pci-classes.hwdb \
hwdb/20-usb-vendor-product.hwdb \
hwdb/20-acpi-vendor.hwdb \
hwdb/20-OUI.hwdb
diff --git a/hwdb/20-pci-classes.hwdb b/hwdb/20-pci-classes.hwdb
new file mode 100644
index 0000000000..fc086a5b5c
--- /dev/null
+++ b/hwdb/20-pci-classes.hwdb
@@ -0,0 +1,531 @@
+# This file is part of systemd.
+#
+# Data imported and updated from: http://pciids.sourceforge.net/v2.2/pci.ids
+
+pci:v*d*sv*sd*bc00*
+ ID_PCI_CLASS_FROM_DATABASE=Unclassified device
+
+pci:v*d*sv*sd*bc00sc00*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Non-VGA unclassified device
+
+pci:v*d*sv*sd*bc00sc01*
+ ID_PCI_SUBCLASS_FROM_DATABASE=VGA compatible unclassified device
+
+pci:v*d*sv*sd*bc01*
+ ID_PCI_CLASS_FROM_DATABASE=Mass storage controller
+
+pci:v*d*sv*sd*bc01sc00*
+ ID_PCI_SUBCLASS_FROM_DATABASE=SCSI storage controller
+
+pci:v*d*sv*sd*bc01sc01*
+ ID_PCI_SUBCLASS_FROM_DATABASE=IDE interface
+
+pci:v*d*sv*sd*bc01sc02*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Floppy disk controller
+
+pci:v*d*sv*sd*bc01sc03*
+ ID_PCI_SUBCLASS_FROM_DATABASE=IPI bus controller
+
+pci:v*d*sv*sd*bc01sc04*
+ ID_PCI_SUBCLASS_FROM_DATABASE=RAID bus controller
+
+pci:v*d*sv*sd*bc01sc05*
+ ID_PCI_SUBCLASS_FROM_DATABASE=ATA controller
+
+pci:v*d*sv*sd*bc01sc05i20*
+ ID_PCI_INTERFACE_FROM_DATABASE=ADMA single stepping
+
+pci:v*d*sv*sd*bc01sc05i30*
+ ID_PCI_INTERFACE_FROM_DATABASE=ADMA continuous operation
+
+pci:v*d*sv*sd*bc01sc06*
+ ID_PCI_SUBCLASS_FROM_DATABASE=SATA controller
+
+pci:v*d*sv*sd*bc01sc06i00*
+ ID_PCI_INTERFACE_FROM_DATABASE=Vendor specific
+
+pci:v*d*sv*sd*bc01sc06i01*
+ ID_PCI_INTERFACE_FROM_DATABASE=AHCI 1.0
+
+pci:v*d*sv*sd*bc01sc07*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Serial Attached SCSI controller
+
+pci:v*d*sv*sd*bc01sc08*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Non-Volatile memory controller
+
+pci:v*d*sv*sd*bc01sc80*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Mass storage controller
+
+pci:v*d*sv*sd*bc02*
+ ID_PCI_CLASS_FROM_DATABASE=Network controller
+
+pci:v*d*sv*sd*bc02sc00*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
+
+pci:v*d*sv*sd*bc02sc01*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Token ring network controller
+
+pci:v*d*sv*sd*bc02sc02*
+ ID_PCI_SUBCLASS_FROM_DATABASE=FDDI network controller
+
+pci:v*d*sv*sd*bc02sc03*
+ ID_PCI_SUBCLASS_FROM_DATABASE=ATM network controller
+
+pci:v*d*sv*sd*bc02sc04*
+ ID_PCI_SUBCLASS_FROM_DATABASE=ISDN controller
+
+pci:v*d*sv*sd*bc02sc05*
+ ID_PCI_SUBCLASS_FROM_DATABASE=WorldFip controller
+
+pci:v*d*sv*sd*bc02sc06*
+ ID_PCI_SUBCLASS_FROM_DATABASE=PICMG controller
+
+pci:v*d*sv*sd*bc02sc80*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Network controller
+
+pci:v*d*sv*sd*bc03*
+ ID_PCI_CLASS_FROM_DATABASE=Display controller
+
+pci:v*d*sv*sd*bc03sc00*
+ ID_PCI_SUBCLASS_FROM_DATABASE=VGA compatible controller
+
+pci:v*d*sv*sd*bc03sc00i00*
+ ID_PCI_INTERFACE_FROM_DATABASE=VGA controller
+
+pci:v*d*sv*sd*bc03sc00i01*
+ ID_PCI_INTERFACE_FROM_DATABASE=8514 controller
+
+pci:v*d*sv*sd*bc03sc01*
+ ID_PCI_SUBCLASS_FROM_DATABASE=XGA compatible controller
+
+pci:v*d*sv*sd*bc03sc02*
+ ID_PCI_SUBCLASS_FROM_DATABASE=3D controller
+
+pci:v*d*sv*sd*bc03sc80*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Display controller
+
+pci:v*d*sv*sd*bc04*
+ ID_PCI_CLASS_FROM_DATABASE=Multimedia controller
+
+pci:v*d*sv*sd*bc04sc00*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Multimedia video controller
+
+pci:v*d*sv*sd*bc04sc01*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Multimedia audio controller
+
+pci:v*d*sv*sd*bc04sc02*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Computer telephony device
+
+pci:v*d*sv*sd*bc04sc03*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Audio device
+
+pci:v*d*sv*sd*bc04sc80*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Multimedia controller
+
+pci:v*d*sv*sd*bc05*
+ ID_PCI_CLASS_FROM_DATABASE=Memory controller
+
+pci:v*d*sv*sd*bc05sc00*
+ ID_PCI_SUBCLASS_FROM_DATABASE=RAM memory
+
+pci:v*d*sv*sd*bc05sc01*
+ ID_PCI_SUBCLASS_FROM_DATABASE=FLASH memory
+
+pci:v*d*sv*sd*bc05sc80*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Memory controller
+
+pci:v*d*sv*sd*bc06*
+ ID_PCI_CLASS_FROM_DATABASE=Bridge
+
+pci:v*d*sv*sd*bc06sc00*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Host bridge
+
+pci:v*d*sv*sd*bc06sc01*
+ ID_PCI_SUBCLASS_FROM_DATABASE=ISA bridge
+
+pci:v*d*sv*sd*bc06sc02*
+ ID_PCI_SUBCLASS_FROM_DATABASE=EISA bridge
+
+pci:v*d*sv*sd*bc06sc03*
+ ID_PCI_SUBCLASS_FROM_DATABASE=MicroChannel bridge
+
+pci:v*d*sv*sd*bc06sc04*
+ ID_PCI_SUBCLASS_FROM_DATABASE=PCI bridge
+
+pci:v*d*sv*sd*bc06sc04i00*
+ ID_PCI_INTERFACE_FROM_DATABASE=Normal decode
+
+pci:v*d*sv*sd*bc06sc04i01*
+ ID_PCI_INTERFACE_FROM_DATABASE=Subtractive decode
+
+pci:v*d*sv*sd*bc06sc05*
+ ID_PCI_SUBCLASS_FROM_DATABASE=PCMCIA bridge
+
+pci:v*d*sv*sd*bc06sc06*
+ ID_PCI_SUBCLASS_FROM_DATABASE=NuBus bridge
+
+pci:v*d*sv*sd*bc06sc07*
+ ID_PCI_SUBCLASS_FROM_DATABASE=CardBus bridge
+
+pci:v*d*sv*sd*bc06sc08*
+ ID_PCI_SUBCLASS_FROM_DATABASE=RACEway bridge
+
+pci:v*d*sv*sd*bc06sc08i00*
+ ID_PCI_INTERFACE_FROM_DATABASE=Transparent mode
+
+pci:v*d*sv*sd*bc06sc08i01*
+ ID_PCI_INTERFACE_FROM_DATABASE=Endpoint mode
+
+pci:v*d*sv*sd*bc06sc09*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Semi-transparent PCI-to-PCI bridge
+
+pci:v*d*sv*sd*bc06sc09i40*
+ ID_PCI_INTERFACE_FROM_DATABASE=Primary bus towards host CPU
+
+pci:v*d*sv*sd*bc06sc09i80*
+ ID_PCI_INTERFACE_FROM_DATABASE=Secondary bus towards host CPU
+
+pci:v*d*sv*sd*bc06sc0A*
+ ID_PCI_SUBCLASS_FROM_DATABASE=InfiniBand to PCI host bridge
+
+pci:v*d*sv*sd*bc06sc80*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Bridge
+
+pci:v*d*sv*sd*bc07*
+ ID_PCI_CLASS_FROM_DATABASE=Communication controller
+
+pci:v*d*sv*sd*bc07sc00*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Serial controller
+
+pci:v*d*sv*sd*bc07sc00i00*
+ ID_PCI_INTERFACE_FROM_DATABASE=8250
+
+pci:v*d*sv*sd*bc07sc00i01*
+ ID_PCI_INTERFACE_FROM_DATABASE=16450
+
+pci:v*d*sv*sd*bc07sc00i02*
+ ID_PCI_INTERFACE_FROM_DATABASE=16550
+
+pci:v*d*sv*sd*bc07sc00i03*
+ ID_PCI_INTERFACE_FROM_DATABASE=16650
+
+pci:v*d*sv*sd*bc07sc00i04*
+ ID_PCI_INTERFACE_FROM_DATABASE=16750
+
+pci:v*d*sv*sd*bc07sc00i05*
+ ID_PCI_INTERFACE_FROM_DATABASE=16850
+
+pci:v*d*sv*sd*bc07sc00i06*
+ ID_PCI_INTERFACE_FROM_DATABASE=16950
+
+pci:v*d*sv*sd*bc07sc01*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Parallel controller
+
+pci:v*d*sv*sd*bc07sc01i00*
+ ID_PCI_INTERFACE_FROM_DATABASE=SPP
+
+pci:v*d*sv*sd*bc07sc01i01*
+ ID_PCI_INTERFACE_FROM_DATABASE=BiDir
+
+pci:v*d*sv*sd*bc07sc01i02*
+ ID_PCI_INTERFACE_FROM_DATABASE=ECP
+
+pci:v*d*sv*sd*bc07sc01i03*
+ ID_PCI_INTERFACE_FROM_DATABASE=IEEE1284
+
+pci:v*d*sv*sd*bc07sc01iFE*
+ ID_PCI_INTERFACE_FROM_DATABASE=IEEE1284 Target
+
+pci:v*d*sv*sd*bc07sc02*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Multiport serial controller
+
+pci:v*d*sv*sd*bc07sc03*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Modem
+
+pci:v*d*sv*sd*bc07sc03i00*
+ ID_PCI_INTERFACE_FROM_DATABASE=Generic
+
+pci:v*d*sv*sd*bc07sc03i01*
+ ID_PCI_INTERFACE_FROM_DATABASE=Hayes/16450
+
+pci:v*d*sv*sd*bc07sc03i02*
+ ID_PCI_INTERFACE_FROM_DATABASE=Hayes/16550
+
+pci:v*d*sv*sd*bc07sc03i03*
+ ID_PCI_INTERFACE_FROM_DATABASE=Hayes/16650
+
+pci:v*d*sv*sd*bc07sc03i04*
+ ID_PCI_INTERFACE_FROM_DATABASE=Hayes/16750
+
+pci:v*d*sv*sd*bc07sc04*
+ ID_PCI_SUBCLASS_FROM_DATABASE=GPIB controller
+
+pci:v*d*sv*sd*bc07sc05*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Smard Card controller
+
+pci:v*d*sv*sd*bc07sc80*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Communication controller
+
+pci:v*d*sv*sd*bc08*
+ ID_PCI_CLASS_FROM_DATABASE=Generic system peripheral
+
+pci:v*d*sv*sd*bc08sc00*
+ ID_PCI_SUBCLASS_FROM_DATABASE=PIC
+
+pci:v*d*sv*sd*bc08sc00i00*
+ ID_PCI_INTERFACE_FROM_DATABASE=8259
+
+pci:v*d*sv*sd*bc08sc00i01*
+ ID_PCI_INTERFACE_FROM_DATABASE=ISA PIC
+
+pci:v*d*sv*sd*bc08sc00i02*
+ ID_PCI_INTERFACE_FROM_DATABASE=EISA PIC
+
+pci:v*d*sv*sd*bc08sc00i10*
+ ID_PCI_INTERFACE_FROM_DATABASE=IO-APIC
+
+pci:v*d*sv*sd*bc08sc00i20*
+ ID_PCI_INTERFACE_FROM_DATABASE=IO(X)-APIC
+
+pci:v*d*sv*sd*bc08sc01*
+ ID_PCI_SUBCLASS_FROM_DATABASE=DMA controller
+
+pci:v*d*sv*sd*bc08sc01i00*
+ ID_PCI_INTERFACE_FROM_DATABASE=8237
+
+pci:v*d*sv*sd*bc08sc01i01*
+ ID_PCI_INTERFACE_FROM_DATABASE=ISA DMA
+
+pci:v*d*sv*sd*bc08sc01i02*
+ ID_PCI_INTERFACE_FROM_DATABASE=EISA DMA
+
+pci:v*d*sv*sd*bc08sc02*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Timer
+
+pci:v*d*sv*sd*bc08sc02i00*
+ ID_PCI_INTERFACE_FROM_DATABASE=8254
+
+pci:v*d*sv*sd*bc08sc02i01*
+ ID_PCI_INTERFACE_FROM_DATABASE=ISA Timer
+
+pci:v*d*sv*sd*bc08sc02i02*
+ ID_PCI_INTERFACE_FROM_DATABASE=EISA Timers
+
+pci:v*d*sv*sd*bc08sc03*
+ ID_PCI_SUBCLASS_FROM_DATABASE=RTC
+
+pci:v*d*sv*sd*bc08sc03i00*
+ ID_PCI_INTERFACE_FROM_DATABASE=Generic
+
+pci:v*d*sv*sd*bc08sc03i01*
+ ID_PCI_INTERFACE_FROM_DATABASE=ISA RTC
+
+pci:v*d*sv*sd*bc08sc04*
+ ID_PCI_SUBCLASS_FROM_DATABASE=PCI Hot-plug controller
+
+pci:v*d*sv*sd*bc08sc05*
+ ID_PCI_SUBCLASS_FROM_DATABASE=SD Host controller
+
+pci:v*d*sv*sd*bc08sc06*
+ ID_PCI_SUBCLASS_FROM_DATABASE=IOMMU
+
+pci:v*d*sv*sd*bc08sc80*
+ ID_PCI_SUBCLASS_FROM_DATABASE=System peripheral
+
+pci:v*d*sv*sd*bc09*
+ ID_PCI_CLASS_FROM_DATABASE=Input device controller
+
+pci:v*d*sv*sd*bc09sc00*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Keyboard controller
+
+pci:v*d*sv*sd*bc09sc01*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Digitizer Pen
+
+pci:v*d*sv*sd*bc09sc02*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Mouse controller
+
+pci:v*d*sv*sd*bc09sc03*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Scanner controller
+
+pci:v*d*sv*sd*bc09sc04*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Gameport controller
+
+pci:v*d*sv*sd*bc09sc04i00*
+ ID_PCI_INTERFACE_FROM_DATABASE=Generic
+
+pci:v*d*sv*sd*bc09sc04i10*
+ ID_PCI_INTERFACE_FROM_DATABASE=Extended
+
+pci:v*d*sv*sd*bc09sc80*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Input device controller
+
+pci:v*d*sv*sd*bc0A*
+ ID_PCI_CLASS_FROM_DATABASE=Docking station
+
+pci:v*d*sv*sd*bc0Asc00*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Generic Docking Station
+
+pci:v*d*sv*sd*bc0Asc80*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Docking Station
+
+pci:v*d*sv*sd*bc0B*
+ ID_PCI_CLASS_FROM_DATABASE=Processor
+
+pci:v*d*sv*sd*bc0Bsc00*
+ ID_PCI_SUBCLASS_FROM_DATABASE=386
+
+pci:v*d*sv*sd*bc0Bsc01*
+ ID_PCI_SUBCLASS_FROM_DATABASE=486
+
+pci:v*d*sv*sd*bc0Bsc02*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Pentium
+
+pci:v*d*sv*sd*bc0Bsc10*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Alpha
+
+pci:v*d*sv*sd*bc0Bsc20*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Power PC
+
+pci:v*d*sv*sd*bc0Bsc30*
+ ID_PCI_SUBCLASS_FROM_DATABASE=MIPS
+
+pci:v*d*sv*sd*bc0Bsc40*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Co-processor
+
+pci:v*d*sv*sd*bc0C*
+ ID_PCI_CLASS_FROM_DATABASE=Serial bus controller
+
+pci:v*d*sv*sd*bc0Csc00*
+ ID_PCI_SUBCLASS_FROM_DATABASE=FireWire (IEEE 1394)
+
+pci:v*d*sv*sd*bc0Csc00i00*
+ ID_PCI_INTERFACE_FROM_DATABASE=Generic
+
+pci:v*d*sv*sd*bc0Csc00i10*
+ ID_PCI_INTERFACE_FROM_DATABASE=OHCI
+
+pci:v*d*sv*sd*bc0Csc01*
+ ID_PCI_SUBCLASS_FROM_DATABASE=ACCESS Bus
+
+pci:v*d*sv*sd*bc0Csc02*
+ ID_PCI_SUBCLASS_FROM_DATABASE=SSA
+
+pci:v*d*sv*sd*bc0Csc03*
+ ID_PCI_SUBCLASS_FROM_DATABASE=USB controller
+
+pci:v*d*sv*sd*bc0Csc03i00*
+ ID_PCI_INTERFACE_FROM_DATABASE=UHCI
+
+pci:v*d*sv*sd*bc0Csc03i10*
+ ID_PCI_INTERFACE_FROM_DATABASE=OHCI
+
+pci:v*d*sv*sd*bc0Csc03i20*
+ ID_PCI_INTERFACE_FROM_DATABASE=EHCI
+
+pci:v*d*sv*sd*bc0Csc03i30*
+ ID_PCI_INTERFACE_FROM_DATABASE=XHCI
+
+pci:v*d*sv*sd*bc0Csc03i80*
+ ID_PCI_INTERFACE_FROM_DATABASE=Unspecified
+
+pci:v*d*sv*sd*bc0Csc03iFE*
+ ID_PCI_INTERFACE_FROM_DATABASE=USB Device
+
+pci:v*d*sv*sd*bc0Csc04*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Fibre Channel
+
+pci:v*d*sv*sd*bc0Csc05*
+ ID_PCI_SUBCLASS_FROM_DATABASE=SMBus
+
+pci:v*d*sv*sd*bc0Csc06*
+ ID_PCI_SUBCLASS_FROM_DATABASE=InfiniBand
+
+pci:v*d*sv*sd*bc0Csc07*
+ ID_PCI_SUBCLASS_FROM_DATABASE=IPMI SMIC interface
+
+pci:v*d*sv*sd*bc0Csc08*
+ ID_PCI_SUBCLASS_FROM_DATABASE=SERCOS interface
+
+pci:v*d*sv*sd*bc0Csc09*
+ ID_PCI_SUBCLASS_FROM_DATABASE=CANBUS
+
+pci:v*d*sv*sd*bc0D*
+ ID_PCI_CLASS_FROM_DATABASE=Wireless controller
+
+pci:v*d*sv*sd*bc0Dsc00*
+ ID_PCI_SUBCLASS_FROM_DATABASE=IRDA controller
+
+pci:v*d*sv*sd*bc0Dsc01*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Consumer IR controller
+
+pci:v*d*sv*sd*bc0Dsc10*
+ ID_PCI_SUBCLASS_FROM_DATABASE=RF controller
+
+pci:v*d*sv*sd*bc0Dsc11*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Bluetooth
+
+pci:v*d*sv*sd*bc0Dsc12*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Broadband
+
+pci:v*d*sv*sd*bc0Dsc20*
+ ID_PCI_SUBCLASS_FROM_DATABASE=802.1a controller
+
+pci:v*d*sv*sd*bc0Dsc21*
+ ID_PCI_SUBCLASS_FROM_DATABASE=802.1b controller
+
+pci:v*d*sv*sd*bc0Dsc80*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Wireless controller
+
+pci:v*d*sv*sd*bc0E*
+ ID_PCI_CLASS_FROM_DATABASE=Intelligent controller
+
+pci:v*d*sv*sd*bc0Esc00*
+ ID_PCI_SUBCLASS_FROM_DATABASE=I2O
+
+pci:v*d*sv*sd*bc0F*
+ ID_PCI_CLASS_FROM_DATABASE=Satellite communications controller
+
+pci:v*d*sv*sd*bc0Fsc01*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Satellite TV controller
+
+pci:v*d*sv*sd*bc0Fsc02*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Satellite audio communication controller
+
+pci:v*d*sv*sd*bc0Fsc03*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Satellite voice communication controller
+
+pci:v*d*sv*sd*bc0Fsc04*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Satellite data communication controller
+
+pci:v*d*sv*sd*bc10*
+ ID_PCI_CLASS_FROM_DATABASE=Encryption controller
+
+pci:v*d*sv*sd*bc10sc00*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Network and computing encryption device
+
+pci:v*d*sv*sd*bc10sc10*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Entertainment encryption device
+
+pci:v*d*sv*sd*bc10sc80*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Encryption controller
+
+pci:v*d*sv*sd*bc11*
+ ID_PCI_CLASS_FROM_DATABASE=Signal processing controller
+
+pci:v*d*sv*sd*bc11sc00*
+ ID_PCI_SUBCLASS_FROM_DATABASE=DPIO module
+
+pci:v*d*sv*sd*bc11sc01*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Performance counters
+
+pci:v*d*sv*sd*bc11sc10*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Communication synchronizer
+
+pci:v*d*sv*sd*bc11sc20*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Signal processing management
+
+pci:v*d*sv*sd*bc11sc80*
+ ID_PCI_SUBCLASS_FROM_DATABASE=Signal processing controller
+
+pci:v*d*sv*sd*bcFF*
+ ID_PCI_CLASS_FROM_DATABASE=Unassigned class
diff --git a/hwdb/20-pci-vendor-product.hwdb b/hwdb/20-pci-vendor-product.hwdb
index 3d6f305922..19c178565b 100644
--- a/hwdb/20-pci-vendor-product.hwdb
+++ b/hwdb/20-pci-vendor-product.hwdb
@@ -48248,6 +48248,9 @@ pci:v00008086d00000C7E*
pci:v00008086d00000C7F*
ID_PRODUCT_FROM_DATABASE=Centerton Internal Fabric
+pci:v00008086d00000D0C*
+ ID_PRODUCT_FROM_DATABASE=Crystal Well HD Audio Controller
+
pci:v00008086d00000E00*
ID_PRODUCT_FROM_DATABASE=Ivytown DMI2
diff --git a/hwdb/ids-update.pl b/hwdb/ids-update.pl
index b23224a91c..d51f2208f7 100755
--- a/hwdb/ids-update.pl
+++ b/hwdb/ids-update.pl
@@ -3,98 +3,166 @@
use strict;
use warnings;
-my $vendor;
-
-open(IN, "<", "usb.ids");
-open(OUT, ">", "20-usb-vendor-product.hwdb");
-print(OUT "# This file is part of systemd.\n" .
- "#\n" .
- "# Data imported and updated from: http://www.linux-usb.org/usb.ids\n");
-
-while (my $line = <IN>) {
- $line =~ s/\s+$//;
- $line =~ m/^([0-9a-f]{4})\s*(.*)$/;
- if (defined $1) {
- $vendor = uc $1;
- my $text = $2;
- print(OUT "\n");
- print(OUT "usb:v" . $vendor . "*\n");
- print(OUT " ID_VENDOR_FROM_DATABASE=" . $text . "\n");
- next;
- }
-
- $line =~ m/^\t([0-9a-f]{4})\s*(.*)$/;
- if (defined $1) {
- my $product = uc $1;
- my $text = $2;
- print(OUT "\n");
- print(OUT "usb:v" . $vendor . "p" . $product . "*\n");
- print(OUT " ID_PRODUCT_FROM_DATABASE=" . $text . "\n");
- }
+sub usb_vendor {
+ my $vendor;
+
+ open(IN, "<", "usb.ids");
+ open(OUT, ">", "20-usb-vendor-product.hwdb");
+ print(OUT "# This file is part of systemd.\n" .
+ "#\n" .
+ "# Data imported and updated from: http://www.linux-usb.org/usb.ids\n");
+
+ while (my $line = <IN>) {
+ $line =~ s/\s+$//;
+ $line =~ m/^([0-9a-f]{4})\s*(.*)$/;
+ if (defined $1) {
+ $vendor = uc $1;
+ my $text = $2;
+ print(OUT "\n");
+ print(OUT "usb:v" . $vendor . "*\n");
+ print(OUT " ID_VENDOR_FROM_DATABASE=" . $text . "\n");
+ next;
+ }
+
+ $line =~ m/^\t([0-9a-f]{4})\s*(.*)$/;
+ if (defined $1) {
+ my $product = uc $1;
+ my $text = $2;
+ print(OUT "\n");
+ print(OUT "usb:v" . $vendor . "p" . $product . "*\n");
+ print(OUT " ID_PRODUCT_FROM_DATABASE=" . $text . "\n");
+ }
+ }
+
+ close(INP);
+ close(OUTP);
+}
+
+sub pci_vendor {
+ my $vendor;
+ my $device;
+
+ open(IN, "<", "usb.ids");
+ open(IN, "<", "pci.ids");
+ open(OUT, ">", "20-pci-vendor-product.hwdb");
+ print(OUT "# This file is part of systemd.\n" .
+ "#\n" .
+ "# Data imported and updated from: http://pciids.sourceforge.net/v2.2/pci.ids\n");
+
+ while (my $line = <IN>) {
+ $line =~ s/\s+$//;
+ $line =~ m/^([0-9a-f]{4})\s*(.*)$/;
+
+ if (defined $1) {
+ $vendor = uc $1;
+ my $text = $2;
+ print(OUT "\n");
+ print(OUT "pci:v0000" . $vendor . "*\n");
+ print(OUT " ID_VENDOR_FROM_DATABASE=" . $text . "\n");
+ next;
+ }
+
+ $line =~ m/^\t([0-9a-f]{4})\s*(.*)$/;
+ if (defined $1) {
+ $device = uc $1;
+ my $text = $2;
+ print(OUT "\n");
+ print(OUT "pci:v0000" . $vendor . "d0000" . $device . "*\n");
+ print(OUT " ID_PRODUCT_FROM_DATABASE=" . $text . "\n");
+ next;
+ }
+
+ $line =~ m/^\t\t([0-9a-f]{4})\s*([0-9a-f]{4})\s*(.*)$/;
+ if (defined $1) {
+ my $sub_vendor = uc $1;
+ my $sub_device = uc $2;
+ my $text = $3;
+ print(OUT "\n");
+ print(OUT "pci:v0000" . $vendor . "d0000" . $device . "sv0000" . $sub_vendor . "sd0000" . $sub_device . "*\n");
+ print(OUT " ID_PRODUCT_FROM_DATABASE=" . $text . "\n");
+ }
+ }
+
+ close(INP);
+ close(OUTP);
}
-close(INP);
-close(OUTP);
-
-
-my $device;
-
-open(IN, "<", "pci.ids");
-open(OUT, ">", "20-pci-vendor-product.hwdb");
-print(OUT "# This file is part of systemd.\n" .
- "#\n" .
- "# Data imported and updated from: http://pciids.sourceforge.net/v2.2/pci.ids\n");
-
-while (my $line = <IN>) {
- $line =~ s/\s+$//;
- $line =~ m/^([0-9a-f]{4})\s*(.*)$/;
- if (defined $1) {
- $vendor = uc $1;
- my $text = $2;
- print(OUT "\n");
- print(OUT "pci:v0000" . $vendor . "*\n");
- print(OUT " ID_VENDOR_FROM_DATABASE=" . $text . "\n");
- next;
- }
-
- $line =~ m/^\t([0-9a-f]{4})\s*(.*)$/;
- if (defined $1) {
- $device = uc $1;
- my $text = $2;
- print(OUT "\n");
- print(OUT "pci:v0000" . $vendor . "d0000" . $device . "*\n");
- print(OUT " ID_PRODUCT_FROM_DATABASE=" . $text . "\n");
- next;
- }
-
- $line =~ m/^\t\t([0-9a-f]{4})\s*([0-9a-f]{4})\s*(.*)$/;
- if (defined $1) {
- my $sub_vendor = uc $1;
- my $sub_device = uc $2;
- my $text = $3;
- print(OUT "\n");
- print(OUT "pci:v0000" . $vendor . "d0000" . $device . "sv0000" . $sub_vendor . "sd0000" . $sub_device . "*\n");
- print(OUT " ID_PRODUCT_FROM_DATABASE=" . $text . "\n");
- }
+
+sub pci_classes {
+ my $class;
+ my $subclass;
+ my $interface;
+
+ open(IN, "<", "pci.ids");
+ open(OUT, ">", "20-pci-classes.hwdb");
+ print(OUT "# This file is part of systemd.\n" .
+ "#\n" .
+ "# Data imported and updated from: http://pciids.sourceforge.net/v2.2/pci.ids\n");
+
+ while (my $line = <IN>) {
+ $line =~ s/\s+$//;
+
+ $line =~ m/^C\ ([0-9a-f]{2})\s*(.*)$/;
+ if (defined $1) {
+ $class = uc $1;
+ my $text = $2;
+ print(OUT "\n");
+ print(OUT "pci:v*d*sv*sd*bc" . $class . "*\n");
+ print(OUT " ID_PCI_CLASS_FROM_DATABASE=" . $text . "\n");
+ next;
+ }
+
+ if (not defined $class) {
+ next;
+ }
+
+ $line =~ m/^\t([0-9a-f]{2})\s*(.*)$/;
+ if (defined $1) {
+ $subclass = uc $1;
+ my $text = $2;
+ print(OUT "\n");
+ print(OUT "pci:v*d*sv*sd*bc" . $class . "sc" . $subclass . "*\n");
+ print(OUT " ID_PCI_SUBCLASS_FROM_DATABASE=" . $text . "\n");
+ next;
+ }
+
+ $line =~ m/^\t\t([0-9a-f]{2})\s*(.*)$/;
+ if (defined $1) {
+ $interface = uc $1;
+ my $text = $2;
+ print(OUT "\n");
+ print(OUT "pci:v*d*sv*sd*bc" . $class . "sc" . $subclass . "i" . $interface . "*\n");
+ print(OUT " ID_PCI_INTERFACE_FROM_DATABASE=" . $text . "\n");
+ }
+ }
+
+ close(INP);
+ close(OUTP);
}
-close(INP);
-close(OUTP);
-
-open(IN, "<", "oui.txt");
-open(OUT, ">", "20-OUI.hwdb");
-print(OUT "# This file is part of systemd.\n" .
- "#\n" .
- "# Data imported and updated from: http://standards.ieee.org/develop/regauth/oui/oui.txt\n");
-
-while (my $line = <IN>) {
- $line =~ s/\s+$//;
- $line =~ m/^([0-9A-F]{6})\s*\(base 16\)\s*(.*)$/;
- if (defined $1) {
- my $vendor = uc $1;
- my $text = $2;
- print(OUT "\n");
- print(OUT "OUI:" . $vendor . "\n");
- print(OUT " ID_OUI_FROM_DATABASE=" . $text . "\n");
- }
+
+sub oui {
+ open(IN, "<", "oui.txt");
+ open(OUT, ">", "20-OUI.hwdb");
+ print(OUT "# This file is part of systemd.\n" .
+ "#\n" .
+ "# Data imported and updated from: http://standards.ieee.org/develop/regauth/oui/oui.txt\n");
+
+ while (my $line = <IN>) {
+ $line =~ s/\s+$//;
+ $line =~ m/^([0-9A-F]{6})\s*\(base 16\)\s*(.*)$/;
+ if (defined $1) {
+ my $vendor = uc $1;
+ my $text = $2;
+ print(OUT "\n");
+ print(OUT "OUI:" . $vendor . "\n");
+ print(OUT " ID_OUI_FROM_DATABASE=" . $text . "\n");
+ }
+ }
+
+ close(INP);
+ close(OUTP);
}
-close(INP);
-close(OUTP);
+
+usb_vendor();
+pci_vendor();
+pci_classes();
+oui();