From d060b62fcb4746d3758c567e9379c6728a035b66 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Mon, 14 Apr 2014 07:54:35 -0700 Subject: 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. --- hwdb/ids-update.pl | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'hwdb/ids-update.pl') 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"); } } -- cgit v1.2.3-54-g00ecf