projects
/
linux-gpio-pinout
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
remove empty lines at beginng/end and draw last line/cut mark
[linux-gpio-pinout]
/
gpio.pl
diff --git
a/gpio.pl
b/gpio.pl
index
b4e8a9a
..
d9fffeb
100755
(executable)
--- a/
gpio.pl
+++ b/
gpio.pl
@@
-7,15
+7,17
@@
use Getopt::Long;
my $opt_svg = $ENV{SVG} || 0;
my $opt_alt = $ENV{ALT} || 0;
my $opt_svg = $ENV{SVG} || 0;
my $opt_alt = $ENV{ALT} || 0;
-my $opt_invert = $ENV{INVERT} = 0;
-my $opt_vertical = $ENV{VERTICAL} = 0;
-my $opt_kernel = $ENV{kernel} = 1;
+my $opt_invert = $ENV{INVERT} || 0;
+my $opt_vertical = $ENV{VERTICAL} || 0;
+my $opt_zebra = $ENV{ZEBRA} || 0;
+my $opt_lines = $ENV{LINES} || 0;
GetOptions(
'svg!' => \$opt_svg,
'alt!' => \$opt_alt,
'invert!' => \$opt_invert,
'vertical!' => \$opt_vertical,
GetOptions(
'svg!' => \$opt_svg,
'alt!' => \$opt_alt,
'invert!' => \$opt_invert,
'vertical!' => \$opt_vertical,
- 'kernel!' => \$opt_kernel,
+ 'zebra!' => \$opt_zebra,
+ 'lines!' => \$opt_lines,
);
# svg font hints
);
# svg font hints
@@
-47,8
+49,6
@@
while(<DATA>) {
} else {
$include = 0;
}
} else {
$include = 0;
}
- } elsif ( m/^#\s+/ ) {
- $include = 1;
} elsif ( $include ) {
push @{ $pins->{$1} }, $line_i while ( m/\t(\w+\d+)/g );
} elsif ( $include ) {
push @{ $pins->{$1} }, $line_i while ( m/\t(\w+\d+)/g );
@@
-60,6
+60,9
@@
while(<DATA>) {
}
}
}
}
+shift(@lines) while ( ! $lines[0] ); # remove empty at beginning
+pop(@lines) while ( ! $lines[-1] ); # remove empty at end
+
die "add pin definition for # $model" unless $pins;
warn "# pins ",dump($pins);
die "add pin definition for # $model" unless $pins;
warn "# pins ",dump($pins);
@@
-76,8
+79,6
@@
while(<$fh>) {
my ($pin, $function) = ($1,$2);
$pin_function->{$pin} = "$device $function";
my ($pin, $function) = ($1,$2);
$pin_function->{$pin} = "$device $function";
- next unless $opt_kernel;
-
if ( $pins->{$pin} ) {
foreach my $line ( @{$pins->{$pin}} ) {
warn "XXX $pin $line";
if ( $pins->{$pin} ) {
foreach my $line ( @{$pins->{$pin}} ) {
warn "XXX $pin $line";
@@
-106,10
+107,14
@@
foreach my $line (@lines) {
next;
}
$line =~ s/(\[(?:uart|serial))([^\t]*\]\s[^\t]*(rx|tx)d?)/$1 $3$2/gi;
next;
}
$line =~ s/(\[(?:uart|serial))([^\t]*\]\s[^\t]*(rx|tx)d?)/$1 $3$2/gi;
- $line =~ s/(\[i2c)([^\t]*\]\s[^\t]*(sclk?|sda))/$1 $3$2/gi;
+ $line =~ s/(\[i2c)([^\t]*\]\s[^\t]*(scl
?
k?|sda))/$1 $3$2/gi;
$line =~ s/(\[spi)([^\t]*\]\s[^\t]*(miso|mosi|s?clk|c[se]\d*))/$1 $3$2/gi;
$line =~ s/\s*\([^\)]+\)//g if ! $opt_alt;
$line =~ s/(\[spi)([^\t]*\]\s[^\t]*(miso|mosi|s?clk|c[se]\d*))/$1 $3$2/gi;
$line =~ s/\s*\([^\)]+\)//g if ! $opt_alt;
+ # shorten duplicate kernel device/function
+ $line =~ s/\[serial (\w+) (uart\d+)\]/[$2 $1]/g;
+ $line =~ s/\[(\w+) (\w+) \1(\d+)\]/[$1$3 $2]/g;
+
my @v = split(/\s*\t+\s*/,$line,4);
push @line_parts, [ @v ];
foreach my $i ( 0 .. 3 ) {
my @v = split(/\s*\t+\s*/,$line,4);
push @line_parts, [ @v ];
foreach my $i ( 0 .. 3 ) {
@@
-250,6
+255,12
@@
my $max_x = $x;
$max_x += $max_len[$_] * $font_w foreach ( 0 .. 3 );
cut_mark $max_x, $y;
$max_x += $max_len[$_] * $font_w foreach ( 0 .. 3 );
cut_mark $max_x, $y;
+sub line {
+ my ($x,$y,$max_x) = @_;
+ push @cut_marks, sprintf($line_fmt, $x, $y-$font_b, $max_x, $y-$font_b);
+}
+
+
my $last_cut_mark = 0;
foreach my $i ( 0 .. $#line_parts ) {
my $last_cut_mark = 0;
foreach my $i ( 0 .. $#line_parts ) {
@@
-264,6
+275,7
@@
foreach my $i ( 0 .. $#line_parts ) {
cut_mark $x, $y;
cut_mark $max_x, $y;
$last_cut_mark = 1;
cut_mark $x, $y;
cut_mark $max_x, $y;
$last_cut_mark = 1;
+ line $x, $y, $max_x if $opt_lines;
$y += 15; # make spacing between pinouts
}
} elsif ( $last_cut_mark ) {
$y += 15; # make spacing between pinouts
}
} elsif ( $last_cut_mark ) {
@@
-275,6
+287,8
@@
foreach my $i ( 0 .. $#line_parts ) {
#warn "CUTMARK no magic";
}
#warn "CUTMARK no magic";
}
+ line $x, $y, $max_x if $opt_lines && exists $line->[1];
+
my ($fg,$bg) = @{ $cols->{txt} };
my $tspan = qq{<tspan x="$x" y="$y" style="line-height:2.54;fill:$fg;stroke:none;">\n};
my ($fg,$bg) = @{ $cols->{txt} };
my $tspan = qq{<tspan x="$x" y="$y" style="line-height:2.54;fill:$fg;stroke:none;">\n};
@@
-291,8
+305,10
@@
foreach my $i ( 0 .. $#line_parts ) {
push @later,sprintf $tspan, @$line;
$y += 2.54;
push @later,sprintf $tspan, @$line;
$y += 2.54;
- # swap pin colors for line stripes
- swap_cols $_ foreach qw( pins txt );
+ # swap pin colors for line stripe
+ if ( $opt_zebra ) {
+ swap_cols $_ foreach qw( pins txt );
+ }
} else {
} else {
@@
-307,6
+323,10
@@
foreach my $i ( 0 .. $#line_parts ) {
}
if ( $opt_svg ) {
}
if ( $opt_svg ) {
+ cut_mark $x,$y;
+ cut_mark $max_x,$y;
+ line $x, $y, $max_x if $opt_lines;
+
print qq{
<text
id="text4506"
print qq{
<text
id="text4506"
@@
-322,7
+342,7
@@
if ( $opt_svg ) {
}
__DATA__
}
__DATA__
-# Cubietech Cubieboard
2
+# Cubietech Cubieboard
## U14 (Next to SATA connector)
### SPI0
48 PI13 (SPI0-MISO/UART6-RX/EINT25) 47 PI11 (SPI0-CLK/UART5-RX/EINT23)
## U14 (Next to SATA connector)
### SPI0
48 PI13 (SPI0-MISO/UART6-RX/EINT25) 47 PI11 (SPI0-CLK/UART5-RX/EINT23)
@@
-351,7
+371,6
@@
__DATA__
4 PD1 (LCDD1/LVDS0N0) 3 PD2 (LCDD2/LVDS0P1)
2 Ground 1 PD0 (LCDD0/LVDSP0)
4 PD1 (LCDD1/LVDS0N0) 3 PD2 (LCDD2/LVDS0P1)
2 Ground 1 PD0 (LCDD0/LVDSP0)
-# Cubietech Cubieboard2
## U15 (Between Ethernet port and USB ports)
### CSI1/TS
1 VCC-5V 2 PH15 (CSI1-PWR/EINT15)
## U15 (Between Ethernet port and USB ports)
### CSI1/TS
1 VCC-5V 2 PH15 (CSI1-PWR/EINT15)
@@
-435,3
+454,4
@@
__DATA__
35 gpio19 (GPIO.24) 36 gpio16 (GPIO.27)
37 gpio26 (GPIO.25) 38 gpio20 (GPIO.28)
39 0v 40 gpio21 (GPIO.29)
35 gpio19 (GPIO.24) 36 gpio16 (GPIO.27)
37 gpio26 (GPIO.25) 38 gpio20 (GPIO.28)
39 0v 40 gpio21 (GPIO.29)
+