• Mauro Carvalho Chehab's avatar
    [media] gspca-cardlist.rst: update cardlist from drivers USB IDs · c3739983
    Mauro Carvalho Chehab authored
    There are several missing USB IDs that are defined on gspca
    drivers. Add them.
    
    The missing entries were found/created using the following script:
    
    <script>
    use strict;
    use File::Find;
    
    my $src = "drivers/media/usb/gspca/";
    my $table = 0;
    my %data;
    
    my $id;
    
    my $len = 0;
    
    open IN, "Documentation/media/v4l-drivers/gspca-cardlist.rst";
    while (<IN>) {
    	if (m/^=+\s+=+\s+=+$/) {
    		$table++;
    		next;
    	}
    	next if ($table != 2);
    	if (m/^(\S+)\s+(\S+)\s+(.*)/) {
    		$id = "$1_$2";
    		$data{$id}->{driver} = $1;
    		$data{$id}->{usb_id} = $2;
    		$data{$id}->{name} = $3;
    		$data{$id}->{valid} = 0;
    
    		$len = length($3) if (length($3) > $len);
    	}
    }
    close IN;
    
    sub parse_dir {
            my $file = $File::Find::name;
    
    	open IN, $file;
    
    	my $driver = $file;
    
    	$driver =~ s,($src),,;
    
    	$driver =~ s,/.*,,;
    	$driver =~ s,\.c$,,;
    
    	while (<IN>) {
    		next if (m,/\*.*USB_DEVICE,);
    		if (m/USB_DEVICE[^\(]*\(\s*0x(\S+)\s*\,\s*0x(\S+)\)(.*)/) {
    			my $n = "$1:$2";
    			my $o = $3;
    			$id = "${driver}_$n";
    
    			$data{$id}->{valid} = 1;
    
    			next if (defined $data{$id}->{driver});
    
    			$data{$id}->{driver} = $driver;
    			$data{$id}->{usb_id} = $n;
    
    			if ($o =~ m,\/\*\s*(.*)\*\/,) {
    				$n = $1;
    				$n =~ s/\s+//;
    				$data{$id}->{name} = $n;
    			} else {
    				$data{$id}->{name} = "";
    			}
    		}
    	}
    	close IN;
    }
    
    find({wanted => \&parse_dir, no_chdir => 1}, $src);
    
    print "The gspca cards list\n";
    print "====================\n\n";
    print "The modules for the gspca webcam drivers are:\n\n";
    print "- gspca_main: main driver\n";
    print "- gspca\\_\\ *driver*: subdriver module with *driver* as follows\n\n";
    print "=========	=========	" . "=" x $len . "\n";
    print "*driver*	vend:prod	Device\n";
    print "=========	=========	" . "=" x $len . "\n";
    
    foreach my $id (sort { $data{$a}->{usb_id} . $data{$a}->{driver} cmp $data{$b}->{usb_id} . $data{$b}->{driver} } keys %data) {
    	next if (!$data{$id}->{valid});
    
    	my $s = sprintf "%-15s %s\t%s\n",
    		$data{$id}->{driver}, $data{$id}->{usb_id}, $data{$id}->{name};
    
    	# Replace tabs by spaces
    	$s =~ s/[ \t]+$//;
            $s =~ s<^ {8}> <\t>;
            $s =~ s<^ {1,7}\t> <\t>;
            $s =~ s< {1,7}\t> <\t>;
    
    	printf $s;
    }
    print "=========	=========	" . "=" x $len . "\n";
    </script>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
    c3739983
gspca-cardlist.rst 20.5 KB