This is an automatic generated email to let you know that the following patch 
were queued at the 
http://git.linuxtv.org/v4l-utils.git tree:

Subject: parse_sn9c201.pl: output register reads/writes
Author:  Mauro Carvalho Chehab <[email protected]>
Date:    Tue Dec 7 13:17:48 2010 -0200

Note: For now, discard req number. It seems to be used, not sure for what.

Signed-off-by: Mauro Carvalho Chehab <[email protected]>

 contrib/sn9c201/parse_sn9c201.pl |   61 ++++++++++++++++++++++++++------------
 1 files changed, 42 insertions(+), 19 deletions(-)

---

http://git.linuxtv.org/v4l-utils.git?a=commitdiff;h=bf3bec79b6d2075426976609374cff9ed62eaf6a

diff --git a/contrib/sn9c201/parse_sn9c201.pl b/contrib/sn9c201/parse_sn9c201.pl
index 1ddcee2..34cbf80 100755
--- a/contrib/sn9c201/parse_sn9c201.pl
+++ b/contrib/sn9c201/parse_sn9c201.pl
@@ -1,5 +1,4 @@
 #!/usr/bin/perl
-use strict;
 
 #   Copyright (C) 2010 Mauro Carvalho Chehab <[email protected]>
 #
@@ -21,6 +20,11 @@ use strict;
 # Also, there are other utilities that produce similar outputs, and it
 # is not hard to parse some USB analyzers log into the expected format.
 #
+use strict;
+use Getopt::Long;
+
+my $debug = 0;
+GetOptions('d' => \$debug);
 
 sub i2c_reg($)
 {
@@ -118,43 +122,62 @@ while (<>) {
                        }
 
                        my $data;
-                       for (my $i = 0; $i < $i2c{"size"}; $i++) {
+                       for (my $i = 0; ($i < $i2c{"size"}) && ($payload ne 
""); $i++) {
                                my $tmp = $payload;
                                $tmp =~ s/\s+.*//;
                                $payload =~ s/^([0-9a-f].)//;
-                                $payload =~ s/^\s+//;
-                               $data .= "$tmp ";
+                               $payload =~ s/^\s+//;
+                               $data .= "$tmp, ";
                        }
-                       $data =~ s/\s+$//;
+                       $data =~ s/\,\s+$//;
 
                        my $discard;
-                       for (my $i = 0; $i < 5; $i++) {
+                       for (my $i = 0; ($i < 5) && ($payload ne ""); $i++) {
                                my $tmp = $payload;
                                $tmp =~ s/\s+.*//;
                                $payload =~ s/^([0-9a-f].)//;
-                                $payload =~ s/^\s+//;
-                               $discard .= "$tmp ";
+                               $payload =~ s/^\s+//;
+                               $discard .= "$tmp, ";
                        }
-                       $discard =~ s/\s+$//;
+                       $discard =~ s/\,\s+$//;
 
                        my $s = sprintf "%s %s %s %s %s size=%d",
                                $i2c{"op"}, $i2c{"speed"}, $i2c{"busy"}, 
$i2c{"err"}, $i2c{"i2c"}, $i2c{"size"};
                        $s =~ s/\s+/ /g;
 
-                       if ($reqtype & 0x80) {
-                               printf "Read I2C: $s $i2c_id$data";
+                       if ($debug) {
+                               if ($reqtype & 0x80) {
+                                       printf "Read I2C: $s $i2c_id$data";
+                               } else {
+                                       printf "I2C $s $i2c_id$data";
+                               }
+                               printf " ($discard)" if ($discard);
+                               printf "Extra: $payload" if ($payload);
+                               print "\n";
+
+                               printf("\t%s, Req %3d, wValue: 0x%04x, wIndex 
0x%04x, wlen %d: %s\n",
+                                       type_req($reqtype), $req, $wvalue, 
$windex, $wlen, $fullpayload);
+                       }
+                       next if ($reg < 0x10c2);
+                       if (($i2c{"size"} == 1) && ($reqtype & 0x80)) {
+                               printf "i2c_r1(gspca_dev, $data);\n";
+                       } elsif (($i2c{"size"} == 2) && (($reqtype & 0x80) == 
0)) {
+                               printf "i2c_w1(gspca_dev, $data);\n";
                        } else {
-                               printf "I2C $s $i2c_id$data";
+                               if ($reqtype & 0x80) {
+                                       printf "i2c_r(gspca_dev, { $data }, 
%d);\n", $i2c{"size"};
+                               } else {
+                                       printf "i2c_w(gspca_dev, { $data }, 
%d);\n", $i2c{"size"};
+                               }
                        }
-                       printf " ($discard)" if ($discard);
-                       printf "Extra: $payload" if ($payload);
-                       print "\n";
-
-                       printf("\t%s, Req %3d, wValue: 0x%04x, wIndex 0x%04x, 
wlen %d: %s\n",
-                               type_req($reqtype), $req, $wvalue, $windex, 
$wlen, $fullpayload);
                } else {
                        printf("%s, Req %3d, wValue: 0x%04x, wIndex 0x%04x, 
wlen %d: %s\n",
-                               type_req($reqtype), $req, $wvalue, $windex, 
$wlen, $payload);
+                               type_req($reqtype), $req, $wvalue, $windex, 
$wlen, $payload) if ($debug);
+                       if ($reqtype == 0xc1) {
+                               printf "reg_r(gspcadev, 0x%04x);\t/* read 
%s*/\n", $wvalue, $payload;
+                       } elsif ($reqtype == 0x41) {
+                               printf "reg_w(gspcadev, 0x%04x, { %s });*/\n", 
$wvalue, $payload;
+                       }
                }
        }
 }

_______________________________________________
linuxtv-commits mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to