summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/pci-resource/update-pci-ids.pl
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/pci-resource/update-pci-ids.pl')
-rwxr-xr-xmdk-stage1/pci-resource/update-pci-ids.pl41
1 files changed, 41 insertions, 0 deletions
diff --git a/mdk-stage1/pci-resource/update-pci-ids.pl b/mdk-stage1/pci-resource/update-pci-ids.pl
new file mode 100755
index 000000000..4aaa04b70
--- /dev/null
+++ b/mdk-stage1/pci-resource/update-pci-ids.pl
@@ -0,0 +1,41 @@
+#!/usr/bin/perl
+
+use lib "../../perl-install";
+use common qw(:common);
+use pci_probing::pcitable;
+
+print '
+#define PCI_REVISION_ID 0x08 /* Revision ID */
+
+struct pci_module_map {
+ unsigned short vendor; /* PCI vendor id */
+ unsigned short device; /* PCI device id */
+ const char *name; /* PCI human readable name */
+ const char *module; /* module to load */
+};
+
+';
+
+my %t = (scsi => 'scsi', eth => 'net');
+
+foreach (keys %t) {
+ print "
+struct pci_module_map ${_}_pci_ids[] = {
+";
+ my %l;
+ foreach (glob("../../kernel*/lib/modules/*/$t{$_}/*.o")) {
+ m|([^/]*)\.o$|;
+ $l{$1} = 1;
+ }
+ while (my ($k, $v) = each %pci_probing::pcitable::ids) {
+ $l{$v->[1]} or next;
+ printf qq|\t{0x%04x , 0x%04x , ( "%s" ), ( "%s" )} ,\n|,
+ $k / 0x10000, $k % 0x10000, $v->[0], $v->[1];
+ }
+
+print "
+};
+int ${_}_num_ids=sizeof(${_}_pci_ids)/sizeof(struct pci_module_map);
+"
+
+}