Discard fields outside I2C size
authorMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 7 Dec 2010 14:38:46 +0000 (12:38 -0200)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 7 Dec 2010 14:38:46 +0000 (12:38 -0200)
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
contrib/sn9c201/parse_sn9c201.pl

index b402433..1ddcee2 100755 (executable)
@@ -117,18 +117,39 @@ while (<>) {
                                $reg++;
                        }
 
-#                      my $data = $payload;
-#                      $payload =~ 
+                       my $data;
+                       for (my $i = 0; $i < $i2c{"size"}; $i++) {
+                               my $tmp = $payload;
+                               $tmp =~ s/\s+.*//;
+                               $payload =~ s/^([0-9a-f].)//;
+                                $payload =~ s/^\s+//;
+                               $data .= "$tmp ";
+                       }
+                       $data =~ s/\s+$//;
+
+                       my $discard;
+                       for (my $i = 0; $i < 5; $i++) {
+                               my $tmp = $payload;
+                               $tmp =~ s/\s+.*//;
+                               $payload =~ s/^([0-9a-f].)//;
+                                $payload =~ s/^\s+//;
+                               $discard .= "$tmp ";
+                       }
+                       $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$payload\n";
+                               printf "Read I2C: $s $i2c_id$data";
                        } else {
-                               printf "I2C $s $i2c_id$payload\n";
+                               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);
                } else {