udev: hwdb - add pci class descriptions

This commit is contained in:
Kay Sievers 2012-11-09 14:29:10 +01:00
parent a660c63c55
commit cf7ebcea78
4 changed files with 684 additions and 81 deletions

View File

@ -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

531
hwdb/20-pci-classes.hwdb Normal file
View File

@ -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

View File

@ -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

View File

@ -3,98 +3,166 @@
use strict;
use warnings;
my $vendor;
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");
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;
}
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");
}
$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);
}
close(INP);
close(OUTP);
sub pci_vendor {
my $vendor;
my $device;
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");
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*(.*)$/;
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;
}
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([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");
}
$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);
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");
sub pci_classes {
my $class;
my $subclass;
my $interface;
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");
}
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);
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);
}
usb_vendor();
pci_vendor();
pci_classes();
oui();