[Feature][Modem]Update MTK MODEM V1.6 baseline version: MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6

MTK modem version: MT2735_IVT_MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6.tar.gz
RF  modem version: NA

Change-Id: I45a4c2752fa9d1a618beacd5d40737fb39ab64fb
diff --git a/mcu/tools/AutoGen/postBuild/EMI_MPUinfo.pm b/mcu/tools/AutoGen/postBuild/EMI_MPUinfo.pm
new file mode 100644
index 0000000..c17d4ea
--- /dev/null
+++ b/mcu/tools/AutoGen/postBuild/EMI_MPUinfo.pm
@@ -0,0 +1,237 @@
+#!/usr/bin/perl
+#
+#  Copyright Statement:
+#  --------------------
+#  This software is protected by Copyright and the information contained
+#  herein is confidential. The software may not be copied and the information
+#  contained herein may not be used or disclosed except with the written
+#  permission of MediaTek Inc. (C) 2006
+#
+#  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+#  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+#  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+#  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+#  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+#  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+#  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+#  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+#  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+#  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+#
+#  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+#  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+#  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+#  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+#  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+#
+#  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+#  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+#  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+#  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+#  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+#
+#*****************************************************************************
+#*
+#* Filename:
+#* ---------
+#*   EMI_MPIinfo.pm
+#*
+#* Project:
+#* --------
+#*
+#*
+#* Description:
+#* ------------
+#*   This script is used to get linker symbol for setting EMI RMPU
+#* 
+#*
+#* Author:
+#* -------
+#*   KC Tsai (mtk06471)
+#*
+#*------------------------------------------------------------------------------
+#* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+#*============================================================================
+#****************************************************************************/
+
+BEGIN { push @INC, './common/tools/MemoryUtility/' }  # add additional library path
+use LinkerOutputParser;
+use CommonUtility;
+use FileInfoParser;
+
+package EMI_MPUinfo;
+
+use constant ATTR__NO_PROTECTION  => 0x0;
+use constant ATTR_________SEC_RW  => 0x1;
+use constant ATTR__SEC_RW_NSEC_R  => 0x2;
+use constant ATTR__SEC_RW_NSEC_W  => 0x3;
+use constant ATTR___SEC_R_NSEC_R  => 0x4;
+use constant ATTR______FORBIDDEN  => 0x5;
+use constant ATTR__SEC_R_NSEC_RW  => 0x6;
+use constant ATTR________UNUNSED  => 0xF;
+
+
+
+############# user configuration##############
+
+my $nKBalign = 64; # 64KB alignment  
+#
+# please align this setting with EMI_MPU_REGION in custom_scatstruct.c.template
+#
+my @aEMI_MPU_config = (
+    # Bas of    MCURO   HWRW
+    [LinkerSymPrefix::Image, "MCURO_HWRW",LinkerSymPostfix::Base, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 0
+    # Bas of    MCURW   HWRO
+    [LinkerSymPrefix::Image,"EXTSRAM"           ,LinkerSymPostfix::Base, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 1
+    # Bas of    MCURW   HWRW
+    [LinkerSymPrefix::Image,"EXTSRAM_MCURW_HWRW",LinkerSymPostfix::Base, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 2
+    # Bas of    MD end
+    [LinkerSymPrefix::Image,"DUMMY_END"         ,LinkerSymPostfix::Base, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 3
+    [0                     ,""                  ,0                     , ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 4
+    [0                     ,""                  ,0                     , ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 5
+    [0                     ,""                  ,0                     , ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 6
+    [0                     ,""                  ,0                     , ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 7
+);
+
+#######################################
+
+my $version = "u0.08";
+                         # u0.08,  2016/05/17,  Carl, refine setting for ELBRUS
+                         # u0.07,  2016/03/09,  Carl, refine setting for ELBRUS
+                         # u0.06,  2015/08/26,  Carl, return directly for ELBRUS
+                         # u0.05,  2015/07/06,  Carl, return directly when processing TCM only load
+                         # u0.04,  2015/04/15,  Carl, refine setting for (MCU RO, MDHW RW)  DNC+NC, (MCU RW, MDHW RW)  DNC+NC
+                         # u0.03,  2015/04/02,  Carl, refine setting 
+                         # u0.02,  2015/03/30,  Carl, refine setting 
+                         # u0.01,  2015/01/31,  Carl, return EMI RMPU settion
+           
+sub retrieveEMI_MPU_info()
+{
+    my ($strFilePath, $themf) = @_;
+    my $nAvailableChannel=-1;
+    my @aEMI_MPU;
+    my @aEMI_Domain;
+
+
+    &FileInfo::Parse_MAKEFILE($themf, \%g_MAKEFILE_OPTIONS);
+    if (FileInfo::is("MTK_MODEM_ARCH", "MT6297") or FileInfo::is("MTK_MODEM_ARCH", "MT6297P")) {
+      @aEMI_MPU_config = (
+			  # Bas of    MCURO   HWRW
+			  [LinkerSymPrefix::Image,"MCURO_HWRW"        ,LinkerSymPostfix::Base, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 0
+			  # Bas of    MCURW   HWRO
+			  [LinkerSymPrefix::Image,"EXTSRAM"      ,LinkerSymPostfix::Base, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 1
+			  # Bas of    MCURW   HWRW
+			  [LinkerSymPrefix::Image,"DYNAMIC_CACHEABLE_EXTSRAM_DEFAULT_NONCACHEABLE_MCURW_HWRW",LinkerSymPostfix::Base, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 2
+			  # Bas of    MD end
+			  [LinkerSymPrefix::Image,"DUMMY_END"         ,LinkerSymPostfix::Base, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 3
+			  [0                     ,""                  ,0                     , ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 4
+			  [0                     ,""                  ,0                     , ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 5
+			  [0                     ,""                  ,0                     , ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 6
+			  [0                     ,""                  ,0                     , ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 7
+			 );
+    } else {
+      @aEMI_MPU_config = (
+			  # Bas of    MCURO   HWRW
+			  [LinkerSymPrefix::Image, "MCURO_HWRW",LinkerSymPostfix::Base, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 0
+			  # Bas of    MCURW   HWRO
+			  [LinkerSymPrefix::Image,"EXTSRAM"           ,LinkerSymPostfix::Base, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 1
+			  # Bas of    MCURW   HWRW
+			  [LinkerSymPrefix::Image,"EXTSRAM_MCURW_HWRW",LinkerSymPostfix::Base, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 2
+			  # Bas of    MD end
+			  [LinkerSymPrefix::Image,"DUMMY_END"         ,LinkerSymPostfix::Base, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 3
+			  [0                     ,""                  ,0                     , ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 4
+			  [0                     ,""                  ,0                     , ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 5
+			  [0                     ,""                  ,0                     , ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 6
+			  [0                     ,""                  ,0                     , ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED, ATTR________UNUNSED],     # 7
+			 );
+    }
+    if( &FileInfo::find("TCM_ONLY_LOAD", "TRUE") )
+    {
+        return (0, undef, undef);
+    }
+
+
+    LinkerOutputParser::FileParse($strFilePath);
+
+    
+# offset(base), size
+    my $base=0;
+    for( my $i=0; $i<scalar(@aEMI_MPU_config); ++$i)
+    {
+        my $channel_ref = @aEMI_MPU_config[$i];
+        if( @{$channel_ref}[1] ne ""  )
+        {
+            my $end_addr = &get_Physical_Addr(@{$channel_ref}[0],@{$channel_ref}[1],@{$channel_ref}[2]);
+            push @aEMI_MPU, [$base, $end_addr-$base];
+            $base = $end_addr;
+        }
+        else
+        {
+            $nAvailableChannel = $i if ($nAvailableChannel==-1);
+            push @aEMI_MPU, [0,0];
+            $base = 0;
+        }
+    }
+
+# domain, 4 = nNumEmiMuDomain
+    for( my $i=0; $i<4; ++$i) 
+    {
+        my $nChannelAttr = 0;    	
+        for( my $j=0; $j<scalar(@aEMI_MPU_config); ++$j)
+        {
+            my $channel_ref = @aEMI_MPU_config[$j];
+            $nChannelAttr |= @{$channel_ref}[3+$i] << ($j*4);
+        }
+        push @aEMI_Domain, $nChannelAttr;
+    }
+
+    return ($nAvailableChannel, \@aEMI_MPU, \@aEMI_Domain);
+}
+
+sub get_Physical_Addr()
+{
+    my ($nPrefix, $strName, $nPostfix) = @_;
+
+    my $strSymbol = "0x0FFFFFFF & ";
+    
+    $strSymbol.= "Image\$\$" if( $nPrefix == LinkerSymPrefix::Image );
+    $strSymbol.= "Load\$\$" if( $nPrefix == LinkerSymPrefix::Load );
+    $strSymbol.= $strName;
+    $strSymbol.= "\$\$Base" if( $nPostfix == LinkerSymPostfix::Base );
+    $strSymbol.= "\$\$Limit" if( $nPostfix == LinkerSymPostfix::Limit );
+    $strSymbol.= "\$\$ZIBase" if( $nPostfix == LinkerSymPostfix::ZIBase );
+    $strSymbol.= "\$\$ZILimit" if( $nPostfix == LinkerSymPostfix::ZILimit );
+
+    my $strAddr = &LinkerOutputParser::GetLinkerSymbolAddress( $strName, $nPostfix, $nPrefix );
+    &EMP_MPUinfo_die("no linker symbol $strSymbol") if (defined $strAddr == undef);
+    
+    my $nAddr = hex($strAddr);
+    #mask the Bank bits
+    if(($nAddr & 0xF0000000) == 0x70000000) {
+        $nAddr = $end_addr & 0x1FFFFFFF;
+    } elsif(($nAddr & 0xF0000000) > 0x10000000) {
+        $nAddr = $nAddr & 0x0FFFFFFF;
+    }
+    $strAddr = CommonUtil::Dec2Hex($nAddr);
+    &EMP_MPUinfo_die("symbol $strSymbol address $strAddr is not $nKBalign KB alignment") if ($nAddr != &CommonUtil::GetKBAligned($nAddr, $nKBalign));
+
+    $strSymbol.= " = $strAddr = $nAddr\n";
+    print $strSymbol;
+
+    return $nAddr;    
+}
+
+sub EMP_MPUinfo_die
+{
+    my ($error_msg, $file, $line_no) = @_;
+    my $pack_name = undef;
+    if(!defined $file or !defined $line_no)
+    {
+        ($pack_name, $file, $line_no) = caller;    
+    }
+    &CommonUtil::error_handler($error_msg, $file, $line_no, 'EMP_MPUinfo');    
+}
+
+