From: Angela Stegmaier Date: Wed, 24 Apr 2013 21:25:47 +0000 (-0500) Subject: QNX IPC: WA For DSP Not Receiving Messages X-Git-Tag: 3.00.00.17_eng~12 X-Git-Url: https://git.ti.com/gitweb?p=ipc%2Fipcdev.git;a=commitdiff_plain;h=f83beccbebf69871fcd15d65525d0a8802850afa QNX IPC: WA For DSP Not Receiving Messages 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 --- diff --git a/qnx/src/ipc3x_dev/ti/syslink/ipc/hlos/knl/arch/vayu/VAYUIpcInt.c b/qnx/src/ipc3x_dev/ti/syslink/ipc/hlos/knl/arch/vayu/VAYUIpcInt.c index bca9168..94ff8c6 100644 --- a/qnx/src/ipc3x_dev/ti/syslink/ipc/hlos/knl/arch/vayu/VAYUIpcInt.c +++ b/qnx/src/ipc3x_dev/ti/syslink/ipc/hlos/knl/arch/vayu/VAYUIpcInt.c @@ -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]) { /*