diff options
author | Guillaume Cottenceau <gc@mandriva.com> | 2003-01-22 15:20:11 +0000 |
---|---|---|
committer | Guillaume Cottenceau <gc@mandriva.com> | 2003-01-22 15:20:11 +0000 |
commit | 12cbabf6889b1089fd0b1aa77c46fd119400e741 (patch) | |
tree | cf540f8d3cb5a6fe8ce56a7524a72d18211a237a /mdk-stage1/pci-resource | |
parent | 96a4ea5b4c5f51a8c2cf94429e9bfd18cf62b65f (diff) | |
download | drakx-backup-do-not-use-12cbabf6889b1089fd0b1aa77c46fd119400e741.tar drakx-backup-do-not-use-12cbabf6889b1089fd0b1aa77c46fd119400e741.tar.gz drakx-backup-do-not-use-12cbabf6889b1089fd0b1aa77c46fd119400e741.tar.bz2 drakx-backup-do-not-use-12cbabf6889b1089fd0b1aa77c46fd119400e741.tar.xz drakx-backup-do-not-use-12cbabf6889b1089fd0b1aa77c46fd119400e741.zip |
add full pci probe support
Diffstat (limited to 'mdk-stage1/pci-resource')
-rwxr-xr-x | mdk-stage1/pci-resource/update-pci-ids.pl | 40 |
1 files changed, 33 insertions, 7 deletions
diff --git a/mdk-stage1/pci-resource/update-pci-ids.pl b/mdk-stage1/pci-resource/update-pci-ids.pl index 73f1d151b..1d179c06d 100755 --- a/mdk-stage1/pci-resource/update-pci-ids.pl +++ b/mdk-stage1/pci-resource/update-pci-ids.pl @@ -16,6 +16,15 @@ struct pci_module_map { const char *module; /* module to load */ }; +struct pci_module_map_full { + unsigned short vendor; /* PCI vendor id */ + unsigned short device; /* PCI device id */ + unsigned short subvendor; /* PCI subvendor id */ + unsigned short subdevice; /* PCI subdevice id */ + const char *name; /* PCI human readable name */ + const char *module; /* module to load */ +}; + '; my %t = ( @@ -26,20 +35,37 @@ my %t = ( foreach my $type (keys %t) { my @modules = chomp_(`perl ../../kernel/modules.pl pci_modules4stage1:"$t{$type}"`); - print "#ifndef DISABLE_".uc($type)." -struct pci_module_map ${type}_pci_ids[] = { -"; + my (@entries, @entries_full); foreach my $k (sort keys %$pci) { my $v = $pci->{$k}; member($v->[0], @modules) or next; - $k =~ /^(....)(....)/; - printf qq|\t{ 0x%s, 0x%s, "%s", "%s" },\n|, - $1, $2, $v->[1], $v->[0]; + $k =~ /^(....)(....)(....)(....)/; + my $values = { vendor => $1, device => $2, subvendor => $3, subdevice => $4, driver => $v->[0], description => $v->[1] }; + if ($values->{subdevice} eq 'ffff' && $values->{subvendor} eq 'ffff') { + push @entries, $values; + } else { + push @entries_full, $values; + } } + print "#ifndef DISABLE_".uc($type)." +struct pci_module_map ${type}_pci_ids[] = { +"; + printf qq|\t{ 0x%s, 0x%s, "%s", "%s" },\n|, $_->{vendor}, $_->{device}, $_->{description}, $_->{driver} + foreach @entries; + print "}; +unsigned int ${type}_num_ids = sizeof(${type}_pci_ids) / sizeof(struct pci_module_map); +"; + + print " +struct pci_module_map_full ${type}_pci_ids_full[] = { +"; + printf qq|\t{ 0x%s, 0x%s, 0x%s, 0x%s, "%s", "%s" },\n|, $_->{vendor}, $_->{device}, $_->{subvendor}, $_->{subdevice}, $_->{description}, $_->{driver} + foreach @entries_full; print "}; -int ${type}_num_ids = sizeof(${type}_pci_ids) / sizeof(struct pci_module_map); +unsigned int ${type}_num_ids_full = sizeof(${type}_pci_ids_full) / sizeof(struct pci_module_map_full); + #endif "; |