summaryrefslogtreecommitdiff
path: root/hwdb/ids-update.pl
diff options
context:
space:
mode:
authorKay Sievers <kay@vrfy.org>2012-10-22 18:23:08 +0200
committerKay Sievers <kay@vrfy.org>2012-10-23 16:43:32 +0200
commit796b06c21b62d13c9021e2fbd9c58a5c6edb2764 (patch)
treef46dc94e7589364887b9bb91589010f41d29706d /hwdb/ids-update.pl
parent59bb9d9a14889bee001706a32a518fe0a5009048 (diff)
udev: add hardware database support
Diffstat (limited to 'hwdb/ids-update.pl')
-rwxr-xr-xhwdb/ids-update.pl80
1 files changed, 80 insertions, 0 deletions
diff --git a/hwdb/ids-update.pl b/hwdb/ids-update.pl
new file mode 100755
index 0000000000..d157040deb
--- /dev/null
+++ b/hwdb/ids-update.pl
@@ -0,0 +1,80 @@
+#!/usr/bin/perl
+
+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");
+ }
+}
+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");
+ }
+}
+close(INP);
+close(OUTP);