summaryrefslogtreecommitdiff
path: root/hwdb/ids-update.pl
diff options
context:
space:
mode:
authorKay Sievers <kay@vrfy.org>2014-04-14 07:54:35 -0700
committerKay Sievers <kay@vrfy.org>2014-04-14 08:21:52 -0700
commitd060b62fcb4746d3758c567e9379c6728a035b66 (patch)
tree18a82508865fe339a84be5b3d76bb15da9ad09a8 /hwdb/ids-update.pl
parentdbe633cc027e31a0d4fb488a3c68b7762ef0e7b3 (diff)
hwdb: PCI - include "primary" model string in subsystem model string
The data in the PCI ids file is randomly inconsistent. Many subvendor model strings just describe the "product" where the hardware is built into, not the hardware itself. This causes some "Network Card Model Foo" to show up as "Laptop Model Bar". Try to make the best out of this mess and concatenate both strings to describe the hardware.
Diffstat (limited to 'hwdb/ids-update.pl')
-rwxr-xr-xhwdb/ids-update.pl11
1 files changed, 7 insertions, 4 deletions
diff --git a/hwdb/ids-update.pl b/hwdb/ids-update.pl
index b72c41571..68c63ede4 100755
--- a/hwdb/ids-update.pl
+++ b/hwdb/ids-update.pl
@@ -107,6 +107,7 @@ sub usb_classes {
sub pci_vendor {
my $vendor;
my $device;
+ my $device_text;
open(IN, "<", "pci.ids");
open(OUT, ">", "20-pci-vendor-model.hwdb");
@@ -130,10 +131,10 @@ sub pci_vendor {
$line =~ m/^\t([0-9a-f]{4})\s*(.+)$/;
if (defined $1) {
$device = uc $1;
- my $text = $2;
+ $device_text = $2;
print(OUT "\n");
print(OUT "pci:v0000" . $vendor . "d0000" . $device . "*\n");
- print(OUT " ID_MODEL_FROM_DATABASE=" . $text . "\n");
+ print(OUT " ID_MODEL_FROM_DATABASE=" . $device_text . "\n");
next;
}
@@ -141,10 +142,12 @@ sub pci_vendor {
if (defined $1) {
my $sub_vendor = uc $1;
my $sub_device = uc $2;
- my $text = $3;
+ my $sub_text = $3;
+ $sub_text =~ s/^\Q$device_text\E\s*//;
+ $sub_text =~ s/(.+)/\ (\1\)/;
print(OUT "\n");
print(OUT "pci:v0000" . $vendor . "d0000" . $device . "sv0000" . $sub_vendor . "sd0000" . $sub_device . "*\n");
- print(OUT " ID_MODEL_FROM_DATABASE=" . $text . "\n");
+ print(OUT " ID_MODEL_FROM_DATABASE=" . $device_text . $sub_text . "\n");
}
}