|
|
1.1 root 1: #!/usr/bin/perl -w
2: #
3: # Parse PCI_ROM and ISA_ROM entries from a source file on stdin and
4: # output the relevant Makefile variable definitions to stdout
5: #
6: # Based upon portions of Ken Yap's genrules.pl
7:
8: use strict;
9: use warnings;
10:
11: die "Syntax: $0 driver_source.c" unless @ARGV == 1;
12: my $source = shift;
13: open DRV, "<$source" or die "Could not open $source: $!\n";
14:
15: ( my $family, my $driver_name ) = ( $source =~ /^(.*?([^\/]+))\..$/ )
16: or die "Could not parse source file name \"$source\"\n";
17:
18: my $printed_family;
19:
20: sub rom {
21: ( my $type, my $image, my $desc, my $vendor, my $device, my $dup ) = @_;
22: my $ids = $vendor ? "$vendor,$device" : "-";
23: unless ( $printed_family ) {
24: print "\n";
25: print "# NIC\t\n";
26: print "# NIC\tfamily\t$family\n";
27: print "DRIVERS += $driver_name\n";
28: $printed_family = 1;
29: }
30: print "\n";
31: print "# NIC\t$image\t$ids\t$desc\n";
32: print "DRIVER_$image = $driver_name\n";
33: print "ROM_TYPE_$image = $type\n";
34: print "ROM_DESCRIPTION_$image = \"$desc\"\n";
35: print "PCI_VENDOR_$image = 0x$vendor\n" if $vendor;
36: print "PCI_DEVICE_$image = 0x$device\n" if $device;
37: print "ROMS += $image\n" unless $dup;
38: print "ROMS_$driver_name += $image\n" unless $dup;
39: }
40:
41: while ( <DRV> ) {
42: next unless /(PCI|ISA)_ROM\s*\(/;
43:
44: if ( /^\s*PCI_ROM\s*\(
45: \s*0x([0-9A-Fa-f]{4})\s*, # PCI vendor
46: \s*0x([0-9A-Fa-f]{4})\s*, # PCI device
47: \s*\"([^\"]*)\"\s*, # Image
48: \s*\"([^\"]*)\"\s*, # Description
49: \s*.*\s* # Driver data
50: \)/x ) {
51: ( my $vendor, my $device, my $image, my $desc ) = ( lc $1, lc $2, $3, $4 );
52: next if ( $vendor eq "ffff" ) || ( $device eq "ffff" );
53: rom ( "pci", lc "${vendor}${device}", $desc, $vendor, $device );
54: rom ( "pci", $image, $desc, $vendor, $device, 1 );
55: } elsif ( /^\s*ISA_ROM\s*\(
56: \s*\"([^\"]*)\"\s*, # Image
57: \s*\"([^\"]*)\"\s* # Description
58: \)/x ) {
59: ( my $image, my $desc ) = ( $1, $2 );
60: rom ( "isa", $image, $desc );
61: } else {
62: warn "Malformed PCI_ROM or ISA_ROM macro on line $. of $source\n";
63: }
64: }
65:
66: close DRV;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.