QNX IPC: Update Int Xbar Programming to Match BIOS-side IPC
authorAngela Stegmaier <angelabaker@ti.com>
Fri, 3 May 2013 17:13:44 +0000 (12:13 -0500)
committerAngela Stegmaier <angelabaker@ti.com>
Sat, 4 May 2013 15:48:45 +0000 (10:48 -0500)
There was a conflict with the MPU Int being used by QNX IPC
for the DSP Mailbox.

The BIOS-side IPC is using MPU INT 141 for HOST receiving
interrupts from IPU2, and MPU INT 136 for HOST receiving
interrupts from DSP1.

QNX IPC is updated to use the same as we know these interrupts
are available.

Signed-off-by: Angela Stegmaier <angelabaker@ti.com>
qnx/src/ipc3x_dev/ti/syslink/family/vayu/Platform.c
qnx/src/ipc3x_dev/ti/syslink/ipc/hlos/knl/arch/vayu/VAYUIpcInt.c

index 370e6561d99c0350bd2048f406efd3eb63be8632..ae114d74467f0f2dbdc2ae3999a35afd95cb941d 100644 (file)
@@ -301,8 +301,8 @@ Platform_overrideConfig (Platform_Config * config, Ipc_Config * cfg)
                     "DSP1");
 
         /* Override the MESSAGEQCOPY default config */
-        config->MQCopyConfig.intId[1] = 116; // 84 + 32
-        config->MQCopyConfig.intId[4] = 115; // 83 + 32
+        config->MQCopyConfig.intId[1] = 173; // 141 + 32
+        config->MQCopyConfig.intId[4] = 168; // 136 + 32
 
 #if !defined(SYSLINK_BUILD_OPTIMIZE)
     }
index f0158af38e0653d044dabf79fe250672030cc69d..3a36fbf012fc97ea5f0b8ef3cf9133f4056b5caf 100644 (file)
@@ -246,7 +246,8 @@ extern "C" {
  *  @brief  interrupt num at offset.
  */
 #define CTRL_MODULE_INT_m_OFFSET(m)      CTRL_MODULE_MPU_OFFSET + \
-                                         ((((m) - CTRL_MODULE_INT_BASE) / 2) * 4)
+                                         ((((m) - CTRL_MODULE_INT_BASE) / 2) * 4) - \
+                                         (((m) > 131) ? 4 : 0)
 
 /*!
  *  @def    IRQ_XBAR_MBOX_6_USR_2
@@ -791,12 +792,13 @@ VAYUIpcInt_interruptRegister  (UInt16                     procId,
         }
     }
     if (elem == &((List_Object *)VAYUIpcInt_state.isrHandles)->elem) {
-        if (procId == MultiProc_getId("DSP1")) {
+        if (procId == VAYUIpcInt_state.procIds [VAYU_INDEX_DSP1]) {
             mboxId = IRQ_XBAR_DSP1;
         }
-        else if (procId == MultiProc_getId("IPU2")){
+        else if (procId == VAYUIpcInt_state.procIds [VAYU_INDEX_IPU2]){
             mboxId = IRQ_XBAR_IPU2;
         }
+
         /* Program the IntXbar */
         reg = REG32(VAYUIpcInt_state.controlModuleBase + CTRL_MODULE_INT_m_OFFSET((intId - 32)));
         if (((intId - 32) - CTRL_MODULE_INT_BASE) % 2) {