Merge branch 'dev_pasdk_pp_pasdk302' of ssh://git@bitbucket.itg.ti.com/pasdk/pasdk_sr...
authorSu <qsu@ti.com>
Mon, 19 Jun 2017 20:47:49 +0000 (16:47 -0400)
committerSu <qsu@ti.com>
Mon, 19 Jun 2017 20:47:49 +0000 (16:47 -0400)
# Conflicts:
# .gitmodules
# 3p-ip-dts
# pasdk/common/aspDecOpCircBuf_common.h
# pasdk/paf
# pasdk/test_arm/.cproject
# pasdk/test_arm/.project
# pasdk/test_arm/application/app.cfg
# pasdk/test_arm/application/app.cmd
# pasdk/test_arm/framework/audioStreamDecodeProc.c
# pasdk/test_arm/macros.ini_initial
# pasdk/test_dsp/.cproject
# pasdk/test_dsp/.project
# pasdk/test_dsp/application/app.cfg
# pasdk/test_dsp/application/app.cmd
# pasdk/test_dsp/application/itopo/evmk2g/alpha/i13_a.h
# pasdk/test_dsp/application/itopo/evmk2g/atboot.c
# pasdk/test_dsp/framework/audioStreamInpProc.c
# pasdk/test_dsp/framework/itopo/patchs.c
# pasdk/test_dsp/framework/systemInit.c
# pasdk/test_dsp/macros.ini_initial
# pasdk/test_dsp/mib/mib.c
# pasdk/test_dsp/sap/audio_dc_cfg.c
# pasdk/test_dsp/sap/sap.c
# pasdk/test_dsp/sap/sap_d10.c
# psdk_cust/pdk_k2g_1_0_1_0_eng/packages/ti/platform/evmk2g/platform_lib/src/platform_audio.c
# readme_code_install_and_build.txt
# tools
# tools/alpha/i13_a.h
# tools/alpha/pa_i13_evmk2g_io_a.h
# tools/alpha/stdbeta.h

19 files changed:
1  2 
3p-ip-dts
pasdk/common/aspDecOpCircBuf_common.c
pasdk/common/aspDecOpCircBuf_common.h
pasdk/paf
pasdk/test_arm/.cproject
pasdk/test_arm/application/app.cfg
pasdk/test_arm/application/app.cmd
pasdk/test_arm/framework/aspDecOpCircBuf_slave.c
pasdk/test_arm/framework/audioStreamDecodeProc.c
pasdk/test_arm/framework/itopo/params.c
pasdk/test_arm/framework/systemInit.c
pasdk/test_dsp/application/app.cmd
pasdk/test_dsp/application/itopo/evmk2g/alpha/i13_a.h
pasdk/test_dsp/application/itopo/evmk2g/atboot.c
pasdk/test_dsp/framework/aspDecOpCircBuf_master.c
pasdk/test_dsp/framework/audioStreamInpProc.c
pasdk/test_dsp/framework/itopo/params.c
pasdk/test_dsp/framework/itopo/patchs.c
tools

diff --cc 3p-ip-dts
index 4d86b6c36fb92438c21a01dd8cb713a46cb6c903,26aabf08c72afc470e9a72572534862581a31530..b4f4d704e59388b153d8ee242ff01230885dda19
+++ b/3p-ip-dts
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit 4d86b6c36fb92438c21a01dd8cb713a46cb6c903
 -Subproject commit 26aabf08c72afc470e9a72572534862581a31530
++Subproject commit b4f4d704e59388b153d8ee242ff01230885dda19
Simple merge
index 2303d6960ed7e482f6dcf0baac43eb62d92997fb,207bbdbcd291a65eb094485605613d83fb845295..48b8f7b6f3147d79ed30fc947d9e821975314118
@@@ -40,64 -40,53 +40,76 @@@ All rights reserved
  #include <ti/ipc/GateMP.h>
  #include "paftyp.h"
  #include "pafdec.h"
 -#define ASP_DECOP_CB_SOK                    ( 0 )       // ok
 -#define ASP_DECOP_CB_CTL_INIT_INV_GATE      ( ASP_DECOP_CB_SOK-1 )  // error: invalid gate handle
 -#define ASP_DECOP_CB_ERR_START              ( ASP_DECOP_CB_CTL_INIT_INV_GATE )
 -#define ASP_DECOP_CB_MAX_NUM_AF             ( 10 )       // decoder output circular buffer maximum number audio frames
 -#define ASP_DECOP_CB_MAX_NUM_PCM_CH         ( 16 )      // decoder output circular buffer maximum number audio PCM channels
 -#define ASP_DECOP_CB_MAX_NUM_PCM_FRAMES     ( 10 ) // decoder output circular buffer maximum number PCM frames //Qin - Increased to prevent cb overflow for ddp.
 -#define ASP_DECOP_CB_MAX_PCM_FRAME_LEN      ( 6*256 )   // decoder output circular buffer maximum PCM frame length
  
 -#define ASP_DECOP_CB_MAX_NUM_PCM_CH_DDP        ( 16 )     // decoder output circular buffer maximum number audio PCM channels for DDP
 -#define ASP_DECOP_CB_MAX_PCM_FRAME_LEN_48kDDP  ( 6*256 )  // decoder output circular buffer maximum PCM frame length at 48kHz sampling rate
 +//#define CB_RW_OP_CAP_PP // debug
 +#ifdef CB_RW_OP_CAP_PP
 +#define CB_OP_NONE        0
 +#define CB_OP_W           1     // ARM write
 +#define CB_OP_R           2     // DSP read
 +#define CB_OP_COUNT_MAX   10000
 +#endif
  
 -#define ASP_DECOP_CB_MAX_NUM_PCM_CH_MAT        ( 32 )     // decoder output circular buffer maximum number audio PCM channels for MAT
 -#define ASP_DECOP_CB_MAX_PCM_FRAME_LEN_48kMAT  ( 4*256 )  // decoder output circular buffer maximum PCM frame length at 48kHz sampling rate
 +// error return codes
 +#define ASP_DECOP_CB_SOK                        ( 0 )                               // ok
 +#define ASP_DECOP_CB_CTL_INIT_INV_GATE          ( ASP_DECOP_CB_SOK-1 )              // error: invalid gate handle
 +#define ASP_DECOP_CB_ERR_START                  ( ASP_DECOP_CB_CTL_INIT_INV_GATE )  // start error return ID for master & slave error return definitions
  
 -// TODO: update for dts
 -#define ASP_DECOP_CB_MAX_NUM_PCM_CH_DTS        ( 32 )      // decoder output circular buffer maximum number audio PCM channels for MAT
 -#define ASP_DECOP_CB_MAX_PCM_FRAME_LEN_48kDTS  ( 16*256 )  // decoder output circular buffer maximum PCM frame length at 48kHz sampling rate
 +#define ASP_DECOP_CB_MAX_NUM_AF                 ( 30 )      // decoder output circular buffer maximum number audio frames
  
 -#define ASP_DECOP_CB_PCM_BUF_SZ             ( ASP_DECOP_CB_MAX_NUM_PCM_CH * ASP_DECOP_CB_MAX_NUM_PCM_FRAMES * ASP_DECOP_CB_MAX_PCM_FRAME_LEN )
 -#define ASP_DECOP_CB_PCM_BUF_SZ_32CH48kMAT  ( ASP_DECOP_CB_MAX_NUM_PCM_CH_MAT * ASP_DECOP_CB_MAX_NUM_PCM_FRAMES * ASP_DECOP_CB_MAX_PCM_FRAME_LEN_48kMAT )
 +#define ASP_DECOP_CB_MAX_NUM_PCM_CH             ( 16 )      // decoder output circular buffer maximum number audio PCM channels
 +#define ASP_DECOP_CB_MAX_NUM_PCM_FRAMES         ( 15 )      // decoder output circular buffer maximum number PCM frames //Qin - Increased to prevent cb overflow for ddp.
 +#define ASP_DECOP_CB_MAX_PCM_FRAME_LEN          ( 6*256 )   // decoder output circular buffer maximum PCM frame length
  
 -// PCM
 -#define ASP_DECOP_CB_MAX_NUM_AF_PCM         ( 4 )
 -#define ASP_DECOP_CB_INIT_LAG_PCM           ( 2 ) // 1...3
 -#define ASP_DECOP_CB_INIT_WRTIDX_PCM        ( ASP_DECOP_CB_INIT_LAG_PCM )
 -#define ASP_DECOP_CB_INIT_RDIDX_PCM         ( 0 )
 +#define ASP_DECOP_CB_MAX_NUM_PCM_CH_DDP         ( 16 )      // decoder output circular buffer maximum number audio PCM channels for DDP
 +#define ASP_DECOP_CB_MAX_PCM_FRAME_LEN_48kDDP   ( 6*256 )   // decoder output circular buffer maximum PCM frame length at 48kHz sampling rate
  
 -// DDP
 -#define ASP_DECOP_CB_MAX_NUM_AF_DDP         ( 2 )
 -#define ASP_DECOP_CB_INIT_LAG_DDP           ( 4 ) // 0...5
 -#define ASP_DECOP_CB_INIT_WRTIDX_DDP        ( 1 )
 -#define ASP_DECOP_CB_INIT_RDIDX_DDP         ( 0 )
 +#define ASP_DECOP_CB_MAX_NUM_PCM_CH_MAT         ( 32 )      // decoder output circular buffer maximum number audio PCM channels for MAT
 +#define ASP_DECOP_CB_MAX_PCM_FRAME_LEN_48kMAT   ( 4*256 )   // decoder output circular buffer maximum PCM frame length at 48kHz sampling rate
  
 -// MAT-THD
 -#define ASP_DECOP_CB_MAX_NUM_AF_THD         ( 10 )
 -#define ASP_DECOP_CB_INIT_LAG_THD           ( 3 )  
 -#define ASP_DECOP_CB_INIT_WRTIDX_THD        ( 1 )
 -#define ASP_DECOP_CB_INIT_RDIDX_THD         ( 0 )
++// TODO: update for dts
++#define ASP_DECOP_CB_MAX_NUM_PCM_CH_DTS        ( 32 )      // decoder output circular buffer maximum number audio PCM channels for MAT
++#define ASP_DECOP_CB_MAX_PCM_FRAME_LEN_48kDTS  ( 16*256 )  // decoder output circular buffer maximum PCM frame length at 48kHz sampling rate
 +#define ASP_DECOP_CB_PCM_BUF_SZ                 ( ASP_DECOP_CB_MAX_NUM_PCM_CH * ASP_DECOP_CB_MAX_NUM_PCM_FRAMES * ASP_DECOP_CB_MAX_PCM_FRAME_LEN )
 +#define ASP_DECOP_CB_PCM_BUF_SZ_32CH48kMAT      ( ASP_DECOP_CB_MAX_NUM_PCM_CH_MAT * ASP_DECOP_CB_MAX_NUM_PCM_FRAMES * ASP_DECOP_CB_MAX_PCM_FRAME_LEN_48kMAT )
 +
 +#define ASP_DECOP_CB_MAX_NUM_AF_PCM             ( 4 )
 +#if (ASP_DECOP_CB_MAX_NUM_AF_PCM > ASP_DECOP_CB_MAX_NUM_AF)
 +    #error "CB Max AF PCM error"
 +#endif
 +#define ASP_DECOP_CB_INIT_WRTIDX_PCM            ( 0 )
 +#define ASP_DECOP_CB_INIT_RDIDX_PCM             ( 0 )
 +#define ASP_DECOP_CB_INIT_LAG_PCM               ( 2 )
 +#define ASP_DECOP_CB_TARGET_ND_SAMPS_48kPCM     ( ASP_DECOP_CB_INIT_LAG_PCM * 256 ) // PCM target Nominal Delay in number of samples, fs=48 kHz
 +
 +#define ASP_DECOP_CB_MAX_NUM_AF_DDP             ( 2 )
 +#if (ASP_DECOP_CB_MAX_NUM_AF_DDP > ASP_DECOP_CB_MAX_NUM_AF)
 +    #error "CB Max AF DDP error"
 +#endif
 +#define ASP_DECOP_CB_INIT_WRTIDX_DDP            ( 0 )
 +#define ASP_DECOP_CB_INIT_RDIDX_DDP             ( 0 )
 +#define ASP_DECOP_CB_INIT_LAG_DDP               ( 1 )
 +#define ASP_DECOP_CB_TARGET_ND_SAMPS_48kDDP     ( ASP_DECOP_CB_INIT_LAG_DDP * 1536 ) // DDP target Nominal Delay in number of samples, fs=48 kHz
 +
 +#define ASP_DECOP_CB_MAX_NUM_AF_THD             ( 30 ) //( 15 )
 +#if (ASP_DECOP_CB_MAX_NUM_AF_THD > ASP_DECOP_CB_MAX_NUM_AF)
 +    #error "CB Max AF THD error"
 +#endif
 +#define ASP_DECOP_CB_INIT_WRTIDX_THD            ( 0 )
 +#define ASP_DECOP_CB_INIT_RDIDX_THD             ( 0 )
 +//#define ASP_DECOP_CB_INIT_LAG_THD               ( 5 ) // 5*20ms = 100 ms, For the worst case of 100 ms
 +#define ASP_DECOP_CB_TARGET_ND_SAMPS_48kTHD     ( 3504 )//( 2224 ) // THD target Nominal Delay in number of samples, fs=48 kHz
  
 -#define ASP_DECODE_CB_GATE_NAME             ( "AspDecOpCbGate" )
 -#define ASP_DECODE_CB_GATE_REGION_ID        ( 0 )
+ // DTS - TODO: to update for DTS
+ #define ASP_DECOP_CB_MAX_NUM_AF_DTS         ( 10 )
++#if (ASP_DECOP_CB_MAX_NUM_AF_DTS > ASP_DECOP_CB_MAX_NUM_AF)
++    #error "CB Max AF DTS error"
++#endif
+ #define ASP_DECOP_CB_INIT_LAG_DTS           ( 2 )
+ #define ASP_DECOP_CB_INIT_WRTIDX_DTS        ( 3 )
+ #define ASP_DECOP_CB_INIT_RDIDX_DTS         ( 0 )
 +#define ASP_DECODE_CB_GATE_NAME                 ( "AspDecOpCbGate" ) // name of GateMP used for circular buffer shared memory protection
 +#define ASP_DECODE_CB_GATE_REGION_ID            ( 0 )                // IPC shared region ID used for CB gate allocation   
  
  
  // Decoder output circular buffer
diff --cc pasdk/paf
index 618cba3f386feb9e02906fbd2b4b474802e28c9c,f7e52181ad349a1abb90eb81274148621ff971b4..60243bd625ff3c3be4eb20f6f64a31c3016af7e3
+++ b/pasdk/paf
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit 618cba3f386feb9e02906fbd2b4b474802e28c9c
 -Subproject commit f7e52181ad349a1abb90eb81274148621ff971b4
++Subproject commit 60243bd625ff3c3be4eb20f6f64a31c3016af7e3
index 0f88fe9db3d35a730ec23c545dc178c411a89842,bb024ec6020e90469c4139a431ace79d9ba657b4..73fbcfcac8b4642baf96767419e6331d7cd56b8a
                                                                        <listOptionValue builtIn="false" value="&quot;${PROC_AUDIO_SDK_ROOT}/dolby_ip/ddp/Dolby_Digital_Plus_Decoder_Imp/Source_Code/alg&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${PROC_AUDIO_SDK_ROOT}/dolby_ip/ddp/Dolby_Digital_Plus_Decoder_Imp/Source_Code/include&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${PROC_AUDIO_SDK_ROOT}/dolby_ip/mat-thd/Dolby_MAT_Decoder_Imp/Source_Code/alg&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${PROC_AUDIO_SDK_ROOT}/3p-ip-dts/Source_Code/sdk-dts-uhd-no-guidedparma-src/alg/src&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${PROC_AUDIO_SDK_ROOT}/3p-ip-dts/Source_Code/sdk-dts-uhd-no-guidedparma-src/alg/alpha&quot;"/>
 +                                                                      <listOptionValue builtIn="false" value="&quot;${PDK_INSTALL_PATH}&quot;"/>
                                                                </option>
                                                                <option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_4.0.compilerID.MFLOAT_ABI.576208136" name="Specify if floating point hardware should be used (-mfloat-abi)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_4.0.compilerID.MFLOAT_ABI" value="hard" valueType="string"/>
                                                                <option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_4.0.compilerID.OTHER_PREPROC_FLAGS.1983639225" name="Other preprocessor flags (-Xpreprocessor)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_4.0.compilerID.OTHER_PREPROC_FLAGS"/>
index 048eb35c9eb6dfcfde24190025005bafadf2e4b9,de062d0b46e1e771659b455f4efafe7fa29eb1fb..2477eff26a93f9bb072e8461f021bc8c2add2334
@@@ -310,7 -307,7 +310,7 @@@ Program.sectMap[".msmcSramHeap"] = "HOS
  /* Add DDR3 heap */ // formerly SDRAM
  var heapMem2Params = new HeapMem.Params();
  heapMem2Params.instance.name = "heapMemDdr3";
- heapMem2Params.size = 5350528;//4350528;
 -heapMem2Params.size = 4350528 + (3*1024*1024); // Added 3 MB for DTS decoder
++heapMem2Params.size = 5350528+ (3*1024*1024); // Added 3 MB for DTS decoder;//4350528;
  heapMem2Params.sectionName = ".ddr3Heap";
  Program.global.heapMemDdr3 = HeapMem.create(heapMem2Params);
  Program.sectMap[".ddr3Heap"] = "HOST_DDR3";
index cd16eaba4e6f690697c1586bce6da018ac78aea9,1fe9aa1d711581baf73c80bffc18c9f010b32c80..c437d1e521daac4dcce6e7a61f59ccabb680a009
@@@ -32,21 -32,29 +32,31 @@@ All rights reserved
  *
  */
  
 -SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_01\pasdk\paf\pa\build\a15\release )
 -SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_01\dolby_ip\intrinsics\Dolby_Intrinsics_Imp\lib_float_A15 )
 -SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_01\dolby_ip\ddp\Dolby_Digital_Plus_Decoder_Imp\Source_Code\make\ddp_udc_lib\a15 )
 -SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_01\dolby_ip\ddp\Dolby_Digital_Plus_Decoder_Imp\Source_Code\make\ddp_udc_wrapper\a15 )
 -SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_01\dolby_ip\mat-thd\Dolby_MAT_Decoder_Imp\Source_Code\mat_dec\make\dthd_dec_lib\a15 )
 -SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_01\dolby_ip\mat-thd\Dolby_MAT_Decoder_Imp\Source_Code\mat_dec\make\mat_dec_lib\a15 )
 -SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_01\dolby_ip\mat-thd\Dolby_MAT_Decoder_Imp\Source_Code\mat_dec\make\thd_alg_lib\a15 )
 -SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_01\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\dts-3d\misc\build\a15\Release )
 -SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_01\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\dts-base\misc\build\a15\Release )
 -SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_01\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\common-flib\misc\build\a15\Release )
 -SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_01\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\lbr\misc\build\a15\lbr\Release )
 -SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_01\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\lbr\misc\build\a15\lbrdec\Release )
 -SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_01\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\parma-dec\misc\build\a15\Release )
 -SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_01\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\dtshd-c-decoder\misc\build\a15\lib\Release )
 -SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_01\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\la-strm-reconstruction\misc\build\a15\Release )
 -SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_01\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\alg\misc\build\a15\Release )
 +SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_03\pasdk\paf\pa\build\a15\release )
 +SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_03\dolby_ip\intrinsics\Dolby_Intrinsics_Imp\lib_float_A15 )
 +SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_03\dolby_ip\ddp\Dolby_Digital_Plus_Decoder_Imp\Source_Code\make\ddp_udc_lib\a15 )
 +SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_03\dolby_ip\ddp\Dolby_Digital_Plus_Decoder_Imp\Source_Code\make\ddp_udc_wrapper\a15 )
 +SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_03\dolby_ip\mat-thd\Dolby_MAT_Decoder_Imp\Source_Code\mat_dec\make\dthd_dec_lib\a15 )
 +SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_03\dolby_ip\mat-thd\Dolby_MAT_Decoder_Imp\Source_Code\mat_dec\make\mat_dec_lib\a15 )
 +SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_03\dolby_ip\mat-thd\Dolby_MAT_Decoder_Imp\Source_Code\mat_dec\make\thd_alg_lib\a15 )
 +SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_03\pasdk\paf\pa\util\da10x_misc\a15\release )
++SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_03\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\dts-3d\misc\build\a15\Release )
++SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_03\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\dts-base\misc\build\a15\Release )
++SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_03\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\common-flib\misc\build\a15\Release )
++SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_03\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\lbr\misc\build\a15\lbr\Release )
++SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_03\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\lbr\misc\build\a15\lbrdec\Release )
++SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_03\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\parma-dec\misc\build\a15\Release )
++SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_03\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\dtshd-c-decoder\misc\build\a15\lib\Release )
++SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_03\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\la-strm-reconstruction\misc\build\a15\Release )
++SEARCH_DIR ( C:\ti\processor_audio_sdk_1_00_00_03\3p-ip-dts\Source_Code\sdk-dts-uhd-no-guidedparma-src\alg\misc\build\a15\Release )
  
  INPUT ( c67x_cintrins_elf.lib simulate_dma_elf.lib )
  INPUT ( acp_elf.lib asp_std_elf.lib com_asp_elf.lib com_dec_elf.lib pcm1_elf.lib statusop_common_elf.lib )
  INPUT ( dlb_intrinsics_generic_float32_release.a )
- INPUT ( ddp_dec_lib_generic_wrapper_release.a ddp_dec_lib_generic_float32_release.a )
- INPUT ( mat_dec_lib_generic_float32_release.lib thd_alg_lib_generic_float32_release.lib dthd_dec_lib_generic_float32_release.lib )
 -/*INPUT ( ddp_dec_lib_generic_wrapper_release.a ddp_dec_lib_generic_float32_release.a )*/
 -/*INPUT ( mat_dec_lib_generic_float32_release.lib thd_alg_lib_generic_float32_release.lib dthd_dec_lib_generic_float32_release.lib )*/
++/* INPUT ( ddp_dec_lib_generic_wrapper_release.a ddp_dec_lib_generic_float32_release.a ) */
++/* INPUT ( mat_dec_lib_generic_float32_release.lib thd_alg_lib_generic_float32_release.lib dthd_dec_lib_generic_float32_release.lib ) */
 +INPUT ( misc_elf.lib )
+ INPUT ( dts-3d.lib dts-base.lib dts-flib.lib dts-lbr.lib dts-lbr-dec.lib dts-parma-dec.lib dtsx-c-decoder.lib la-strm-reconstruction.lib dts-alg.lib )
  
  SECTIONS
  {
index 31532010ce5082b43cfd48d598efb42756a1b9e6,adf5fcfa906dcc93f7edd5bbf618efd2fd802e97..be5828a57df4739381f43b51d15d4f2861a10ba5
@@@ -268,11 -260,10 +268,10 @@@ Int cbWriteAf
              pPcmBuf += pAfWrt->sampleCount;
              pAfCb->data.samsiz[i] = 0;
          }
 -        Cache_inv(pAfCb->data.sample, pCb->maxAFChanNum*sizeof(PAF_AudioData *), Cache_Type_ALLD, 0);
 +        Cache_inv(pAfCb->data.sample, pCb->maxAFChanNum*sizeof(PAF_AudioData *), Cache_Type_ALLD, 0); // FL: this is write back and invalidate??
          Cache_wait();
  
-         for (i=0; i<pCb->maxAFChanNum; i++){
-         }
          for (i=0; i<PAF_MAX_NUM_PRIVATE_MD; i++)
          {
              pAfCb->pafPrivateMetadata[i].offset = 0;
index 54dfced28c90cdcc6bf8ced1b9d22115810e3f54,308c597d1b0a9db9873671cb52065772e1c27442..86d83f30917ce022949b0ef82c6fc2641d748566
@@@ -123,6 -124,32 +123,7 @@@ Void taskSysInitFxn(Void
          NULL,
          srHeapNonCacheDdr3);
      
 -#ifdef NON_CACHE_STATUS
 -    //
 -    // init Status structure Gate: Has to done before statusOp_Init() call from DSP
 -    //
 -    if (statusOp_Init(GATEMP_INDEX_DEC) == STATUSOP_INIT_FAIL)
 -    {
 -        TRACE_TERSE1("TaskAsdp: Gate Index %d:initialization status GateMP Fail.", GATEMP_INDEX_DEC);
 -    }
 -    if (statusOp_Init(GATEMP_INDEX_DDP) == STATUSOP_INIT_FAIL)
 -    {
 -        TRACE_TERSE1("TaskAsdp: Gate Index %d:initialization status GateMP Fail.", GATEMP_INDEX_DDP);
 -    }
 -    if (statusOp_Init(GATEMP_INDEX_PCM) == STATUSOP_INIT_FAIL)
 -    {
 -        TRACE_TERSE1("TaskAsdp: Gate Index %d:initialization status GateMP Fail.", GATEMP_INDEX_PCM);
 -    }
 -    if (statusOp_Init(GATEMP_INDEX_THD) == STATUSOP_INIT_FAIL)
 -    {
 -        TRACE_TERSE1("TaskAsdp: Gate Index %d:initialization status GateMP Fail.", GATEMP_INDEX_THD);
 -    }
 -    if (statusOp_Init(GATEMP_INDEX_DTS) == STATUSOP_INIT_FAIL)
 -      {
 -              TRACE_TERSE1("TaskAsdp: Gate Index %d:initialization status GateMP Fail.", GATEMP_INDEX_DTS);
 -      }
 -#endif
      /* Initialize HJT */
      pafhjt = &PAFHJT_RAM;
      
index 067130253383b76f61b3a95790a2787ac9a61b3f,0ed36b8172c7f121495ffd3f0554d5470d685877..94d0da64ede5833870d6bd43c7c45bec070edd67
@@@ -53,13 -51,10 +53,13 @@@ All rights reserved
  -l"pcm1_elf.lib"
  -l"dcs7_elf.lib"
  -l"statusop_common_elf.lib"
 +-l"misc_elf.lib"
 +-l"src4_elf.lib"
 +-l"fil_elf.lib"
  
- -l"dolby_oar_lib.lib"
+ /*-l"dolby_oar_lib.lib"*/
 -/*-l"libcar_c66_float_release.lib"*/
 -/*-l"algcar_c66_float_release.lib"*/
 +-l"libcar_c66_float_release.lib"
 +-l"algcar_c66_float_release.lib"
  /* -l"algdap_ht_c66_float_release.lib" */
  /* -l"libdap_ht_c66_float_release.lib" */
  -l"dsplib.lib"
index e1fdda084f1874d675035b292f0695099264c5ed,fb9a9b1eefea85df1d443b191e6c68bad6f1dd5d..ecbbd2b198cbc41c1a4e135b48fec8a2862be36f
@@@ -1,66 -1,65 +1,67 @@@
 -\r
 -/*\r
 -Copyright (c) 2016, Texas Instruments Incorporated - http://www.ti.com/\r
 -All rights reserved.\r
 -\r
 -* Redistribution and use in source and binary forms, with or without \r
 -* modification, are permitted provided that the following conditions\r
 -* are met:\r
 -*\r
 -* Redistributions of source code must retain the above copyright\r
 -* notice, this list of conditions and the following disclaimer.\r
 -*\r
 -* Redistributions in binary form must reproduce the above copyright\r
 -* notice, this list of conditions and the following disclaimer in the\r
 -* documentation and/or other materials provided with the\r
 -* distribution.\r
 -*\r
 -* Neither the name of Texas Instruments Incorporated nor the names of\r
 -* its contributors may be used to endorse or promote products derived\r
 -* from this software without specific prior written permission.\r
 -*\r
 -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
 -* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
 -* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
 -* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
 -* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
 -* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
 -* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
 -* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
 -* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
 -* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
 -* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
 -*\r
 -*/\r
 -\r
 -//\r//\r// I13 master alpha code symbol file\r//\r//\r\r
 -#ifndef _I13_A_H_\r
 -#define _I13_A_H_\r
 -\r
 -\r
 -#include <paftyp_a.h>\r
 -#include <pafsys_a.h>\r
 -#include <acp_a.h>\r
 -#include <inpbuf_a.h>\r
 -#include <pafdec_a.h>\r
 -#include <pafenc_a.h>\r
 -#include <pafvol_a.h>\r
 -#include <outbuf_a.h>\r
 -#include <paferr_a.h>\r
 -#include <pafid_a.h>\r
 -#include <pafstd_a.h>\r
 -#include <pafstream_a.h>\r
 -//#include <pafnic_a.h>\r
 -#include <pcm_a.h>\r
 -#include <pce_a.h>\r
 -#include <ae_a.h>\r
 -//#include <dm_a.h>\r
 -//#include <ddpat_a.h>\r
 -//#include <thd_a.h>\r
 -//#include <oar_a.h>\r
 -//#include <car_a.h>\r
 -//#include <bmda_a.h>\r
 -//#include <dap_a.h>\r
 -#include <dtsuhda_a.h>\r
 -#endif /* _I13_A_H_ */\r
 +
 +/*
 +Copyright (c) 2017, Texas Instruments Incorporated - http://www.ti.com/
 +All rights reserved.
 +
 +* Redistribution and use in source and binary forms, with or without 
 +* modification, are permitted provided that the following conditions
 +* are met:
 +*
 +* Redistributions of source code must retain the above copyright
 +* notice, this list of conditions and the following disclaimer.
 +*
 +* Redistributions in binary form must reproduce the above copyright
 +* notice, this list of conditions and the following disclaimer in the
 +* documentation and/or other materials provided with the
 +* distribution.
 +*
 +* Neither the name of Texas Instruments Incorporated nor the names of
 +* its contributors may be used to endorse or promote products derived
 +* from this software without specific prior written permission.
 +*
 +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 +* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 +* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 +* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 +* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 +* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 +* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 +* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 +*
 +*/
 +
 +//\r//\r// I13 master alpha code symbol file\r//\r//\r
 +#ifndef _I13_A_H_
 +#define _I13_A_H_
 +
 +
 +#include <paftyp_a.h>
 +#include <pafsys_a.h>
 +#include <acp_a.h>
 +#include <inpbuf_a.h>
 +#include <pafdec_a.h>
 +#include <pafenc_a.h>
 +#include <pafvol_a.h>
 +#include <outbuf_a.h>
 +#include <paferr_a.h>
 +#include <pafid_a.h>
 +#include <pafstd_a.h>
 +#include <pafstream_a.h>
 +//#include <pafnic_a.h>
 +#include <pcm_a.h>
 +#include <pce_a.h>
 +//#include <dm_a.h>
 +#include <ae_a.h>
 +#include <ml_a.h>
 +#include <src_a.h>
 +#include <ddpat_a.h>
 +#include <thd_a.h>
 +#include <car_a.h>
 +#include <oar_a.h>
 +#include <bmda_a.h>
 +//#include <dap_a.h>
++#include <dtsuhda_a.h>
 +#endif /* _I13_A_H_ */
index 2b0bdf0649ff8dee2dda65de98593aa29572634e,49795b7e8424655dfdad7580692488737727dd92..c2a93a638c7771ffb4158bf31eb0041e80e97543
@@@ -46,23 -46,72 +46,37 @@@ All rights reserved
  
  #include <pa_i13_evmk2g_io_a.h> //<pa_i13_evmda830_io_a.h>
  
 -#ifndef SIMULATE_SIO
 -#define DTS
 -//#define DDP
 -#ifdef TEST_MULTICHANNEL
 +#include "dbgBenchmark.h" // PCM high-sampling rate + SRC + CAR benchmarking
  
 -#ifdef DTS
 -    //DTS
 -    #define CUS_ATBOOT_S \
 -        writeDECChannelMapTo16(PAF_LEFT,PAF_RGHT,8,9,2,12,10,11,-3,-3,-3,-3,-3,-3,-3,-3), \
 -        writeENCChannelMapFrom16(PAF_LEFT,PAF_RGHT,8,9,2,12,10,11,-3,-3,-3,-3,-3,-3,-3,-3), \
 -        writeVOLControlMasterN(0), \
 -        writeVOLOffsetMasterN(0x7fff), \
 -        writeSYSRecreationModeDirect, \
 -        writeSYSChannelConfigurationRequestSurround4_1, \
 -        execPAIOutAnalog, \
 -        execPAIInHDMIStereo
 -#else
 -    #ifndef DDP
 -    //THD
 -    #define CUS_ATBOOT_S \
 -        writeDECChannelMapTo16(PAF_LEFT,PAF_RGHT,8,9,2,12,10,11,-3,-3,-3,-3,-3,-3,-3,-3), \
 -        writeENCChannelMapFrom16(PAF_LEFT,PAF_RGHT,8,9,2,12,10,11,-3,-3,-3,-3,-3,-3,-3,-3), \
 -        writeVOLControlMasterN(0), \
 -        writeVOLOffsetMasterN(0x7fff), \
 -        writeSYSRecreationModeDirect, \
 -        writeSYSChannelConfigurationRequestSurround4_1, \
 -        execPAIOutAnalog, \
 -        execPAIInHDMI
 -    #else
 -    //DDP
 -    #define CUS_ATBOOT_S \
 -        writeDECChannelMapTo16(PAF_LEFT,PAF_RGHT,8,9,2,12,10,11,-3,-3,-3,-3,-3,-3,-3,-3), \
 -        writeENCChannelMapFrom16(PAF_LEFT,PAF_RGHT,8,9,2,12,6,7,-3,-3,-3,-3,-3,-3,-3,-3), \
 -        writeVOLControlMasterN(0), \
 -        writeVOLOffsetMasterN(0x7fff), \
 -        writeSYSRecreationModeDirect, \
 -        writeSYSChannelConfigurationRequestSurround2ATMOS_1(4), \
 -        execPAIOutAnalog, \
 -        execPAIInHDMIStereo
 -    #endif
 -#endif
 -    //
 -    //writeENCChannelMapFrom16(PAF_LEFT,PAF_RGHT,8,9,2,12,10,11,-3,-3,-3,-3,-3,-3,-3,-3), \     // Lrs/Rrs
 -    //writeENCChannelMapFrom16(PAF_LEFT,PAF_RGHT,8,9,2,12,6,7,-3,-3,-3,-3,-3,-3,-3,-3), \       // Ltm/Rtm
 -    //
 -    //writeVOLControlMasterN(-80), \
 -    //
 -    //
 -    //writeSYSChannelConfigurationRequestSurround4_1, \
 -    //writeSYSChannelConfigurationRequestSurround2ATMOS_1(4), \                                 // L/R,C,LFE,Ls/Rs,Ltm/Rtm
 -    //
 -    //writeDDPJOCDecodeModeDisable, \
 -    //
 -    //
 -    //execPAIOutAnalogSlave, \
 -    //execPAIInAnalog
 -    //execPAIOutAnalog, \
 -    //execPAIInHDMI
 -    //execPAIOutAnalog, \
 -    //execPAIInDigital    
 -    //
 -#else
++#define DTS 1
++#define DDP_ATBOOT_CFG 1
++#ifdef DTS    
++//DTS
++#define CUS_ATBOOT_S \
++      writeDECChannelMapTo16(PAF_LEFT,PAF_RGHT,8,9,2,12,10,11,-3,-3,-3,-3,-3,-3,-3,-3), \
++      writeENCChannelMapFrom16(PAF_LEFT,PAF_RGHT,8,9,2,12,10,11,-3,-3,-3,-3,-3,-3,-3,-3), \
++      writeVOLControlMasterN(0), \
++      writeVOLOffsetMasterN(0x7fff), \
++      writeSYSRecreationModeDirect, \
++      writeSYSChannelConfigurationRequestSurround4_1, \
++      execPAIOutAnalog, \
++      execPAIInHDMIStereo
++#else 
++//Not DTS
 +#ifndef DDP_ATBOOT_CFG
 +//
 +// NOT DDP at-boot configuration
 +//
  
 +#ifndef _ENABLE_BENCHMARK_PCMHSR_SRC_CAR_
 +//
 +// THD at-boot configuration
 +//
 +// NOT Performing PCM high-sampling rate + SRC + CAR benchmarking
 +// 4XI2S HDMI input for multi-ch PCM
  #define CUS_ATBOOT_S \
 -    writeDECChannelMapTo16(PAF_LEFT,PAF_RGHT,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3), \
 -    writeENCChannelMapFrom16(PAF_LEFT,PAF_RGHT,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3), \
 +    writeDECChannelMapTo16(PAF_LEFT,PAF_RGHT,8,9,2,12,10,11,-3,-3,-3,-3,-3,-3,-3,-3), \
 +    writeENCChannelMapFrom16(PAF_LEFT,PAF_RGHT,8,9,2,12,10,11,-3,-3,-3,-3,-3,-3,-3,-3), \
      writeVOLControlMasterN(0), \
      writeVOLOffsetMasterN(0x7fff), \
      writeSYSRecreationModeDirect, \
      writeSYSRecreationModeDirect, \
      writeSYSChannelConfigurationRequestSurround4_1, \
      execPAIOutAnalog, \
 -    execPAIInAnalog
 -    //execPAIOutNone, \
 -    //execPAIInNone
 +    execPAIInHDMI, \
 +    writeSRCModeDisable, \
 +    writeCARModeDisable
 +#endif    
 +    
 +#else // DDP_ATBOOT_CFG
  
 -#endif // SIMULATE_SIO
 +//
 +// DDP at-boot configuration
 +//
 +#define CUS_ATBOOT_S \
 +    writeDECChannelMapTo16(PAF_LEFT,PAF_RGHT,8,9,2,12,10,11,-3,-3,-3,-3,-3,-3,-3,-3), \
 +    writeENCChannelMapFrom16(PAF_LEFT,PAF_RGHT,8,9,2,12,10,11,-3,-3,-3,-3,-3,-3,-3,-3), \
 +    writeVOLControlMasterN(0), \
 +    writeVOLOffsetMasterN(0x7fff), \
 +    writeSYSRecreationModeDirect, \
 +    writeSYSChannelConfigurationRequestSurround4_1, \
 +    execPAIOutAnalog, \
 +    execPAIInHDMIStereo
 +    
 +#endif // DDP_ATBOOT_CFG
++#endif //#ifdef DTS
  
  #pragma DATA_SECTION(cus_atboot_s0_patch, ".none")
  const ACP_Unit cus_atboot_s0_patch[] = {
index af3fa9ed4df3c525f3423cfddc27305e43bb2362,0d9616028be647d9fb73515d99a5c46b55e74580..2c475872e1d1e82ba7fc1ab5fc6ae3e21c6a7d28
@@@ -563,28 -541,10 +565,30 @@@ Void taskAsipFxn
      Cache_inv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD2]), sizeof(Int), Cache_Type_ALLD, 0);
      size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD2]->size;
      Cache_inv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_THD2]), size, Cache_Type_ALLD, 0);
+     size = IACP_STD_BETA_TABLE.pStatus[STD_BETA_DTSUHDA]->size;
+     Cache_inv((Ptr)(IACP_STD_BETA_TABLE.pStatus[STD_BETA_DTSUHDA]), size, Cache_Type_ALLD, 0);
      Cache_wait();
      
 +#ifdef NON_CACHE_STATUS
 +    // Get the shared status structure GateMP handles. Initialized at slave.
 +    if (statusOp_Init(GATEMP_INDEX_DEC) == STATUSOP_INIT_FAIL)
 +    {
 +        Log_info1("TaskAfp: Gate Index %d:Open status GateMP Fail.", GATEMP_INDEX_DEC);
 +    }
 +    if (statusOp_Init(GATEMP_INDEX_DDP) == STATUSOP_INIT_FAIL)
 +    {
 +        Log_info1("TaskAfp: Gate Index %d:Open status GateMP Fail.", GATEMP_INDEX_DDP);
 +    }
 +    if (statusOp_Init(GATEMP_INDEX_PCM) == STATUSOP_INIT_FAIL)
 +    {
 +        Log_info1("TaskAfp: Gate Index %d:Open status GateMP Fail.", GATEMP_INDEX_PCM);
 +    }
 +    if (statusOp_Init(GATEMP_INDEX_THD) == STATUSOP_INIT_FAIL)
 +    {
 +        Log_info1("TaskAfp: Gate Index %d:Open status GateMP Fail.", GATEMP_INDEX_THD);
 +    }
 +#endif
 +
      // (***) FL: revisit
      // invalidate Dec configuration
      Cache_inv(&gPAF_AST_config.xDec[0], DECODEN*sizeof(PAF_AST_Decode), Cache_Type_ALLD, 0);
index d540eb21a035f6d5bdd6b2d3af0e95e3189027a3,6821bc5d574d1460bbc4993c8290b5bf2ec2af73..2c75f21f88edad11bc5d5dc9cdd5b14b4c86ca04
@@@ -46,37 -46,6 +46,37 @@@ All rights reserved
  #include "audioStreamInpProc.h"
  #include "audioStreamOutProc.h"
  
- #define _OAR_
 +#include "dbgBenchmark.h" // PCM high-sampling rate + SRC + CAR benchmarking
 +
 +#ifndef _ENABLE_BENCHMARK_PCMHSR_SRC_CAR_
 +//
 +// NOT performing PCM high-sampling rate + SRC + CAR benchmarking
 +//
 +
 +//#define _AE0_
 +//#define _SRC4_
 +#define _CAR_
- #define _BMDA_
++//#define _OAR_
 +//#define _DAP_
- #define _SRC4_
- #define _CAR_
++//#define _BMDA_
 +//#define _ML0_
 +
 +#else // _ENABLE_BENCHMARK_PCMHSR_SRC_CAR_
 +//
 +// Performing PCM high-sampling rate + SRC + CAR benchmarking
 +//
 +
 +//#define _AE0_
- #define _BMDA_
++//#define _SRC4_
++//#define _CAR_
 +//#define _OAR_
 +//#define _DAP_
++//#define _BMDA_
 +//#define _ML0_
 +
 +#endif // _ENABLE_BENCHMARK_PCMHSR_SRC_CAR_
 +
 +
  //
  // Decoder Definitions
  //
diff --cc tools
index aec438c0bb60b911aca2786343dceb37bfa344ef,0000000000000000000000000000000000000000..0920f6225da7f3cb5aa0b63619ad914925de2caf
mode 160000,000000..160000
--- 1/tools
--- /dev/null
+++ b/tools
@@@ -1,1 -1,0 +1,1 @@@
- Subproject commit aec438c0bb60b911aca2786343dceb37bfa344ef
++Subproject commit 0920f6225da7f3cb5aa0b63619ad914925de2caf