Fixed IPC init issue.
[processor-sdk/performance-audio-sr.git] / pasdk / test_dsp / framework / systemInit.c
index 4653122d7938095ca8c8d0e34e7719fc876ab74d..d0f746fd04388681fba6845f15b9e8b960930908 100644 (file)
@@ -44,6 +44,7 @@ All rights reserved.
 #include <xdc/runtime/System.h>
 #include <ti/ipc/SharedRegion.h>
 #include <ti/ipc/Ipc.h>
+#include <ti/sysbios/family/c66/Cache.h>
 
 #include "pafhjt.h"
 #include "paf_heapMgr.h"
@@ -57,7 +58,7 @@ All rights reserved.
 #include "fwkSim.h"
 
 extern Void ACP_main_cus(Void);     // (*** ?) FL: revisit -- check method of patching alpha codes
-extern Void idleAudioStream(Void);  // (*** ?) FL: revisit -- shouldn't need to call this from system init
+extern Void taskSystemStreamFxn(Void);  // (*** ?) FL: revisit -- shouldn't need to call this from system init
 
 const PAFHJT_t *pafhjt;
 
@@ -71,13 +72,16 @@ extern PAF_ASOT_Fxns PAF_ASOT_params_fxns;
 
 Int gSysInit=0;
 
-#define TASK_AFP_PRI        ( 1 )
-#define TASK_AIP_PRI        ( 2 )
-#define TASK_ASIP_PRI       ( 3 )
-#define TASK_ASOP_PRI       ( 3 )
+#define TASK_AFP_PRI        ( 3 )//( 1 )  // (***) FL: temporary fix for PASDK-64
+#define TASK_AIP_PRI        ( 1 )//( 2 ) 
+#define TASK_SSP_PRI        ( 1 )
+#define TASK_ASIP_PRI       ( 2 )//( 3 ) 
+#define TASK_ASOP_PRI       ( 2 )//( 3 ) 
 
 #define __TASK_NAME__  "TaskSysInit"
 
+#define SYS_INIT_SLEEP  100
+
 /*
  *  ======== taskSysInitFxn ========
  *  System Initializations task function
@@ -85,13 +89,23 @@ Int gSysInit=0;
 Void taskSysInitFxn(Void)
 {
     UInt16  regionId;
-    IHeap_Handle srHeapMsmc, srHeapDdr3;
+    IHeap_Handle srHeapMsmc, srHeapDdr3, srHeapNonCacheDdr3;
     UInt16 remoteProcId;    
     Int status;
 
 
     Log_info0("Enter taskSysInitFxn()");
 
+    // Create Shared DDR region as non-Cacheable, Before IPC attach
+    // TODO: remove hardcoded address and get correct values from .bld
+    {   // base: 0x81000000, len: 0x01000000,
+        UInt Common2_DDR3_MAR_base = 0x01848204;
+        UInt Common2_DDR3_base = 0x81000000;
+        UInt Common2_DDR3_len = 0x01000000;
+        // disable cache for common2 DDR3
+        Cache_setMar(Common2_DDR3_base, Common2_DDR3_len, Cache_Mar_DISABLE);
+    }
+
     //taskPriAfp = Task_setPri(TaskAfp, -1);
     //taskPriAip = Task_setPri(TaskAip, -1);
     //taskPriAsip = Task_setPri(TaskAsip, -1);
@@ -136,11 +150,14 @@ Void taskSysInitFxn(Void)
     srHeapMsmc = (IHeap_Handle)SharedRegion_getHeap(regionId);
     regionId = SharedRegion_getIdByName("SR_DDR3");
     srHeapDdr3 = (IHeap_Handle)SharedRegion_getHeap(regionId);
+    regionId = SharedRegion_getIdByName("COMMON2_DDR3");
+    srHeapNonCacheDdr3 = (IHeap_Handle)SharedRegion_getHeap(regionId);
     pafHeapMgr_init((IHeap_Handle)heapMemL2Sram, 
         (IHeap_Handle)heapMemMsmcSram, 
         (IHeap_Handle)heapMemDdr3, 
         srHeapMsmc, 
-        srHeapDdr3);
+        srHeapDdr3,
+        srHeapNonCacheDdr3);
     
     /* Initialize HJT */
     pafhjt = &PAFHJT_RAM;
@@ -162,13 +179,19 @@ Void taskSysInitFxn(Void)
     PAF_ASOT_params_fxns.memStatusPrint = PAF_ALG_memStatusPrint;
 #endif
 
-    gSysInit=1;
 
     /* This is required to use SYS alpha codes in atboot? */
-    Log_info0("taskSysInitFxn:idleAudioStream()");
-    idleAudioStream();
-    
-    // Circumvent MessageQ_open() blocking.
+    Log_info0("taskSysInitFxn:TaskSystemStream resume");
+    gSysInit = 0;
+    Task_setPri(TaskSystemStream, TASK_SSP_PRI);
+    // Wait until Execution of TaskSystemStream is complete
+    // once.
+    while (gSysInit == 0)  // gSysInit is set to 1 in TaskSystemStream
+    {
+       Task_sleep(SYS_INIT_SLEEP);
+    }
+
+
     Task_setPri(TaskAfp, TASK_AFP_PRI);
     Task_setPri(TaskAip, TASK_AIP_PRI);
     Task_setPri(TaskAsip, TASK_ASIP_PRI);