QNX IPC: WA For DSP Not Receiving Messages
authorAngela Stegmaier <angelabaker@ti.com>
Wed, 24 Apr 2013 21:25:47 +0000 (16:25 -0500)
committerVW <vwan@ti.com>
Tue, 30 Apr 2013 17:28:03 +0000 (10:28 -0700)
There is an issue observed when testing HOST->DSP1
communication using Vayu Virtio where if more than one
message is in the mailbox FIFO, then the DSP only
picks up one message, and the interrupt callback
stops running.

To avoid this issue, the workaround is to make sure
that we only send one message at a time from HOST->DSP1.

A side affect of this is that messages will be dropped,
but since (for the most part), the contents of the mailbox
message are the same, we can get away with this for now.

This may be just a Vayu Virtio issue, and we will
attempt to revert the WA in the future.

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

index bca9168a0ce171d43c11ad917f0073cf343902ad..94ff8c62b685256aee6be4ab480bb80252827b29 100644 (file)
@@ -1482,7 +1482,10 @@ VAYUIpcInt_sendInterrupt (UInt16 procId, UInt32 intId,  UInt32 value)
          * Mailbox 6, id 4 is used by DSP1 for receiving interrupts from HOST
          *
          */
-         REG32(VAYUIpcInt_state.mailbox6Base + MAILBOX_MESSAGE_4_OFFSET) = value;
+        if (REG32(VAYUIpcInt_state.mailbox6Base + MAILBOX_MSGSTATUS_m_OFFSET(4)) == 0)
+            REG32(VAYUIpcInt_state.mailbox6Base + MAILBOX_MESSAGE_4_OFFSET) = value;
+        else
+            GT_0trace (curTrace, GT_4CLASS, "Dropping HOST->DSP1 Mbox Msg");
     } else if (/*procId == VAYUIpcInt_state.procIds [VAYU_INDEX_VIDEOM4]||*/
         procId == VAYUIpcInt_state.procIds [VAYU_INDEX_IPU2]) {
         /*