[media] gspca-cardlist.rst: update cardlist from drivers USB IDs
authorMauro Carvalho Chehab <mchehab@s-opensource.com>
Sat, 22 Oct 2016 21:47:30 +0000 (19:47 -0200)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Mon, 24 Oct 2016 09:22:01 +0000 (07:22 -0200)
commitc3739983d4f32de1a10b1aa7919e2e0c40f0ecbb
tree1e23f65ea4d889fca8b2f1e68e128a57bd47326e
parent959fe10443aa3b184f9ae1af4abbbf74bdfbf25a
[media] gspca-cardlist.rst: update cardlist from drivers USB IDs

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: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Documentation/media/v4l-drivers/gspca-cardlist.rst