diff options
author | Kay Sievers <kay@vrfy.org> | 2014-04-14 07:54:35 -0700 |
---|---|---|
committer | Kay Sievers <kay@vrfy.org> | 2014-04-14 08:21:52 -0700 |
commit | d060b62fcb4746d3758c567e9379c6728a035b66 (patch) | |
tree | 18a82508865fe339a84be5b3d76bb15da9ad09a8 /hwdb/ids-update.pl | |
parent | dbe633cc027e31a0d4fb488a3c68b7762ef0e7b3 (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-x | hwdb/ids-update.pl | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/hwdb/ids-update.pl b/hwdb/ids-update.pl index b72c415711..68c63ede43 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"); } } |