blob: cc0caf7daa95633d7c02eaeb85838be5c7027322 [file] [log] [blame]
#!/usr/bin/perl -w
#use strict;
use lib "tools/perl";
use Spreadsheet::ParseExcel;
my $CUSTOMDIR;
my $OUTDIR;
my $OUTSUBDIR;
my $TYPE;
if ($#ARGV < 2) {
print "Usage: \n";
print " cfgGen_module.pl CUSTOMDIR TYPE OUTDIR\n";
exit -1;
}
$CUSTOMDIR = $ARGV[0]."/".$ARGV[1];
$TYPE = $ARGV[1];
$OUTDIR = $ARGV[2];
$OUTSUBDIR = $ARGV[2]."/".$ARGV[1];
if (!-e $CUSTOMDIR) {
print $CUSTOMDIR," not exist!\n";
exit -1;
}
if ($TYPE eq "nf") {
genall();
}
if ($TYPE eq "sf") {
genall();
}
if ($TYPE eq "bf") {
genall();
}
sub genall {
my $FileName = "$CUSTOMDIR/flash_partition.xls";
my $parser = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse($FileName);
die $parser->error(), ".\n" if ( !defined $workbook );
for my $worksheet ( $workbook->worksheets() ) {
if ($worksheet->{Name} =~ m/HOST/) {
gen_host_file($worksheet);
}
if ($worksheet->{Name} =~ m/FDA/) {
gen_fda_cfg($worksheet);
}
if ($worksheet->{Name} =~ m/SPI/) {
gen_spi_cfg();
}
}
}
sub gen_host_file {
my ($worksheet) = @_;
my ( $row_min, $row_max ) = $worksheet->row_range();
my ( $col_min, $col_max ) = $worksheet->col_range();
my $FILE = "$OUTSUBDIR/HOST.cfg";
open (MYFILE, ">$FILE");
for my $row ( $row_min .. $row_max ) {
next if ($row == 0);
my ($name, $file, $size, $type);
for my $col ( $col_min .. $col_max ) {
# Return the cell object at $row and $col
my $cell = $worksheet->get_cell( $row, $col );
next unless $cell;
if ($col == 0) {
$name = $cell->value();
}
if ($col == 1) {
$file = $cell->value();
}
if ($col == 2) {
$size = $cell->value();
}
if ($col == 3) {
$type = $cell->value();
}
}
my $new_file;
my $new_size;
if ($type =~ m/yaffs/) {
#$new_file = $file;
#$new_file =~ s/\..*$/\.oob/;
$new_file = lc($name).".oob";
$new_size = $size*(1024+32)*(1024+32);
system("dd if=/dev/zero bs=$new_size count=1 2>/dev/null | tr '\\000' '\\377' > $OUTSUBDIR/$new_file");
if ("$file" ne "__NODL") {
system("dd if=$OUTDIR/$file of=$OUTSUBDIR/$new_file conv=notrunc 2>/dev/null");
}
print MYFILE "name: ", $name, "\n";
print MYFILE "file: ", $new_file, "\n";
}
if ($type =~ m/raw/) {
$new_file = lc($name).".raw";
$new_size = $size*1024*1024;
system("dd if=/dev/zero bs=$new_size count=1 2>/dev/null | tr '\\000' '\\377' > $OUTSUBDIR/$new_file");
if ("$file" ne "__NODL") {
system("dd if=$OUTDIR/$file of=$OUTSUBDIR/$new_file conv=notrunc 2>/dev/null");
}
print MYFILE "name: ", $name, "\n";
print MYFILE "file: ", $new_file, "\n";
}
if ($type =~ m/reserved/) {
$new_file = lc($name).".raw";
$new_size = $size*1024*1024;
system("dd if=/dev/zero bs=$new_size count=1 2>/dev/null | tr '\\000' '\\377' > $OUTSUBDIR/$new_file");
print MYFILE "name: ", $name, "\n";
print MYFILE "file: ", $new_file, "\n";
}
}
print MYFILE "\n";
close (MYFILE);
}
sub gen_fda_cfg {
my ($worksheet) = @_;
my ( $row_min, $row_max ) = $worksheet->row_range();
my ( $col_min, $col_max ) = $worksheet->col_range();
my $FILE = "$OUTSUBDIR/FDA.cfg";
open (MYFILE, ">$FILE");
print MYFILE "############################################################################################################\n";
print MYFILE "#\n";
print MYFILE "# Android Region Setting\n";
print MYFILE "#\n";
print MYFILE "############################################################################################################\n";
print MYFILE "linux_region:\n";
print MYFILE " partitions:\n";
for my $row ( $row_min .. $row_max ) {
next if ($row == 0);
print MYFILE " - partition:\n";
for my $col ( $col_min .. $col_max ) {
# Return the cell object at $row and $col
my $cell = $worksheet->get_cell( $row, $col );
next unless $cell;
if ($col == 0) {
print MYFILE " name: ", $cell->value(), "\n";
}
if ($col == 1) {
print MYFILE " file: ", $cell->value(), "\n";
my $file = $cell->value();
if ( -e "$OUTDIR/$file" ) {
system("cp -f $OUTDIR/$file $OUTSUBDIR/");
}
}
if ($col == 2) {
print MYFILE " address: ", $cell->value(), "\n";
}
if ($col == 3) {
print MYFILE " type: ", $cell->value(), "\t\t#raw, yaffs, yaffs2\n";
}
}
}
print MYFILE "\n";
close (MYFILE);
}