Test/Example: Re-define some CSL defintions to cover both keystone and keystone2...
[keystone-rtos/tcp3d-lld.git] / example / src / tcp3d_example_main.c
index c2be5448b0fc9ba22a8002d69297bdc07b160232..45f0156499a0a85d42cc7b625157aace15a2c1b9 100644 (file)
  **********************************************************************/\r
 #define START_CMD_PERIOD            1\r
 \r
+#ifdef CSL_PSC_PD_TCP3D_A\r
+/* Convert Keystone CSL definitions ti Keystone2 CSL definitions */\r
+#define CSL_PSC_PD_TCP3D_01     CSL_PSC_PD_TCP3D_A\r
+#define CSL_PSC_LPSC_TCP3D_0    CSL_PSC_LPSC_TCP3D_A\r
+#endif\r
+\r
 /**********************************************************************\r
  ************************** Test Variables ****************************\r
  **********************************************************************/\r
@@ -230,6 +236,9 @@ Void revt1ChCallback(Void);
 /**\r
  * Cache and other IP functions\r
  */\r
+#ifndef SIMULATOR_SUPPORT\r
+static Int32 enable_ip_instance (UInt32 pwrDmnNum, UInt32 moduleNum);\r
+#endif\r
 static Int32 enable_tcp3d (void);\r
 void tcp3dBeginMemAccess (void *ptr, uint32_t size);\r
 void tcp3dEndMemAccess (void *ptr, uint32_t size);\r
@@ -1226,45 +1235,87 @@ Void allDeInit(Void)
     }\r
 }\r
 \r
+#ifndef SIMULATOR_SUPPORT\r
 /**\r
  *  @b Description\r
  *  @n  \r
- *      This function enables the power/clock domains for TCP3D. \r
+ *      This function enables the power/clock domains for the \r
+ *      specified power domain and module. \r
  *\r
  *  @retval\r
- *      Not Applicable.\r
+ *      0 for enabling power domain, -1 for failure\r
  */\r
-static Int32 enable_tcp3d (void)\r
+static Int32 enable_ip_instance (UInt32 pwrDmnNum, UInt32 moduleNum)\r
 {\r
-#ifndef SIMULATOR_SUPPORT\r
-    /* TCP3D power domain is turned OFF by default.\r
-     * It needs to be turned on before doing any TCP3D device register access.\r
-     * This is not required for the simulator. */\r
-\r
-    /* Set TCP3D Power domain to ON */        \r
-    CSL_PSC_enablePowerDomain (TEST_CSL_PSC_PD_TCP3D);\r
+    /* Power domains are turned OFF by default for many IP blocks. It\r
+     * needs to be turned on before doing any device\r
+     * register access.\r
+     */\r
+    /* Set IP block Power domain to ON */        \r
+    CSL_PSC_enablePowerDomain (pwrDmnNum);\r
 \r
-    /* Enable the clocks too for TCP3D */\r
-    CSL_PSC_setModuleNextState (TEST_CSL_PSC_LPSC_TCP3D, PSC_MODSTATE_ENABLE);\r
+    /* Enable the clocks too for the IP block */\r
+    CSL_PSC_setModuleNextState (moduleNum, PSC_MODSTATE_ENABLE);\r
 \r
     /* Start the state transition */\r
-    CSL_PSC_startStateTransition (TEST_CSL_PSC_PD_TCP3D);\r
+    CSL_PSC_startStateTransition (pwrDmnNum);\r
 \r
     /* Wait until the state transition process is completed. */\r
-    while (!CSL_PSC_isStateTransitionDone (TEST_CSL_PSC_PD_TCP3D));\r
+    while (!CSL_PSC_isStateTransitionDone (pwrDmnNum));\r
 \r
-    /* Return TCP3D PSC status */\r
-    if ((CSL_PSC_getPowerDomainState(TEST_CSL_PSC_PD_TCP3D) == PSC_PDSTATE_ON) &&\r
-        (CSL_PSC_getModuleState (TEST_CSL_PSC_LPSC_TCP3D) == PSC_MODSTATE_ENABLE))\r
+    /* Return IP block PSC status */\r
+    if ((CSL_PSC_getPowerDomainState(pwrDmnNum) == PSC_PDSTATE_ON) &&\r
+        (CSL_PSC_getModuleState (moduleNum) == PSC_MODSTATE_ENABLE))\r
     {\r
-        /* TCP3D ON. Ready for use */            \r
+        /* IP block ON. Ready for use */            \r
         return 0;\r
     }\r
     else\r
     {\r
-        /* TCP3D Power on failed. Return error */            \r
+        /* IP block power on failed. Return error */            \r
         return -1;            \r
     }\r
+}\r
+#endif\r
+\r
+/**\r
+ *  @b Description\r
+ *  @n  \r
+ *      This function enables the power/clock domains for TCP3D. \r
+ *\r
+ *  @retval\r
+ *      Not Applicable.\r
+ */\r
+static Int32 enable_tcp3d (void)\r
+{\r
+#ifndef SIMULATOR_SUPPORT\r
+    Int32  result;\r
+    UInt32 coreID = CSL_chipReadDNUM();\r
+    \r
+    /* TCP3D power domain is turned OFF by default.\r
+     * It needs to be turned on before doing any TCP3D device register access.\r
+     * This is not required for the simulator. \r
+     */\r
+#if (CSL_TCP3D_PER_CNT > 1)\r
+\r
+    if (coreID == 0)\r
+    {\r
+        result = enable_ip_instance (TEST_CSL_PSC_PD_TCP3D_0, \r
+                                     TEST_CSL_PSC_LPSC_TCP3D_0);\r
+    }\r
+    else \r
+    {\r
+        result = enable_ip_instance (TEST_CSL_PSC_PD_TCP3D_1, \r
+                                     TEST_CSL_PSC_LPSC_TCP3D_1);\r
+    }    \r
+#else\r
+    \r
+    result = enable_ip_instance (TEST_CSL_PSC_PD_TCP3D_0, \r
+                                 TEST_CSL_PSC_LPSC_TCP3D_0);\r
+                                 \r
+#endif /* CSL_TCP3D_PER_CNT > 1 */\r
+\r
+    return (result);    \r
 #else\r
     /* PSC is not supported on simulator. Return success always */\r
     return 0;\r