You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1086 lines
34 KiB
1086 lines
34 KiB
package mtk_modem; |
|
use strict; |
|
use File::Basename; |
|
use Exporter; |
|
use vars qw(@ISA @EXPORT @EXPORT_OK); |
|
@ISA = qw(Exporter); |
|
@EXPORT = qw(Get_MD_X_From_Bind_Sys_Id Get_MD_YY_From_Image_Type Parse_MD_Struct Check_MD_Info get_modem_file_mapping get_modem_name); |
|
@EXPORT_OK = qw(Get_MD_X_From_Bind_Sys_Id Get_MD_YY_From_Image_Type Parse_MD_Struct Check_MD_Info get_modem_file_mapping get_modem_name); |
|
|
|
|
|
# availible yy for specified x, the yy value is not used at this moment |
|
our %MTK_MODEM_MAP_X_TO_YY = |
|
( |
|
1 => "2g wg tg lwg ltg sglte ultg ulwg ulwtg ulwcg ulwctg unlwtg unlwctg", |
|
2 => "2g wg tg lwg ltg sglte ultg ulwg ulwtg ulwcg ulwctg", |
|
3 => "2g 3g ulwcg ulwctg", |
|
5 => "2g wg tg lwg ltg sglte" |
|
); |
|
|
|
our %MTK_MODEM_MAP_YY_TO_IMAGE_TYPE = |
|
( |
|
"2g" => 0x01, |
|
"3g" => 0x02, |
|
"wg" => 0x03, |
|
"tg" => 0x04, |
|
"lwg" => 0x05, |
|
"ltg" => 0x06, |
|
"sglte" => 0x07, |
|
"ultg" => 0x08, |
|
"ulwg" => 0x09, |
|
"ulwtg" => 0x0A, |
|
"ulwcg" => 0x0B, |
|
"ulwctg" => 0x0C, |
|
"unlwtg" => 0x0D, |
|
"unlwctg" => 0x0E |
|
); |
|
|
|
# input: bind_sys_id |
|
# output: x |
|
sub Get_MD_X_From_Bind_Sys_Id |
|
{ |
|
my $input = shift @_; |
|
if (exists $MTK_MODEM_MAP_X_TO_YY{$input}) |
|
{ |
|
return $input; |
|
} |
|
elsif ($input == 0) |
|
{ |
|
return 1; |
|
} |
|
else |
|
{ |
|
die "Invalid modem bind_sys_id = $input"; |
|
} |
|
} |
|
|
|
# input: image_type |
|
# output: yy |
|
sub Get_MD_YY_From_Image_Type |
|
{ |
|
my $input = shift @_; |
|
my $output = ""; |
|
foreach my $key (keys %MTK_MODEM_MAP_YY_TO_IMAGE_TYPE) |
|
{ |
|
if ($MTK_MODEM_MAP_YY_TO_IMAGE_TYPE{$key} == $input) |
|
{ |
|
$output = $key; |
|
} |
|
} |
|
if ($output eq "") |
|
{ |
|
die "Invalid modem image_type = $input"; |
|
} |
|
return $output; |
|
} |
|
|
|
# input: aaa/bbb.c |
|
# output: bbb.c |
|
sub Get_Basename |
|
{ |
|
my ($tmpName) = @_; |
|
my $baseName; |
|
$baseName = $1 if ($tmpName =~ /.*\/(.*)/); |
|
return $baseName; |
|
} |
|
|
|
# get modem header struct from modem image content |
|
sub Parse_MD_Struct |
|
{ |
|
my ($ref_hash, $parse_md_file) = @_; |
|
|
|
my $buffer; |
|
my $length1 = 188; # modem image rear |
|
my $length2 = 172; |
|
my $length3 = 128; # modem.img project name |
|
my $length4 = 36; # modem.img flavor |
|
my $length5 = 64; # modem.img verno |
|
my $whence = 0; |
|
my $md_file_size = -s $parse_md_file; |
|
my $pad_size = 0; |
|
|
|
open(MODEM, "< $parse_md_file") or die "Can NOT open file $parse_md_file\n"; |
|
binmode(MODEM); |
|
|
|
seek(MODEM, 0, $whence) or die; |
|
read(MODEM, $buffer, 4) or die; |
|
my $magic = unpack("I", $buffer); |
|
if ($magic == 0x58881688) |
|
{ |
|
# found IMG_HDR_T |
|
read(MODEM, $buffer, 4) or die; |
|
my $dsize = unpack("I", $buffer); |
|
seek(MODEM, 4 + 4 + 32 + 4 + 4 + 4, $whence) or die; |
|
read(MODEM, $buffer, 4) or die; |
|
my $hdr_size = unpack("I", $buffer); |
|
$pad_size = $md_file_size - $dsize - $hdr_size; |
|
} |
|
|
|
seek(MODEM, $md_file_size - $pad_size - 4, $whence) or die; |
|
read(MODEM, $buffer, 4) or die; |
|
my $size = unpack("L", $buffer); |
|
if (($size < $length2) or ($size > $md_file_size)) |
|
{ |
|
# sanity test for struct size |
|
} |
|
else |
|
{ |
|
$length1 = $size; |
|
seek(MODEM, $md_file_size - $pad_size - $length3 - $length4 - $length5 - $length1, $whence) or die "Can NOT seek to the position of modem image rear in \"$parse_md_file\"!\n"; |
|
read(MODEM, $buffer, $length3 + $length4 + $length5 + $length2) or die "Failed to read the rear of the file \"$parse_md_file\"!\n"; |
|
($ref_hash->{"project_name"}, $ref_hash->{"flavor"}, $ref_hash->{"verno"}, $ref_hash->{"check_header"}, $ref_hash->{"header_verno"}, $ref_hash->{"product_ver"}, $ref_hash->{"image_type"}, $ref_hash->{"platform"}, $ref_hash->{"build_time"}, $ref_hash->{"build_ver"}, $ref_hash->{"bind_sys_id"}) = unpack("A128 A36 A64 A12 L L L A16 A64 A64 L", $buffer); |
|
} |
|
|
|
if ($ref_hash->{'check_header'} ne "CHECK_HEADER") |
|
{ |
|
#print "!!!" . $ref_hash->{'check_header'} . "!!!\n"; |
|
warn "Reading from MODEM failed! No CHECK_HEADER info!\n"; |
|
delete $ref_hash->{"project_name"}; |
|
delete $ref_hash->{"flavor"}; |
|
delete $ref_hash->{"verno"}; |
|
delete $ref_hash->{"check_header"}; |
|
delete $ref_hash->{"header_verno"}; |
|
delete $ref_hash->{"product_ver"}; |
|
delete $ref_hash->{"image_type"}; |
|
delete $ref_hash->{"platform"}; |
|
delete $ref_hash->{"build_time"}; |
|
delete $ref_hash->{"build_ver"}; |
|
delete $ref_hash->{"bind_sys_id"}; |
|
close(MODEM); |
|
return 0; |
|
} |
|
elsif ($ref_hash->{"header_verno"} < 2) |
|
{ |
|
delete $ref_hash->{"project_name"}; |
|
delete $ref_hash->{"flavor"}; |
|
delete $ref_hash->{"verno"}; |
|
} |
|
elsif ($ref_hash->{"header_verno"} >= 3) |
|
{ |
|
read(MODEM, $buffer, 4*5) or die "Failed to read the rear of the file \"$parse_md_file\"!\n"; |
|
($ref_hash->{"mem_size"}, $ref_hash->{"md_img_size"}, $ref_hash->{"rpc_sec_mem_addr"}, $ref_hash->{"dsp_img_offset"}, $ref_hash->{"dsp_img_size"}) = unpack("L L L L L", $buffer); |
|
} |
|
close(MODEM); |
|
return 1; |
|
} |
|
|
|
sub Check_MD_Info |
|
{ |
|
my $ref_hash = shift @_; |
|
my $md_id = shift @_; |
|
my $MD_IMG = shift @_; |
|
my $debug = shift @_; |
|
####################################### |
|
# Check if MODEM file exists |
|
####################################### |
|
print "\$MD_IMG = $MD_IMG\n"; |
|
die "[MODEM CHECK FAILED]: The file \"$MD_IMG\" does NOT exist!\n" if (! -e $MD_IMG); |
|
|
|
####################################### |
|
# Read mode(2G/3G), debug/release flag, platform info, project info, serial number, etc. from modem.img |
|
####################################### |
|
my $res = &Parse_MD_Struct($ref_hash, $MD_IMG); |
|
if ($res != 1) |
|
{ |
|
die; |
|
} |
|
my $MD_IMG_DEBUG = $ref_hash->{"product_ver"}; |
|
my $MD_IMG_MODE = $ref_hash->{"image_type"}; |
|
my $MD_IMG_PLATFORM = $ref_hash->{"platform"}; |
|
my $MD_IMG_PROJECT_ID = $ref_hash->{"build_ver"}; |
|
my $MD_IMG_SERIAL_NO = $ref_hash->{"bind_sys_id"}; |
|
|
|
####################################### |
|
# Output debug information |
|
####################################### |
|
if ($debug) |
|
{ |
|
print "*** Info from $md_id modem image ***\n\n"; |
|
print "modem image is $MD_IMG\n"; |
|
print "\$MD_IMG_DEBUG = $MD_IMG_DEBUG [" . sprintf("0x%08x",$MD_IMG_DEBUG) . "]\n"; |
|
print "\$MD_IMG_MODE = $MD_IMG_MODE [" . sprintf("0x%08x",$MD_IMG_MODE) . "]\n"; |
|
print "\$MD_IMG_PLATFORM = $MD_IMG_PLATFORM\n"; |
|
print "\$MD_IMG_PROJECT_ID = $MD_IMG_PROJECT_ID\n"; |
|
print "\$MD_IMG_SERIAL_NO = $MD_IMG_SERIAL_NO [" . sprintf("0x%08x",$MD_IMG_SERIAL_NO) . "]\n"; |
|
} |
|
return 0; |
|
} |
|
|
|
# get modem image name for _x_yy_z part from modem image content |
|
sub get_modem_suffix |
|
{ |
|
my $ref_header = shift @_; |
|
my $flag_force = shift @_; |
|
my $naming_string; |
|
my $MD_HEADER_VERNO = $ref_header->{"header_verno"}; |
|
my $MD_IMG_SERIAL_NO = $ref_header->{"bind_sys_id"}; |
|
my $MD_IMG_MODE = $ref_header->{"image_type"}; |
|
if (($flag_force == 2) || (($flag_force != 1) && ($MD_HEADER_VERNO == 2))) |
|
{ |
|
# "*_x_yy_z" |
|
$naming_string = "_" . Get_MD_X_From_Bind_Sys_Id($MD_IMG_SERIAL_NO); |
|
$naming_string .= "_" . Get_MD_YY_From_Image_Type($MD_IMG_MODE); |
|
#if ((exists $ref_header->{"mem_size"}) && ($ref_header->{"mem_size"} > 90*1024*1024)) |
|
#{ |
|
# $naming_string .= "_" . "s"; |
|
#} |
|
#else |
|
#{ |
|
$naming_string .= "_" . "n"; |
|
#} |
|
} |
|
elsif (($flag_force == 1) || (($flag_force != 2) && ($MD_HEADER_VERNO == 1))) |
|
{ |
|
if (($MD_IMG_SERIAL_NO == 1) || ($MD_IMG_SERIAL_NO == 0)) |
|
{ |
|
# as is |
|
} |
|
elsif ($MD_IMG_SERIAL_NO == 2) |
|
{ |
|
$naming_string = "_sys2"; |
|
} |
|
else |
|
{ |
|
die "Invalid modem bind_sys_id = $MD_IMG_SERIAL_NO"; |
|
} |
|
} |
|
else |
|
{ |
|
die "Invalid modem header_verno = $MD_HEADER_VERNO"; |
|
} |
|
return $naming_string; |
|
} |
|
|
|
sub get_modem_name |
|
{ |
|
my $ref_option = shift @_; |
|
my $bind_sys_id = shift @_; |
|
my $flag_force; |
|
my $image_type; |
|
if (exists $ref_option->{"MTK_MD" . $bind_sys_id . "_SUPPORT"}) |
|
{ |
|
if ($ref_option->{"MTK_MD" . $bind_sys_id . "_SUPPORT"} eq "modem_2g") |
|
{ |
|
$image_type = 1; |
|
$flag_force = 1; |
|
} |
|
elsif ($ref_option->{"MTK_MD" . $bind_sys_id . "_SUPPORT"} eq "modem_3g") |
|
{ |
|
$image_type = 2; |
|
$flag_force = 1; |
|
} |
|
else |
|
{ |
|
$image_type = $ref_option->{"MTK_MD" . $bind_sys_id . "_SUPPORT"}; |
|
$flag_force = 2; |
|
} |
|
} |
|
elsif ($bind_sys_id == 1) |
|
{ |
|
if ($ref_option->{"MTK_MODEM_SUPPORT"} eq "modem_2g") |
|
{ |
|
$image_type = 1; |
|
$flag_force = 1; |
|
} |
|
elsif ($ref_option->{"MTK_MODEM_SUPPORT"} eq "modem_3g") |
|
{ |
|
$image_type = 2; |
|
$flag_force = 1; |
|
} |
|
} |
|
my %temp_feature = ("bind_sys_id" => $bind_sys_id, "image_type" => $image_type, "header_verno" => $flag_force); |
|
my $naming_string = "modem" . &get_modem_suffix(\%temp_feature, $flag_force) . ".img"; |
|
return $naming_string; |
|
} |
|
|
|
sub set_modem_name |
|
{ |
|
my $ref_hash = shift @_; |
|
my $ref_array = shift @_; |
|
my $over_method = shift @_; |
|
my $over_base = shift @_; |
|
my $over_suffix = shift @_; |
|
my $over_ext = shift @_; |
|
foreach my $file (@$ref_array) |
|
{ |
|
my $basename; |
|
my $dirname; |
|
my $extname; |
|
($basename, $dirname, $extname) = fileparse($file, qr/\.[^.]*/); |
|
if ($over_method == 0) |
|
{ |
|
# add suffix in basename |
|
$basename = $over_base if ($over_base ne "*"); |
|
$extname = $over_ext if ($over_ext ne "*"); |
|
} |
|
elsif ($over_method == 1) |
|
{ |
|
# add suffix in filename |
|
$basename .= $extname; |
|
$extname = ""; |
|
} |
|
elsif ($over_method == 2) |
|
{ |
|
# no change |
|
$over_suffix = ""; |
|
} |
|
$ref_hash->{$file} = $basename . $over_suffix . $extname; |
|
} |
|
} |
|
|
|
sub find_modem_bin |
|
{ |
|
my $ref_hash_filelist = shift @_; |
|
my $ref_hash_feature = shift @_; |
|
my $path_of_bin = shift @_; |
|
my $modem_bin_file; |
|
my $modem_bin_link; |
|
$ref_hash_feature->{"TYPE_OF_BIN"} = 0; |
|
my @wildcard_list_0 = &find_modem_glob($path_of_bin . "*_MDBIN_*.bin"); |
|
if (scalar @wildcard_list_0 == 1) |
|
{ |
|
$modem_bin_link = $wildcard_list_0[0]; |
|
$modem_bin_file = $modem_bin_link; |
|
} |
|
elsif (scalar @wildcard_list_0 == 0) |
|
{ |
|
my @wildcard_list_1 = &find_modem_glob($path_of_bin . "*_PCB01_*.bin"); |
|
if (scalar @wildcard_list_1 == 1) |
|
{ |
|
my $wildcard_file = $wildcard_list_1[0]; |
|
if ((! -d $wildcard_file) && (-e $wildcard_file)) |
|
{ |
|
$modem_bin_link = $wildcard_file; |
|
$ref_hash_feature->{"TYPE_OF_BIN"} |= 0b00000001; |
|
} |
|
if ((-d $wildcard_file) && (-e $wildcard_file . "/ROM")) |
|
{ |
|
$modem_bin_link = $wildcard_file . "/ROM"; |
|
$ref_hash_feature->{"TYPE_OF_BIN"} |= 0b00000010; |
|
} |
|
} |
|
elsif (scalar @wildcard_list_1 == 0) |
|
{ |
|
if (-e $path_of_bin . "modem_sys2.img") |
|
{ |
|
$modem_bin_link = $path_of_bin . "modem_sys2.img"; |
|
} |
|
if (-e $path_of_bin . "modem.img") |
|
{ |
|
$modem_bin_link = $path_of_bin . "modem.img"; |
|
} |
|
if (-e $path_of_bin . "cp.rom") |
|
{ |
|
$modem_bin_link = $path_of_bin . "cp.rom"; |
|
} |
|
} |
|
else |
|
{ |
|
print "[ERROR] More than one modem images are found: " . join(" ", @wildcard_list_1) . "\n"; |
|
} |
|
if (-e $path_of_bin . "modem.img") |
|
{ |
|
$modem_bin_file = $path_of_bin . "modem.img"; |
|
$ref_hash_feature->{"TYPE_OF_BIN"} |= 0b00000100; |
|
} |
|
else |
|
{ |
|
$modem_bin_file = $modem_bin_link; |
|
} |
|
} |
|
else |
|
{ |
|
print "[ERROR] More than one modem images are found: " . join(" ", @wildcard_list_0) . "\n"; |
|
} |
|
return ($modem_bin_file, $modem_bin_link); |
|
} |
|
|
|
sub find_modem_mak |
|
{ |
|
my $ref_hash_filelist = shift @_; |
|
my $ref_hash_feature = shift @_; |
|
my $path_of_mak = shift @_; |
|
my $modem_mak_pattern = "*.mak"; |
|
my $modem_mak_file; |
|
my @wildcard_list = &find_modem_glob($path_of_mak . $modem_mak_pattern); |
|
foreach my $wildcard_file (@wildcard_list) |
|
{ |
|
if ($wildcard_file =~ /\bMMI_DRV_DEFS\.mak/) |
|
{ |
|
} |
|
elsif ($wildcard_file =~ /~/) |
|
{ |
|
$modem_mak_file = $wildcard_file; |
|
} |
|
elsif ($modem_mak_file eq "") |
|
{ |
|
$modem_mak_file = $wildcard_file; |
|
} |
|
else |
|
{ |
|
print "[WARNING] Unknown project makefile: " . $wildcard_file . " or " . $modem_mak_file . "\n"; |
|
} |
|
} |
|
return $modem_mak_file; |
|
} |
|
|
|
sub get_modem_file_mapping |
|
{ |
|
my $ref_hash_filelist = shift @_; |
|
my $ref_hash_feature = shift @_; |
|
my $ref_hash_option = shift @_; |
|
my $project_root = shift @_; |
|
my $type_of_load = shift @_; |
|
my $branch_of_ap = shift @_; |
|
|
|
my $path_of_bin; |
|
my $path_of_database; |
|
my $path_of_allinone; |
|
my $modem_bin_file; |
|
my $modem_bin_link; |
|
my $modem_bin_prefix; |
|
my $modem_bin_suffix; |
|
my $modem_mak_file; |
|
my @checklist_of_general; |
|
my @checklist_of_dsp_bin; |
|
my @checklist_of_append; |
|
my @checklist_of_remain; |
|
|
|
my $rule_of_rename = 2; |
|
if (($branch_of_ap eq "") or ($branch_of_ap =~ /KK/)) |
|
{ |
|
$rule_of_rename = 2; |
|
} |
|
elsif ($branch_of_ap =~ /ALPS\.(JB|JB2)\./) |
|
{ |
|
$rule_of_rename = 1; |
|
} |
|
elsif ($branch_of_ap =~ /ALPS\.(ICS|GB)\d*\./) |
|
{ |
|
$rule_of_rename = 1; |
|
} |
|
else |
|
{ |
|
$rule_of_rename = 2; |
|
} |
|
|
|
$project_root =~ s/\/$//; |
|
if ($type_of_load == 0) |
|
{ |
|
$path_of_bin = $project_root . "/" . "bin/"; |
|
} |
|
else |
|
{ |
|
$path_of_bin = $project_root . "/"; |
|
} |
|
($modem_bin_file, $modem_bin_link) = &find_modem_bin($ref_hash_filelist, $ref_hash_feature, $path_of_bin); |
|
$modem_mak_file = &find_modem_mak($ref_hash_filelist, $ref_hash_feature, $path_of_bin); |
|
if (($modem_bin_file eq "") or ($modem_bin_link eq "")) |
|
{ |
|
die "The modem bin is not found"; |
|
} |
|
elsif (! -e $modem_bin_file) |
|
{ |
|
die "The file " . $modem_bin_file . " does NOT exist!"; |
|
} |
|
elsif ($ref_hash_feature->{"TYPE_OF_BIN"} == 0b00000100) |
|
{ |
|
# BACH |
|
$modem_bin_suffix = ""; |
|
# hard code for PMS |
|
$ref_hash_feature->{"bind_sys_id"} = 1; |
|
if ($ref_hash_option) |
|
{ |
|
$ref_hash_option->{"PURE_AP_USE_EXTERNAL_MODEM"} = "yes"; |
|
if ($modem_bin_link =~ /modem_sys2\.img/) |
|
{ |
|
$ref_hash_option->{"MT6280_SUPER_DONGLE"} = "no"; |
|
} |
|
else |
|
{ |
|
$ref_hash_option->{"MT6280_SUPER_DONGLE"} = "yes"; |
|
} |
|
} |
|
} |
|
else |
|
{ |
|
my $res = &Parse_MD_Struct($ref_hash_feature, $modem_bin_file); |
|
if ($res == 1) |
|
{ |
|
$modem_bin_prefix = "md" . $ref_hash_feature->{"bind_sys_id"}; |
|
$modem_bin_suffix = &get_modem_suffix($ref_hash_feature, $rule_of_rename); |
|
$ref_hash_feature->{"suffix"} = $modem_bin_suffix; |
|
print "Modem bin file is " . $modem_bin_file . "\n"; |
|
if ($ref_hash_option) |
|
{ |
|
$ref_hash_option->{"MTK_MD" . $ref_hash_feature->{"bind_sys_id"} . "_SUPPORT"} = $ref_hash_feature->{"image_type"}; |
|
} |
|
} |
|
else |
|
{ |
|
$ref_hash_feature->{"TYPE_OF_BIN"} = 0b00001000; |
|
} |
|
} |
|
if ($ref_hash_filelist) |
|
{ |
|
if ($ref_hash_feature->{"TYPE_OF_BIN"} == 0b00000100) |
|
{ |
|
# BACH |
|
die "Unknown modem spec"; |
|
} |
|
elsif ($ref_hash_feature->{"TYPE_OF_BIN"} == 0b00001000) |
|
{ |
|
# MAUI DSDA |
|
die "Unknown modem spec"; |
|
} |
|
elsif (($ref_hash_feature->{"image_type"} >= 0x08) and ($ref_hash_feature->{"image_type"} <= 0x0C)) |
|
{ |
|
# UMOLY |
|
&set_modem_name($ref_hash_filelist, [$modem_bin_file], 0, $modem_bin_prefix . "bin", "", ".img"); |
|
if (1) |
|
{ |
|
my @wildcard_list_2 = &find_modem_glob($path_of_bin . "*DSP*.bin"); |
|
my @wildcard_list; |
|
foreach my $file (@wildcard_list_2) |
|
{ |
|
if ($file =~ /\bcatcher_/) |
|
{ |
|
} |
|
else |
|
{ |
|
push(@wildcard_list, $file) |
|
} |
|
} |
|
if (scalar @wildcard_list != 1) |
|
{ |
|
die scalar @wildcard_list . " unexpected dsp bin: " . join(" ", @wildcard_list); |
|
} |
|
my $filename = basename($wildcard_list[0]); |
|
&set_modem_name($ref_hash_filelist, [$path_of_bin . $filename], 0, $modem_bin_prefix . "dsp", "", ".img"); |
|
} |
|
if (-e $path_of_bin . "md1arm7.img") |
|
{ |
|
&set_modem_name($ref_hash_filelist, [$path_of_bin . "md1arm7.img"], 0, $modem_bin_prefix . "arm7", "", ".img"); |
|
} |
|
if ($type_of_load == 0) |
|
{ |
|
$path_of_database = $project_root . "/" . "dhl/database/"; |
|
} |
|
else |
|
{ |
|
$path_of_database = $project_root . "/"; |
|
} |
|
foreach my $file (&find_modem_glob($path_of_database . "MDDB*.EDB")) |
|
{ |
|
if ($file =~ /MDDB\.[LP]_/) |
|
{ |
|
} |
|
else |
|
{ |
|
push(@checklist_of_general, $file); |
|
} |
|
} |
|
foreach my $file (&find_modem_glob($path_of_database . "DbgInfo_*")) |
|
{ |
|
if ($file =~ /DbgInfo_[LP]_/) |
|
{ |
|
} |
|
else |
|
{ |
|
push(@checklist_of_append, $file); |
|
} |
|
} |
|
push(@checklist_of_general, $path_of_database . "catcher_filter.bin") if (-e $path_of_database . "catcher_filter.bin"); |
|
push(@checklist_of_general, $path_of_database . "em_filter.bin") if (-e $path_of_database . "em_filter.bin"); |
|
push(@checklist_of_general, $path_of_database . "mdm_layout_desc.dat") if (-e $path_of_database . "mdm_layout_desc.dat"); |
|
push(@checklist_of_general, $path_of_bin . "*.elf"); |
|
foreach my $file (&find_modem_glob($path_of_database . "catcher_filter_*.bin")) |
|
{ |
|
my $filename = basename($file); |
|
my $catcher_suffix = $filename; |
|
$catcher_suffix =~ s/catcher_filter(_\S+)\.bin/$1/; |
|
&set_modem_name($ref_hash_filelist, [$file], 0, "catcher_filter", $modem_bin_suffix . $catcher_suffix, ".bin"); |
|
} |
|
foreach my $file (&find_modem_glob($path_of_database . "MDDB*.XML")) |
|
{ |
|
push(@checklist_of_general, $file); |
|
} |
|
foreach my $file (&find_modem_glob($path_of_database . "MDDB*.XML.GZ")) |
|
{ |
|
my $filename = basename($file); |
|
$filename =~ s/\.XML\.GZ$//; |
|
&set_modem_name($ref_hash_filelist, [$file], 0, $filename, $modem_bin_suffix, ".XML.GZ"); |
|
} |
|
if ($type_of_load == 0) |
|
{ |
|
$path_of_allinone = $project_root . "/" . "bin/md_all_in_one/"; |
|
} |
|
else |
|
{ |
|
$path_of_allinone = $project_root . "/"; |
|
} |
|
if (-e $path_of_allinone . "single_bin_modem.bin") |
|
{ |
|
$ref_hash_filelist->{$path_of_allinone . "single_bin_modem.bin"} = "single_bin_modem.bin"; |
|
} |
|
if (-e $path_of_bin . "MCF_OTA_FILES.tar.gz") |
|
{ |
|
$ref_hash_filelist->{$path_of_bin . "MCF_OTA_FILES.tar.gz"} = "MCF_OTA_FILES.tar.gz"; |
|
} |
|
$ref_hash_feature->{"Android.mk"} = &gen_android_mk_v2(); |
|
} |
|
elsif (($ref_hash_feature->{"image_type"} >= 1) and ($ref_hash_feature->{"image_type"} <= 7)) |
|
{ |
|
# MOLY or C2K |
|
if ($ref_hash_feature->{"bind_sys_id"} == 3) |
|
{ |
|
# C2K |
|
my $filename = basename($modem_bin_file); |
|
&set_modem_name($ref_hash_filelist, [$path_of_bin . "./" . $filename], 0, "modem", $modem_bin_suffix, ".img"); |
|
&set_modem_name($ref_hash_filelist, [$modem_bin_file], 0, $modem_bin_prefix . "img", "", ".img"); |
|
$ref_hash_feature->{"Android.mk"} = &gen_android_mk_v1(); |
|
} |
|
elsif (index($ref_hash_feature->{"platform"}, "MT6570") == 0) |
|
{ |
|
# MOLY WR8 for MT6570 |
|
my $filename = basename($modem_bin_file); |
|
&set_modem_name($ref_hash_filelist, [$path_of_bin . "./" . $filename], 0, $modem_bin_prefix . "bin", "", ".img"); |
|
&set_modem_name($ref_hash_filelist, [$modem_bin_file], 0, $modem_bin_prefix . "img", "", ".img"); |
|
$ref_hash_feature->{"Android.mk"} = &gen_android_mk_v2(); |
|
} |
|
else |
|
{ |
|
# MOLY |
|
&set_modem_name($ref_hash_filelist, [$modem_bin_file], 0, "modem", $modem_bin_suffix, ".img"); |
|
$ref_hash_feature->{"Android.mk"} = &gen_android_mk_v1(); |
|
} |
|
if ($type_of_load == 0) |
|
{ |
|
if (-d $project_root . "/" . "dhl/database") |
|
{ |
|
$path_of_database = $project_root . "/" . "dhl/database/"; |
|
} |
|
elsif (-d $project_root . "/" . "tst/database/") |
|
{ |
|
$path_of_database = $project_root . "/" . "tst/database/"; |
|
} |
|
else |
|
{ |
|
$path_of_database = $project_root . "/" . "bin/"; |
|
} |
|
} |
|
else |
|
{ |
|
$path_of_database = $project_root . "/"; |
|
} |
|
push(@checklist_of_append, $path_of_database . "BPLGUInfoCustom*"); |
|
if (1) |
|
{ |
|
my @wildcard_list = &find_modem_glob($path_of_database . "MDDB*"); |
|
foreach my $file (@wildcard_list) |
|
{ |
|
if ($file =~ /\.EDB$/) |
|
{ |
|
push(@checklist_of_general, $file); |
|
} |
|
else |
|
{ |
|
push(@checklist_of_append, $file); |
|
} |
|
} |
|
} |
|
push(@checklist_of_append, $path_of_database . "BPMdMetaDatabase_*"); |
|
push(@checklist_of_append, $path_of_database . "DbgInfo*"); |
|
push(@checklist_of_general, $path_of_database . "catcher_filter.bin") if (-e $path_of_database . "catcher_filter.bin"); |
|
push(@checklist_of_general, $path_of_database . "em_filter.bin") if (-e $path_of_database . "em_filter.bin"); |
|
push(@checklist_of_general, $path_of_database . "mdm_layout_desc.dat") if (-e $path_of_database . "mdm_layout_desc.dat"); |
|
push(@checklist_of_general, $path_of_database . "mcddll.dll") if (-e $path_of_database . "mcddll.dll"); |
|
push(@checklist_of_dsp_bin, $path_of_bin . "*DSP*.bin") if (&find_modem_glob($path_of_bin . "*DSP*.bin")); |
|
foreach my $file (@checklist_of_dsp_bin) |
|
{ |
|
my @wildcard_list = &find_modem_glob($file); |
|
if (scalar @wildcard_list == 1) |
|
{ |
|
&set_modem_name($ref_hash_filelist, \@wildcard_list, 0, "dsp", $modem_bin_suffix, "*"); |
|
} |
|
else |
|
{ |
|
die scalar @wildcard_list . " unexpected dsp bin: " . join(" ", @wildcard_list); |
|
} |
|
} |
|
# C2K |
|
my $path_of_fsm; |
|
my $path_of_rom; |
|
my $path_of_obj = $path_of_bin; |
|
$path_of_obj =~ s/\/build\/.*$/\/obj\//i; |
|
if ($type_of_load == 2) |
|
{ |
|
$path_of_fsm = $path_of_bin . "fsm_files/images/"; |
|
$path_of_rom = $path_of_bin . "lib/"; |
|
$path_of_rom =~ s/\/build\//\/mtk_rel\//i; |
|
} |
|
else |
|
{ |
|
$path_of_fsm = $path_of_bin; |
|
$path_of_rom = $path_of_bin; |
|
} |
|
if (-e $path_of_rom . "boot.rom") |
|
{ |
|
push(@checklist_of_general, $path_of_rom . "boot.rom"); |
|
} |
|
else |
|
{ |
|
my @wildcard_list = &find_modem_glob($path_of_rom . "*_BOOT_*.bin"); |
|
&set_modem_name($ref_hash_filelist, \@wildcard_list, 0, "boot", $modem_bin_suffix, "rom"); |
|
} |
|
push(@checklist_of_general, $path_of_fsm . "fsm_rf_df.img") if (-e $path_of_fsm . "fsm_rf_df.img"); |
|
push(@checklist_of_general, $path_of_fsm . "fsm_rw_df.img") if (-e $path_of_fsm . "fsm_rw_df.img"); |
|
push(@checklist_of_general, $path_of_fsm . "fsm_cust_df.img") if (-e $path_of_fsm . "fsm_cust_df.img"); |
|
if (-e $path_of_bin . "catcher_filter.bin") |
|
{ |
|
push(@checklist_of_general, $path_of_bin . "catcher_filter.bin"); |
|
} |
|
elsif (-e $path_of_bin . "bin/catcher_filter.bin") |
|
{ |
|
push(@checklist_of_general, $path_of_bin . "bin/catcher_filter.bin"); |
|
} |
|
elsif (-e $path_of_obj . "catcher_filter.bin") |
|
{ |
|
push(@checklist_of_general, $path_of_obj . "catcher_filter.bin"); |
|
} |
|
} |
|
else |
|
{ |
|
die "Unknown modem spec"; |
|
} |
|
foreach my $file (@checklist_of_general) |
|
{ |
|
my @wildcard_list = &find_modem_glob($file); |
|
&set_modem_name($ref_hash_filelist, \@wildcard_list, 0, "*", $modem_bin_suffix, "*"); |
|
} |
|
foreach my $file (@checklist_of_append) |
|
{ |
|
my @wildcard_list = &find_modem_glob($file); |
|
&set_modem_name($ref_hash_filelist, \@wildcard_list, 1, "*", $modem_bin_suffix, "*"); |
|
} |
|
foreach my $file (@checklist_of_remain) |
|
{ |
|
my @wildcard_list = &find_modem_glob($file); |
|
&set_modem_name($ref_hash_filelist, \@wildcard_list, 2, "*", "", "*"); |
|
} |
|
if ($modem_mak_file ne "") |
|
{ |
|
my @wildcard_list = &find_modem_glob($modem_mak_file); |
|
&set_modem_name($ref_hash_filelist, \@wildcard_list, 0, "modem", $modem_bin_suffix, "*"); |
|
} |
|
my $path_of_ims = $path_of_bin; |
|
my @checklist_of_ims; |
|
foreach my $dir ("init_rc", "sepolicy", "makefile", "libs") |
|
{ |
|
if (-d $path_of_ims . $dir) |
|
{ |
|
&find_all_files(\@checklist_of_ims, $path_of_ims, $dir); |
|
} |
|
} |
|
foreach my $file (@checklist_of_ims) |
|
{ |
|
$ref_hash_filelist->{$path_of_ims . $file} = $file; |
|
} |
|
} |
|
} |
|
|
|
sub find_modem_cfg |
|
{ |
|
my $ref_hash_filelist = shift @_; |
|
my $path_of_bin = shift @_; |
|
my $READ_HANDLE; |
|
my @files = &find_modem_glob($path_of_bin . "*.cfg"); |
|
foreach my $file (@files) |
|
{ |
|
if (open($READ_HANDLE, "<$file")) |
|
{ |
|
my @lines = <$READ_HANDLE>; |
|
close $READ_HANDLE; |
|
foreach my $line (@lines) |
|
{ |
|
if ($line =~ /^\s*-\s*file:\s*(\S+)/) |
|
{ |
|
push(@$ref_hash_filelist, $path_of_bin . $1) if ($ref_hash_filelist); |
|
} |
|
} |
|
} |
|
} |
|
return @files; |
|
} |
|
|
|
sub find_modem_glob |
|
{ |
|
my @dirs = @_; |
|
my @result; |
|
foreach my $dir (@dirs) |
|
{ |
|
$dir =~ s/([\[\]\(\)\{\}\^])/\\$1/g; |
|
push(@result, glob $dir); |
|
} |
|
return @result; |
|
} |
|
|
|
sub find_all_files |
|
{ |
|
my $ref_list = shift @_; |
|
my $root = shift @_; |
|
my $sub = shift @_; |
|
$root =~ s/\/$//; |
|
my $path = $root; |
|
my $prefix = ""; |
|
if ($sub ne "") |
|
{ |
|
$path = $root . "/" . $sub; |
|
$prefix = $sub . "/"; |
|
} |
|
my $DIR_HANDLE; |
|
my @list; |
|
if (opendir($DIR_HANDLE, $path)) |
|
{ |
|
@list = readdir($DIR_HANDLE); |
|
closedir($DIR_HANDLE); |
|
} |
|
my @dirs; |
|
foreach my $file (@list) |
|
{ |
|
if (($file eq ".") || ($file eq "..")) |
|
{ |
|
} |
|
elsif (-d $path . "/" . $file) |
|
{ |
|
push(@dirs, $prefix . $file); |
|
} |
|
else |
|
{ |
|
if ($ref_list) |
|
{ |
|
push(@$ref_list, $prefix . $file); |
|
} |
|
} |
|
} |
|
foreach my $dir (@dirs) |
|
{ |
|
&find_all_files($ref_list, $root, $dir) |
|
} |
|
} |
|
|
|
sub gen_android_mk_v1 |
|
{ |
|
my $text = ' |
|
LOCAL_PATH := $(call my-dir) |
|
MTK_MODEM_LOCAL_PATH := $(LOCAL_PATH) |
|
MTK_MODEM_MDDB_FILES := |
|
MTK_MODEM_FIRMWARE_FILES := |
|
MTK_MODEM_VENDOR_FIRMWARE_FILES := |
|
MTK_MODEM_PARTITION_FILES := |
|
MTK_MODEM_MAP_X_1_TO_YY := 2g wg tg lwg ltg sglte ultg ulwg ulwtg ulwcg ulwctg |
|
MTK_MODEM_MAP_X_3_TO_YY := 2g 3g ulwcg ulwctg |
|
|
|
##### INSTALL MODEM FIRMWARE ##### |
|
$(foreach x,1,\ |
|
$(if $(filter-out 0,$(strip $(MTK_MD$(x)_SUPPORT))),\ |
|
$(foreach yy,$(MTK_MODEM_MAP_X_$(x)_TO_YY),\ |
|
$(foreach z,n,\ |
|
$(if $(wildcard $(MTK_MODEM_LOCAL_PATH)/modem_$(x)_$(yy)_$(z).img),\ |
|
$(eval MTK_MODEM_VENDOR_FIRMWARE_FILES += modem_$(x)_$(yy)_$(z).img)\ |
|
$(if $(filter l%g sglte ul%g,$(yy)),\ |
|
$(eval MTK_MODEM_VENDOR_FIRMWARE_FILES += dsp_$(x)_$(yy)_$(z).bin)\ |
|
)\ |
|
$(if $(filter yes,$(strip $(MTK_MDLOGGER_SUPPORT))),\ |
|
$(eval MTK_MODEM_FIRMWARE_FILES += catcher_filter_$(x)_$(yy)_$(z).bin)\ |
|
)\ |
|
$(if $(wildcard $(MTK_MODEM_LOCAL_PATH)/em_filter_$(x)_$(yy)_$(z).bin),\ |
|
$(eval MTK_MODEM_FIRMWARE_FILES += em_filter_$(x)_$(yy)_$(z).bin)\ |
|
)\ |
|
$(if $(wildcard $(MTK_MODEM_LOCAL_PATH)/armv7_$(x)_$(yy)_$(z).bin),\ |
|
$(eval MTK_MODEM_VENDOR_FIRMWARE_FILES += armv7_$(x)_$(yy)_$(z).bin)\ |
|
)\ |
|
)\ |
|
)\ |
|
)\ |
|
)\ |
|
) |
|
$(foreach x,3,\ |
|
$(if $(filter-out 0,$(strip $(MTK_MD$(x)_SUPPORT))),\ |
|
$(foreach yy,$(MTK_MODEM_MAP_X_$(x)_TO_YY),\ |
|
$(foreach z,n,\ |
|
$(if $(wildcard $(MTK_MODEM_LOCAL_PATH)/modem_$(x)_$(yy)_$(z).img),\ |
|
$(eval MTK_MODEM_VENDOR_FIRMWARE_FILES += modem_$(x)_$(yy)_$(z).img)\ |
|
)\ |
|
$(if $(wildcard $(MTK_MODEM_LOCAL_PATH)/boot_$(x)_$(yy)_$(z).rom),\ |
|
$(eval MTK_MODEM_VENDOR_FIRMWARE_FILES += boot_$(x)_$(yy)_$(z).rom)\ |
|
)\ |
|
$(if $(wildcard $(MTK_MODEM_LOCAL_PATH)/fsm_rf_df_$(x)_$(yy)_$(z).img),\ |
|
$(eval MTK_MODEM_VENDOR_FIRMWARE_FILES += fsm_rf_df_$(x)_$(yy)_$(z).img)\ |
|
)\ |
|
$(if $(wildcard $(MTK_MODEM_LOCAL_PATH)/fsm_rw_df_$(x)_$(yy)_$(z).img),\ |
|
$(eval MTK_MODEM_VENDOR_FIRMWARE_FILES += fsm_rw_df_$(x)_$(yy)_$(z).img)\ |
|
)\ |
|
$(if $(wildcard $(MTK_MODEM_LOCAL_PATH)/fsm_cust_df_$(x)_$(yy)_$(z).img),\ |
|
$(eval MTK_MODEM_VENDOR_FIRMWARE_FILES += fsm_cust_df_$(x)_$(yy)_$(z).img)\ |
|
)\ |
|
$(if $(wildcard $(MTK_MODEM_LOCAL_PATH)/catcher_filter_$(x)_$(yy)_$(z).bin),\ |
|
$(eval MTK_MODEM_FIRMWARE_FILES += catcher_filter_$(x)_$(yy)_$(z).bin)\ |
|
)\ |
|
)\ |
|
)\ |
|
)\ |
|
) |
|
########INSTALL MODEM DATABASE######## |
|
$(foreach x,1 3,\ |
|
$(if $(filter-out 0,$(strip $(MTK_MD$(x)_SUPPORT))),\ |
|
$(foreach yy,$(MTK_MODEM_MAP_X_$(x)_TO_YY),\ |
|
$(eval MTK_MODEM_DATABASE_FROM := $(wildcard $(MTK_MODEM_LOCAL_PATH)/BPLGUInfoCustomAppSrcP_*_$(x)_$(yy)_*))\ |
|
$(if $(strip $(MTK_MODEM_DATABASE_FROM)),,\ |
|
$(eval MTK_MODEM_DATABASE_FROM := $(wildcard $(MTK_MODEM_LOCAL_PATH)/BPLGUInfoCustomApp_*_$(x)_$(yy)_*))\ |
|
)\ |
|
$(eval MTK_MODEM_MDDB_FILES += $(notdir $(MTK_MODEM_DATABASE_FROM)))\ |
|
$(eval MTK_MODEM_MDDB_FILES += $(notdir $(wildcard $(MTK_MODEM_LOCAL_PATH)/DbgInfo_*_$(x)_$(yy)_*)))\ |
|
$(eval MTK_MODEM_MDDB_FILES += $(notdir $(wildcard $(MTK_MODEM_LOCAL_PATH)/MDDB*_$(x)_$(yy)_*)))\ |
|
$(eval MTK_MODEM_MDDB_FILES += $(notdir $(wildcard $(MTK_MODEM_LOCAL_PATH)/BPMdMetaDatabase_*_$(x)_$(yy)_*)))\ |
|
$(eval MTK_MODEM_MDDB_FILES += $(notdir $(wildcard $(MTK_MODEM_LOCAL_PATH)/mdm_layout_desc_$(x)_$(yy)_*)))\ |
|
$(eval mddb_check_wildcard := $(wildcard $(MTK_MODEM_LOCAL_PATH)/MDDB_*_$(x)_$(yy)_* $(MTK_MODEM_LOCAL_PATH)/MDDB.C2K.META_*_$(x)_$(yy)_*))\ |
|
$(if $(filter 0 1,$(words $(mddb_check_wildcard))),,\ |
|
$(info More than one MDDB files are found: $(mddb_check_wildcard))\ |
|
$(info Please only keep the latest one)\ |
|
$(error check-modem)\ |
|
)\ |
|
)\ |
|
)\ |
|
) |
|
########INSTALL MODEM PARTITION######## |
|
ifeq ($(strip $(MTK_SINGLE_BIN_MODEM_SUPPORT)),yes) |
|
MTK_MODEM_MDDB_FILES := |
|
MTK_MODEM_FIRMWARE_FILES := |
|
MTK_MODEM_VENDOR_FIRMWARE_FILES := |
|
MTK_MODEM_FILTER_FILES := |
|
else |
|
MTK_MODEM_PARTITION_FILES += $(if $(wildcard $(MTK_MODEM_LOCAL_PATH)/md1img.img),md1img.img) |
|
MTK_MODEM_PARTITION_FILES += $(if $(wildcard $(MTK_MODEM_LOCAL_PATH)/md1dsp.img),md1dsp.img) |
|
MTK_MODEM_PARTITION_FILES += $(if $(wildcard $(MTK_MODEM_LOCAL_PATH)/md1arm7.img),md1arm7.img) |
|
MTK_MODEM_PARTITION_FILES += $(if $(wildcard $(MTK_MODEM_LOCAL_PATH)/md3img.img),md3img.img) |
|
endif |
|
|
|
$(foreach item,$(MTK_MODEM_FIRMWARE_FILES),$(eval $(call mtk-install-modem,$(item),$(TARGET_OUT_VENDOR_ETC)/firmware))) |
|
$(foreach item,$(MTK_MODEM_VENDOR_FIRMWARE_FILES),$(eval $(call mtk-install-modem,$(item),$(TARGET_OUT_VENDOR)/firmware))) |
|
$(foreach item,$(MTK_MODEM_MDDB_FILES),$(eval $(call mtk-install-modem,$(item),$(TARGET_OUT_VENDOR_ETC)/mddb))) |
|
$(foreach item,$(MTK_MODEM_PARTITION_FILES),$(eval $(call mtk-install-modem,$(item),$(PRODUCT_OUT)))) |
|
ifneq ($(strip $(MTK_MODEM_APPS_INCLUDE_FIRST)),yes) |
|
include $(sort $(wildcard $(LOCAL_PATH)/makefile/inst_*.mk)) |
|
MTK_MODEM_APPS_INCLUDE_FIRST := yes |
|
endif |
|
MTK_MODEM_DATABASE_FILES := $(MTK_MODEM_INSTALLED_MODULES) |
|
'; |
|
return $text; |
|
} |
|
|
|
sub gen_android_mk_v2 |
|
{ |
|
my $text = ' |
|
LOCAL_PATH := $(call my-dir) |
|
MTK_MODEM_LOCAL_PATH := $(LOCAL_PATH) |
|
MTK_MODEM_MDDB_FILES := |
|
MTK_MODEM_FIRMWARE_FILES := |
|
MTK_MODEM_FILTER_FILES := |
|
MTK_MODEM_MAP_X_1_TO_YY := 2g wg tg lwg ltg sglte ultg ulwg ulwtg ulwcg ulwctg unlwtg unlwctg |
|
MTK_MODEM_MAP_X_3_TO_YY := 2g 3g ulwcg ulwctg |
|
|
|
##### INSTALL MODEM FIRMWARE ##### |
|
$(foreach x,1 3,\ |
|
$(if $(filter-out 0,$(strip $(MTK_MD$(x)_SUPPORT))),\ |
|
$(foreach yy,$(MTK_MODEM_MAP_X_$(x)_TO_YY),\ |
|
$(foreach z,n,\ |
|
$(if $(wildcard $(MTK_MODEM_LOCAL_PATH)/catcher_filter_$(x)_$(yy)_$(z).bin),\ |
|
$(eval MTK_MODEM_FIRMWARE_FILES += catcher_filter_$(x)_$(yy)_$(z).bin)\ |
|
)\ |
|
$(if $(wildcard $(MTK_MODEM_LOCAL_PATH)/em_filter_$(x)_$(yy)_$(z).bin),\ |
|
$(eval MTK_MODEM_FIRMWARE_FILES += em_filter_$(x)_$(yy)_$(z).bin)\ |
|
)\ |
|
$(eval MTK_MD$(x)_FILTER_FILES += $(wildcard $(MTK_MODEM_LOCAL_PATH)/catcher_filter_$(x)_$(yy)_$(z).bin))\ |
|
$(eval MTK_MD$(x)_EM_FILTER_FILES += $(wildcard $(MTK_MODEM_LOCAL_PATH)/em_filter_$(x)_$(yy)_$(z).bin))\ |
|
)\ |
|
)\ |
|
)\ |
|
) |
|
########INSTALL MODEM DATABASE######## |
|
$(foreach x,1 3,\ |
|
$(if $(filter-out 0,$(strip $(MTK_MD$(x)_SUPPORT))),\ |
|
$(foreach yy,$(MTK_MODEM_MAP_X_$(x)_TO_YY),\ |
|
$(eval MTK_MODEM_MDDB_FILES += $(notdir $(wildcard $(MTK_MODEM_LOCAL_PATH)/DbgInfo_*_$(x)_$(yy)_*)))\ |
|
$(eval MTK_MODEM_MDDB_FILES += $(notdir $(wildcard $(MTK_MODEM_LOCAL_PATH)/MDDB*_$(x)_$(yy)_*)))\ |
|
$(eval MTK_MODEM_MDDB_FILES += $(notdir $(wildcard $(MTK_MODEM_LOCAL_PATH)/BPMdMetaDatabase_*_$(x)_$(yy)_*)))\ |
|
$(eval MTK_MODEM_MDDB_FILES += $(notdir $(wildcard $(MTK_MODEM_LOCAL_PATH)/mdm_layout_desc_$(x)_$(yy)_*)))\ |
|
$(eval MTK_MD$(x)_MDDB_FILES += $(wildcard $(MTK_MODEM_LOCAL_PATH)/MDDB_*_$(x)_$(yy)_*.EDB))\ |
|
$(eval MTK_MD$(x)_MDDBMETAODB_FILES += $(wildcard $(MTK_MODEM_LOCAL_PATH)/MDDB.META*_$(x)_$(yy)_*.XML))\ |
|
$(eval MTK_MD$(x)_MDDBMETAODB_FILES += $(wildcard $(MTK_MODEM_LOCAL_PATH)/MDDB.META*_$(x)_$(yy)_*.XML.GZ))\ |
|
$(eval MTK_MD$(x)_DBGINFO_DSP_FILES += $(wildcard $(MTK_MODEM_LOCAL_PATH)/DbgInfo_DSP_*_$(x)_$(yy)_*))\ |
|
$(eval MTK_MD$(x)_DBGINFO_FILES += $(filter-out $(MTK_MODEM_LOCAL_PATH)/DbgInfo_DSP_%,$(wildcard $(MTK_MODEM_LOCAL_PATH)/DbgInfo_*_$(x)_$(yy)_*)))\ |
|
$(eval MTK_MD$(x)_META_FILES += $(wildcard $(MTK_MODEM_LOCAL_PATH)/MDDB.META_*_$(x)_$(yy)_*.EDB))\ |
|
$(eval MTK_MD$(x)_META_FILES += $(wildcard $(MTK_MODEM_LOCAL_PATH)/BPMdMetaDatabase_*_$(x)_$(yy)_*))\ |
|
$(eval MTK_MD$(x)_M_LAYOUT_FILES += $(wildcard $(MTK_MODEM_LOCAL_PATH)/mdm_layout_desc_$(x)_$(yy)_*.dat))\ |
|
$(eval mddb_check_wildcard := $(wildcard $(MTK_MODEM_LOCAL_PATH)/MDDB_*_$(x)_$(yy)_* $(MTK_MODEM_LOCAL_PATH)/MDDB.C2K.META_*_$(x)_$(yy)_*))\ |
|
$(if $(filter 0 1,$(words $(mddb_check_wildcard))),,\ |
|
$(info More than one MDDB files are found: $(mddb_check_wildcard))\ |
|
$(info Please only keep the latest one)\ |
|
$(error check-modem)\ |
|
)\ |
|
)\ |
|
)\ |
|
) |
|
########INSTALL MODEM FILTER######## |
|
$(foreach x,1,\ |
|
$(if $(filter-out 0,$(strip $(MTK_MD$(x)_SUPPORT))),\ |
|
$(foreach yy,$(MTK_MODEM_MAP_X_$(x)_TO_YY),\ |
|
$(foreach z,n,\ |
|
$(eval custom_filter_wildcard := $(wildcard $(MTK_MODEM_LOCAL_PATH)/catcher_filter_$(x)_$(yy)_$(z)_*.bin))\ |
|
$(eval MTK_MODEM_FILTER_FILES += $(notdir $(custom_filter_wildcard)))\ |
|
$(foreach f,$(custom_filter_wildcard),\ |
|
$(eval k := md$(x)_filter_$(patsubst $(MTK_MODEM_LOCAL_PATH)/catcher_filter_$(x)_$(yy)_$(z)_%.bin,%,$(f)))\ |
|
$(eval MTK_MD1_CUSTOM_FILTER_RULES += $(f):$(k))\ |
|
)\ |
|
)\ |
|
)\ |
|
)\ |
|
) |
|
########INSTALL MODEM PARTITION######## |
|
ifeq ($(strip $(MTK_SINGLE_BIN_MODEM_SUPPORT)),yes) |
|
MTK_MD1_SINGLEBIN_FILES += $(wildcard $(MTK_MODEM_LOCAL_PATH)/single_bin_modem.bin) |
|
MTK_MD1_IMG_FILES += $(wildcard $(MTK_MODEM_LOCAL_PATH)/md1bin.img) |
|
MTK_MD1_DSP_FILES += $(wildcard $(MTK_MODEM_LOCAL_PATH)/md1dsp.img) |
|
MTK_MD3_IMG_FILES += $(wildcard $(MTK_MODEM_LOCAL_PATH)/md3img.img) |
|
MTK_MODEM_MDDB_FILES := |
|
MTK_MODEM_FIRMWARE_FILES := |
|
MTK_MODEM_FILTER_FILES := |
|
else |
|
ifneq ($(wildcard $(MTK_MODEM_LOCAL_PATH)/md1bin.img),) |
|
$(eval $(call mtk-install-mdimg,md1bin.img,$(PRODUCT_OUT),md1img.img)) |
|
endif |
|
ifneq ($(wildcard $(MTK_MODEM_LOCAL_PATH)/md1dsp.img),) |
|
$(eval $(call mtk-install-mdimg,md1dsp.img,$(PRODUCT_OUT),md1dsp.img)) |
|
endif |
|
ifneq ($(wildcard $(MTK_MODEM_LOCAL_PATH)/md3img.img),) |
|
$(eval $(call mtk-install-mdimg,md3img.img,$(PRODUCT_OUT),md3img.img)) |
|
endif |
|
endif#MTK_SINGLE_BIN_MODEM_SUPPORT |
|
MTK_MODEM_MCF_OTA_FILES += $(wildcard $(MTK_MODEM_LOCAL_PATH)/MCF_OTA_FILES.tar.gz) |
|
########DEFINE MODEM MODULE######## |
|
$(foreach item,$(MTK_MODEM_FIRMWARE_FILES),$(eval $(call mtk-install-modem,$(item),$(TARGET_OUT_VENDOR_ETC)/firmware))) |
|
$(foreach item,$(MTK_MODEM_MDDB_FILES),$(eval $(call mtk-install-modem,$(item),$(TARGET_OUT_VENDOR_ETC)/mddb))) |
|
$(foreach item,$(MTK_MODEM_FILTER_FILES),$(eval $(call mtk-install-modem,$(item),$(TARGET_OUT_VENDOR_ETC)/firmware/customfilter))) |
|
########DEFINE APPS MODULE######## |
|
ifneq ($(strip $(MTK_MODEM_APPS_INCLUDE_FIRST)),yes) |
|
include $(sort $(wildcard $(LOCAL_PATH)/makefile/inst_*.mk)) |
|
MTK_MODEM_APPS_INCLUDE_FIRST := yes |
|
endif |
|
MTK_MODEM_DATABASE_FILES := $(MTK_MODEM_INSTALLED_MODULES) |
|
'; |
|
return $text; |
|
} |
|
|
|
return 1; |
|
|
|
|