OMAP5: Remove unnecessary rpmsg-related code
authorChris Ring <cring@ti.com>
Thu, 30 Jan 2014 19:58:10 +0000 (11:58 -0800)
committerChris Ring <cring@ti.com>
Sat, 1 Feb 2014 23:20:20 +0000 (15:20 -0800)
The original OMAP5 code import included support for running the
IPU in non-SMP BIOS.  This was untested in the context of IPC 3.x,
and is not supported.  The unsupported/dead stuff was obfuscating
the live stuff, so this commit removes it.

There is no intentional change in behavior, other than slight
performance improvement due to small bits of code removal.

packages/ti/ipc/family/omap54xx/InterruptDsp.c
packages/ti/ipc/family/omap54xx/InterruptIpu.c
packages/ti/ipc/family/omap54xx/OffloadM3.c [deleted file]
packages/ti/ipc/family/omap54xx/VirtQueue.c
packages/ti/ipc/family/omap54xx/VirtQueue.h

index 8c5d40dbec8c79286f6b65acc51c076135d0b870..c311b87b9605f12a5e1b0d25b8041322cee3e8e6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2013, Texas Instruments Incorporated
+ * Copyright (c) 2011-2014, Texas Instruments Incorporated
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -45,7 +45,6 @@
 #include "InterruptDsp.h"
 
 /* Register access method. */
-#define REG16(A)   (*(volatile UInt16 *) (A))
 #define REG32(A)   (*(volatile UInt32 *) (A))
 
 #define HOSTINT                 26
@@ -60,7 +59,6 @@
 #define M3_TO_HOST_MBX          1 /* Tx to Host from M3 */
 #define DSP_TO_HOST_MBX         2 /* Tx to Host from DSP */
 #define HOST_TO_DSP_MBX         3 /* Rx on DSP from Host */
-#define SYSM3_TO_APPM3_MBX      4 /* Rx on AppM3 from Host/SysM3 */
 
 #define MAILBOX_BASEADDR    (0x4A0F4000)
 
@@ -146,8 +144,6 @@ Void InterruptDsp_intRegister(Hwi_FuncPtr fxn)
 Void InterruptDsp_intSend(UInt16 remoteProcId, UArg arg)
 {
     static Bool configured = FALSE;
-    static UInt16 sysm3ProcId = MultiProc_INVALIDID;
-    static UInt16 appm3ProcId = MultiProc_INVALIDID;
     static UInt16 hostProcId = MultiProc_INVALIDID;
     static UInt16 dspProcId = MultiProc_INVALIDID;
     static UInt16 ipuProcId = MultiProc_INVALIDID;
@@ -155,22 +151,14 @@ Void InterruptDsp_intSend(UInt16 remoteProcId, UArg arg)
     if (!configured) {
         hostProcId  = MultiProc_getId("HOST");
         dspProcId   = MultiProc_getId("DSP");
-        sysm3ProcId = MultiProc_getId("CORE0");
-        appm3ProcId = MultiProc_getId("CORE1");
         ipuProcId   = MultiProc_getId("IPU");
         configured  = TRUE;
     }
 
-    /* We currently do not support interrupts from DSP to IPU in SMP mode */
+    /* We currently do not support interrupts from DSP to IPU */
     Assert_isTrue(remoteProcId != ipuProcId, NULL);
 
-    if (remoteProcId == sysm3ProcId) {
-        REG32(MAILBOX_MESSAGE(HOST_TO_SYSM3_MBX)) = arg;
-    }
-    else if (remoteProcId == appm3ProcId) {
-        REG32(MAILBOX_MESSAGE(SYSM3_TO_APPM3_MBX)) = arg;
-    }
-    else if (remoteProcId == hostProcId) {
+    if (remoteProcId == hostProcId) {
         REG32(MAILBOX_MESSAGE(DSP_TO_HOST_MBX)) = arg;
     }
     else if (remoteProcId == dspProcId) {
index 443651fc86664d2f20ec6556e89d64c123972a4a..f84fe43203e675467086636f86f97f9e2ca8fdd8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2013, Texas Instruments Incorporated
+ * Copyright (c) 2011-2014, Texas Instruments Incorporated
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
 #include <xdc/runtime/Diags.h>
 
 #include <ti/sysbios/hal/Hwi.h>
-#ifndef SMP
-#include <ti/sysbios/family/arm/ducati/Core.h>
-#endif
-
 #include <ti/ipc/MultiProc.h>
 
 #include "InterruptIpu.h"
@@ -62,7 +58,6 @@
 #define M3_TO_HOST_MBX          1 /* Tx to Host from M3 */
 #define DSP_TO_HOST_MBX         2 /* Tx to Host from DSP */
 #define HOST_TO_DSP_MBX         3 /* Rx on DSP from Host */
-#define SYSM3_TO_APPM3_MBX      4 /* Rx on AppM3 from Host/SysM3 */
 
 #define MAILBOX_BASEADDR        (0xAA0F4000)
 
 #define MAILBOX_IRQENABLE_SET_M3    (MAILBOX_BASEADDR + 0x128)
 #define MAILBOX_IRQENABLE_CLR_M3    (MAILBOX_BASEADDR + 0x12C)
 
-/*
- *  Ducati control register that maintains inter-core interrupt bits.
- *
- *  Using separate core0 and core1 values to do 16-bit reads/writes
- *  because we do not want to overwrite the other cores value.
- */
-#define INTERRUPT_CORE_0       (0x40001000)
-#define INTERRUPT_CORE_1       (0x40001000 + 2)
-
 Hwi_FuncPtr userFxn = NULL;
 
 Void InterruptIpu_isr(UArg arg);
@@ -101,21 +87,8 @@ Void InterruptIpu_isr(UArg arg);
  */
 Void InterruptIpu_intEnable()
 {
-    /*
-     *  If the remote processor communicates via mailboxes, we should enable
-     *  the Mailbox IRQ instead of enabling the Hwi because multiple mailboxes
-     *  share the same Hwi
-     */
-#ifndef SMP
-    if (Core_getId() == 0) {
-#endif
-        REG32(MAILBOX_IRQENABLE_SET_M3) = MAILBOX_REG_VAL(HOST_TO_SYSM3_MBX);
-#ifndef SMP
-    }
-    else {
-        Hwi_enableInterrupt(M3INT);
-    }
-#endif
+    /* Enable the Mailbox IRQ */
+    REG32(MAILBOX_IRQENABLE_SET_M3) = MAILBOX_REG_VAL(HOST_TO_SYSM3_MBX);
 }
 
 /*!
@@ -124,21 +97,8 @@ Void InterruptIpu_intEnable()
  */
 Void InterruptIpu_intDisable()
 {
-    /*
-     *  If the remote processor communicates via mailboxes, we should disable
-     *  the Mailbox IRQ instead of disabling the Hwi because multiple mailboxes
-     *  share the same Hwi
-     */
-#ifndef SMP
-    if (Core_getId() == 0) {
-#endif
-        REG32(MAILBOX_IRQENABLE_CLR_M3) = MAILBOX_REG_VAL(HOST_TO_SYSM3_MBX);
-#ifndef SMP
-    }
-    else {
-        Hwi_disableInterrupt(M3INT);
-    }
-#endif
+    /* Disable the Mailbox IRQ */
+    REG32(MAILBOX_IRQENABLE_CLR_M3) = MAILBOX_REG_VAL(HOST_TO_SYSM3_MBX);
 }
 
 /*!
@@ -156,24 +116,10 @@ Void InterruptIpu_intRegister(Hwi_FuncPtr fxn)
     Hwi_Params_init(&hwiAttrs);
     hwiAttrs.maskSetting = Hwi_MaskingOption_LOWER;
 
-#ifndef SMP
-    if (Core_getId() == 0) {
-#endif
-        Hwi_create(M3INT_MBX,
-                   (Hwi_FuncPtr)InterruptIpu_isr,
-                   &hwiAttrs,
-                   NULL);
-        /* InterruptIpu_intEnable won't enable the Hwi */
-        Hwi_enableInterrupt(M3INT_MBX);
-#ifndef SMP
-    }
-    else {
-        Hwi_create(M3INT,
-                   (Hwi_FuncPtr)InterruptIpu_isr,
-                   &hwiAttrs,
-                   NULL);
-    }
-#endif
+    Hwi_create(M3INT_MBX, (Hwi_FuncPtr)InterruptIpu_isr, &hwiAttrs, NULL);
+
+    /* InterruptIpu_intEnable won't enable the Hwi */
+    Hwi_enableInterrupt(M3INT_MBX);
 
     /* Enable the mailbox interrupt to the M3 core */
     InterruptIpu_intEnable();
@@ -189,10 +135,6 @@ Void InterruptIpu_intRegister(Hwi_FuncPtr fxn)
 Void InterruptIpu_intSend(UInt16 remoteProcId, UArg arg)
 {
     static Bool configured = FALSE;
-#ifndef SMP
-    static UInt16 sysm3ProcId = MultiProc_INVALIDID;
-    static UInt16 appm3ProcId = MultiProc_INVALIDID;
-#endif
     static UInt16 hostProcId = MultiProc_INVALIDID;
     static UInt16 dspProcId = MultiProc_INVALIDID;
 
@@ -203,27 +145,9 @@ Void InterruptIpu_intSend(UInt16 remoteProcId, UArg arg)
     if (!configured) {
         hostProcId  = MultiProc_getId("HOST");
         dspProcId   = MultiProc_getId("DSP");
-#ifndef SMP
-        sysm3ProcId = MultiProc_getId("CORE0");
-        appm3ProcId = MultiProc_getId("CORE1");
-#endif
         configured  = TRUE;
     }
 
-#ifndef SMP
-    if (remoteProcId == sysm3ProcId) {
-        while(REG32(MAILBOX_FIFOSTATUS(HOST_TO_SYSM3_MBX)));
-        REG32(MAILBOX_MESSAGE(HOST_TO_SYSM3_MBX)) = arg;
-    }
-    else if (remoteProcId == appm3ProcId) {
-        while(REG32(MAILBOX_FIFOSTATUS(SYSM3_TO_APPM3_MBX)));
-        /* Write to the mailbox, but this won't trigger an interrupt */
-        REG32(MAILBOX_MESSAGE(SYSM3_TO_APPM3_MBX)) = arg;
-        /* Actually trigger the interrupt */
-        REG16(INTERRUPT_CORE_1) |= 0x1;
-    }
-    else
-#endif
     if (remoteProcId == dspProcId) {
         while(REG32(MAILBOX_FIFOSTATUS(HOST_TO_DSP_MBX)));
         REG32(MAILBOX_MESSAGE(HOST_TO_DSP_MBX)) = arg;
@@ -247,44 +171,15 @@ UInt InterruptIpu_intClear()
     UInt arg = INVALIDPAYLOAD;
 
     /* First check whether incoming mailbox has a message */
-#ifndef SMP
-    if (Core_getId() == 0) {
-#endif
-        /* If FIFO is empty, return INVALIDPAYLOAD */
-        if (REG32(MAILBOX_STATUS(HOST_TO_SYSM3_MBX)) == 0) {
-            return (arg);
-        }
-        else {
-            /* If there is a message, return the argument to the caller */
-            arg = REG32(MAILBOX_MESSAGE(HOST_TO_SYSM3_MBX));
-            REG32(MAILBOX_IRQSTATUS_CLR_M3) =
-                                        MAILBOX_REG_VAL(HOST_TO_SYSM3_MBX);
-        }
-#ifndef SMP
+    /* If FIFO is empty, return INVALIDPAYLOAD */
+    if (REG32(MAILBOX_STATUS(HOST_TO_SYSM3_MBX)) == 0) {
+        return (arg);
     }
     else {
-        /* Clear the inter-M3 interrupt if necessary */
-        if ((REG16(INTERRUPT_CORE_1) & 0x1) == 0x1) {
-            REG16(INTERRUPT_CORE_1) &= ~(0x1);
-        }
-
-        /* If FIFO is empty, return INVALIDPAYLOAD */
-        if (REG32(MAILBOX_STATUS(SYSM3_TO_APPM3_MBX)) == 0) {
-            return (arg);
-        }
-        else {
-            /* If there is a message, return the argument to the caller */
-            arg = REG32(MAILBOX_MESSAGE(SYSM3_TO_APPM3_MBX));
-            REG32(MAILBOX_IRQSTATUS_CLR_M3) =
-                                        MAILBOX_REG_VAL(SYSM3_TO_APPM3_MBX);
-
-            if (REG32(MAILBOX_STATUS(SYSM3_TO_APPM3_MBX)) != 0) {
-                /* Trigger our own interrupt since another interrupt pending */
-                REG16(INTERRUPT_CORE_1) |= 0x1;
-            }
-        }
+        /* If there is a message, return the argument to the caller */
+        arg = REG32(MAILBOX_MESSAGE(HOST_TO_SYSM3_MBX));
+        REG32(MAILBOX_IRQSTATUS_CLR_M3) = MAILBOX_REG_VAL(HOST_TO_SYSM3_MBX);
     }
-#endif
 
     return (arg);
 }
diff --git a/packages/ti/ipc/family/omap54xx/OffloadM3.c b/packages/ti/ipc/family/omap54xx/OffloadM3.c
deleted file mode 100644 (file)
index 32ffc35..0000000
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * Copyright (c) 2011-2013, Texas Instruments Incorporated
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * *  Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * *  Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * *  Neither the name of Texas Instruments Incorporated nor the names of
- *    its contributors may be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-/*
- *  ======== OffloadM3.c ========
- *  Offload some algorithms from AppM3 to SysM3 due to lack of MIPS on AppM3
- *
- */
-
-#include <xdc/std.h>
-#include <xdc/cfg/global.h>
-#include <xdc/runtime/System.h>
-#include <xdc/runtime/Diags.h>
-#include <xdc/runtime/Log.h>
-#include <xdc/runtime/knl/Thread.h>
-
-#include <ti/sysbios/BIOS.h>
-#include <ti/sysbios/knl/Task.h>
-#include <ti/sysbios/knl/Semaphore.h>
-
-#include <ti/ipc/MultiProc.h>
-
-#define RP_MSG_OFFLOAD_BASE 0xF0F0F0F0
-
-enum {
-    OFFLOAD_CREATE_IDX  = 0,
-    OFFLOAD_DELETE_IDX  = 1,
-    OFFLOAD_AC_IDX      = 2,
-    OFFLOAD_VS_IDX      = 3,
-    OFFLOAD_MM_IDX      = 4,
-    OFFLOAD_MAX_IDX     = 5
-};
-
-typedef struct {
-    Void    (*fxn)(Void *);
-    Void    *data;
-    Int     status;
-} MSP_PAYLOAD_TYPE;
-
-typedef struct {
-    Bool             created;
-    Semaphore_Handle mutex;
-    Task_Handle      tasks[OFFLOAD_MAX_IDX];
-    Semaphore_Handle semaphores[OFFLOAD_MAX_IDX];
-} OffloadM3_module;
-
-#pragma DATA_SECTION(interm3PayloadAC, ".interm3offload")
-MSP_PAYLOAD_TYPE interm3PayloadAC;
-#pragma DATA_SECTION(interm3PayloadVS, ".interm3offload")
-MSP_PAYLOAD_TYPE interm3PayloadVS;
-#pragma DATA_SECTION(interm3PayloadMM, ".interm3offload")
-MSP_PAYLOAD_TYPE interm3PayloadMM;
-
-static OffloadM3_module module;
-static UInt16 sysm3ProcId;
-
-/*!
- * ======== OffloadM3_processSysM3Tasks ========
- *
- * Process the different Offload request messages on SysM3. Signal the
- * appropriate tasks for executing the functions to be offloaded.
- */
-Int OffloadM3_processSysM3Tasks(UArg msg)
-{
-    UInt index = (UInt)msg - RP_MSG_OFFLOAD_BASE;
-    if (index >= OFFLOAD_MAX_IDX)
-        return 0;
-
-    Semaphore_post(module.semaphores[index]);
-    return 1;
-}
-
-static Void inline Mutex_enter()
-{
-    Semaphore_pend(module.mutex, BIOS_WAIT_FOREVER);
-}
-
-static Void inline Mutex_leave()
-{
-    Semaphore_post(module.mutex);
-}
-
-static Void OffloadM3_workerTask(UArg sem, UArg fxn)
-{
-    Semaphore_Handle semHandle = (Semaphore_Handle)sem;
-    MSP_PAYLOAD_TYPE *payload = (MSP_PAYLOAD_TYPE *)fxn;
-
-    while(1) {
-        Semaphore_pend(semHandle, BIOS_WAIT_FOREVER);
-        payload->fxn(payload->data);
-        payload->status = 0;
-    }
-}
-
-static Void OffloadM3_createTask(UArg sem, UArg arg1)
-{
-    Semaphore_Handle semHandle = (Semaphore_Handle)sem;
-    Task_Params params;
-    Int i;
-
-    while (1) {
-        Semaphore_pend(semHandle, BIOS_WAIT_FOREVER);
-
-        Mutex_enter();
-        if (!module.created) {
-            for (i = OFFLOAD_AC_IDX; i < OFFLOAD_MAX_IDX; i++) {
-                module.semaphores[i] = Semaphore_create(0, NULL, NULL);
-            }
-
-            Task_Params_init(&params);
-            params.instance->name = "workerTaskAC";
-            params.priority = xdc_runtime_knl_Thread_Priority_NORMAL;
-            params.arg0 = (UArg)module.semaphores[OFFLOAD_AC_IDX];
-            params.arg1 = (UArg)&interm3PayloadAC;
-            module.tasks[OFFLOAD_AC_IDX] = Task_create(OffloadM3_workerTask, &params, NULL);
-
-            Task_Params_init(&params);
-            params.instance->name = "workerTaskVS";
-            params.priority = xdc_runtime_knl_Thread_Priority_NORMAL;
-            params.arg0 = (UArg)module.semaphores[OFFLOAD_VS_IDX];
-            params.arg1 = (UArg)&interm3PayloadVS;
-            module.tasks[OFFLOAD_VS_IDX] = Task_create(OffloadM3_workerTask, &params, NULL);
-
-            Task_Params_init(&params);
-            /* Create a lower priority thread */
-            params.instance->name = "workerTaskMM";
-            params.priority = xdc_runtime_knl_Thread_Priority_BELOW_NORMAL;
-            params.arg0 = (UArg)module.semaphores[OFFLOAD_MM_IDX];
-            params.arg1 = (UArg)&interm3PayloadMM;
-            module.tasks[OFFLOAD_MM_IDX] = Task_create(OffloadM3_workerTask, &params, NULL);
-
-            module.created = TRUE;
-        }
-        Mutex_leave();
-    }
-}
-
-static Void OffloadM3_deleteTask(UArg sem, UArg arg1)
-{
-    Semaphore_Handle semHandle = (Semaphore_Handle)sem;
-    Int i;
-
-    while (1) {
-        Semaphore_pend(semHandle, BIOS_WAIT_FOREVER);
-
-        Mutex_enter();
-        if (module.created) {
-            /*
-             * Since this task is higher priority than any of the subtasks,
-             * they won't be in running state, so we can call Task_delete on
-             * them
-             */
-            for (i = OFFLOAD_AC_IDX; i < OFFLOAD_MAX_IDX; i++) {
-                Task_delete(&module.tasks[i]);
-                Semaphore_delete(&module.semaphores[i]);
-                module.tasks[i] = NULL;
-                module.semaphores[i] = NULL;
-            }
-            module.created = FALSE;
-        }
-        Mutex_leave();
-    }
-}
-
-/*!
- * ======== OffloadM3_init ========
- *
- * Initialize the OffloadM3 module, currently supported only on SysM3
- */
-Void OffloadM3_init()
-{
-    Task_Params taskParams;
-    Semaphore_Params mutexParams;
-
-    sysm3ProcId = MultiProc_getId("CORE0");
-    if (MultiProc_self() != sysm3ProcId)
-        return;
-
-    Semaphore_Params_init(&mutexParams);
-    mutexParams.mode = Semaphore_Mode_BINARY;
-    module.mutex = Semaphore_create(1, NULL, NULL);
-
-    module.created = FALSE;
-    module.semaphores[OFFLOAD_CREATE_IDX] = Semaphore_create(0, NULL, NULL);
-    module.semaphores[OFFLOAD_DELETE_IDX] = Semaphore_create(0, NULL, NULL);
-
-    Task_Params_init(&taskParams);
-    taskParams.instance->name = "OffloadM3_createTask";
-    taskParams.priority = xdc_runtime_knl_Thread_Priority_NORMAL;
-    taskParams.arg0 = (UArg)module.semaphores[OFFLOAD_CREATE_IDX];
-    module.tasks[OFFLOAD_CREATE_IDX] = Task_create(OffloadM3_createTask, &taskParams, NULL);
-
-    Task_Params_init(&taskParams);
-    taskParams.instance->name = "OffloadM3_deleteTask";
-    taskParams.priority = xdc_runtime_knl_Thread_Priority_HIGHEST;
-    taskParams.arg0 = (UArg)module.semaphores[OFFLOAD_DELETE_IDX];
-    module.tasks[OFFLOAD_DELETE_IDX] = Task_create(OffloadM3_deleteTask, &taskParams, NULL);
-}
-
-/*!
- * ======== OffloadM3_exit ========
- *
- * Finalize the OffloadM3 module, currently supported only on SysM3
- */
-Void OffloadM3_exit()
-{
-    if (MultiProc_self() != sysm3ProcId)
-        return;
-
-    Task_delete(&module.tasks[OFFLOAD_CREATE_IDX]);
-    Task_delete(&module.tasks[OFFLOAD_DELETE_IDX]);
-
-    Semaphore_delete(&module.semaphores[OFFLOAD_CREATE_IDX]);
-    Semaphore_delete(&module.semaphores[OFFLOAD_DELETE_IDX]);
-    Semaphore_delete(&module.mutex);
-}
index 0c9a25043aab0dc203f6b0efb904bf0360ba0a13..14a369caa1e1c5c9478aeb546ce86b7b6205bb9b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2013, Texas Instruments Incorporated
+ * Copyright (c) 2011-2014, Texas Instruments Incorporated
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -69,7 +69,6 @@
 #include <ti/sysbios/hal/Hwi.h>
 #include <ti/sysbios/knl/Clock.h>
 #include <ti/sysbios/gates/GateHwi.h>
-#include <ti/sysbios/BIOS.h>
 #include <ti/sysbios/hal/Cache.h>
 
 #include <ti/ipc/MultiProc.h>
                             VIRTIO_CONFIG_S_DRIVER | VIRTIO_CONFIG_S_DRIVER_OK)
 
 /* Used for defining the size of the virtqueue registry */
-#define NUM_QUEUES              4
+#define NUM_QUEUES              2
 
 /* Predefined device addresses */
-#ifndef DSPC674
 #define IPC_MEM_VRING0          0xA0000000
 #define IPC_MEM_VRING1          0xA0004000
-#else
-#define IPC_MEM_VRING0          0x9FB00000
-#define IPC_MEM_VRING1          0x9FB04000
-#endif
-#define IPC_MEM_VRING2          0xA0008000
-#define IPC_MEM_VRING3          0xA000c000
 
 /*
  * Sizes of the virtqueues (expressed in number of buffers supported,
  * and must be power of two)
  */
-#define VQ0_SIZE                256
-#define VQ1_SIZE                256
-#define VQ2_SIZE                256
-#define VQ3_SIZE                256
+#define VQ_SIZE                 256
 
 /*
  * enum - Predefined Mailbox Messages
@@ -165,7 +154,7 @@ enum {
 };
 
 #define DIV_ROUND_UP(n,d)   (((n) + (d) - 1) / (d))
-#define RP_MSG_NUM_BUFS     (VQ0_SIZE) /* must be power of two */
+#define RP_MSG_NUM_BUFS     (VQ_SIZE) /* must be power of two */
 #define RP_MSG_BUF_SIZE     (512)
 #define RP_MSG_BUFS_SPACE   (RP_MSG_NUM_BUFS * RP_MSG_BUF_SIZE * 2)
 
@@ -184,13 +173,6 @@ enum {
 /* The total IPC space needed to communicate with a remote processor */
 #define RPMSG_IPC_MEM   (RP_MSG_BUFS_SPACE + 2 * RP_MSG_RING_SIZE)
 
-#define ID_SYSM3_TO_A9      ID_SELF_TO_A9
-#define ID_A9_TO_SYSM3      ID_A9_TO_SELF
-#define ID_DSP_TO_A9        ID_SELF_TO_A9
-#define ID_A9_TO_DSP        ID_A9_TO_SELF
-#define ID_APPM3_TO_A9      2
-#define ID_A9_TO_APPM3      3
-
 typedef struct VirtQueue_Object {
     /* Id for this VirtQueue_Object */
     UInt16                  id;
@@ -223,16 +205,6 @@ Registry_Desc Registry_CURDESC;
 static struct VirtQueue_Object *queueRegistry[NUM_QUEUES] = {NULL};
 
 static UInt16 hostProcId;
-#ifndef SMP
-static UInt16 dspProcId;
-static UInt16 sysm3ProcId;
-static UInt16 appm3ProcId;
-#endif
-
-#if defined(M3_ONLY) && !defined(SMP)
-extern Void OffloadM3_init();
-extern Int OffloadM3_processSysM3Tasks(UArg msg);
-#endif
 
 /*!
  * ======== _VirtQueue_init ========
@@ -434,101 +406,64 @@ Void VirtQueue_isr(UArg msg)
 
     Log_print1(Diags_USER1, "VirtQueue_isr received msg = 0x%x\n", msg);
 
-#ifndef SMP
-    if (MultiProc_self() == sysm3ProcId || MultiProc_self() == dspProcId) {
-#endif
-        switch(msg) {
-            case (UInt)RP_MSG_MBOX_READY:
-                return;
-
-            case (UInt)RP_MBOX_ECHO_REQUEST:
-                InterruptProxy_intSend(hostProcId, (UInt)(RP_MBOX_ECHO_REPLY));
-                return;
+    switch(msg) {
+        case (UInt)RP_MSG_MBOX_READY:
+            return;
 
-            case (UInt)RP_MBOX_ABORT_REQUEST:
-                {
-                    /* Suppress Coverity Error: FORWARD_NULL: */
-                    /* coverity[assign_zero] */
-                    Fxn f = (Fxn)0x0;
-                    Log_print0(Diags_USER1, "Crash on demand ...\n");
-                    /* coverity[var_deref_op] */
-                    f();
-                }
-                return;
+        case (UInt)RP_MBOX_ECHO_REQUEST:
+            InterruptProxy_intSend(hostProcId, (UInt)(RP_MBOX_ECHO_REPLY));
+            return;
 
-            case (UInt)RP_MSG_FLUSH_CACHE:
-                Cache_wbAll();
-                return;
+        case (UInt)RP_MBOX_ABORT_REQUEST:
+        {
+            /* Suppress Coverity Error: FORWARD_NULL: */
+            /* coverity[assign_zero] */
+            Fxn f = (Fxn)0x0;
+            Log_print0(Diags_USER1, "Crash on demand ...\n");
+            /* coverity[var_deref_op] */
+            f();
+        }
+        return;
 
-#ifndef DSPC674
-            case (UInt)RP_MSG_HIBERNATION:
-                if (IpcPower_canHibernate() == FALSE) {
-                    InterruptProxy_intSend(hostProcId,
-                                        (UInt)RP_MSG_HIBERNATION_CANCEL);
-                    return;
-                }
+        case (UInt)RP_MSG_FLUSH_CACHE:
+            Cache_wbAll();
+            return;
 
-            /* Fall through */
-            case (UInt)RP_MSG_HIBERNATION_FORCE:
-#ifndef SMP
-                /* Core0 should notify Core1 */
-                if (MultiProc_self() == sysm3ProcId) {
-                    InterruptProxy_intSend(appm3ProcId,
-                                           (UInt)(RP_MSG_HIBERNATION));
-                }
-#endif
-                /* Ack request */
+        case (UInt)RP_MSG_HIBERNATION:
+            if (IpcPower_canHibernate() == FALSE) {
                 InterruptProxy_intSend(hostProcId,
-                                    (UInt)RP_MSG_HIBERNATION_ACK);
-                IpcPower_suspend();
+                        (UInt)RP_MSG_HIBERNATION_CANCEL);
                 return;
-#endif
-            default:
-#if defined(M3_ONLY) && !defined(SMP)
-                /* Check and process any Inter-M3 Offload messages */
-                if (OffloadM3_processSysM3Tasks(msg))
-                    return;
-#endif
-
-                /*
-                 *  If the message isn't one of the above, it's either part of the
-                 *  2-message synchronization sequence or it a virtqueue message
-                 */
-                break;
-        }
-#ifndef SMP
-    }
-#ifndef DSPC674
-    else if (msg & 0xFFFF0000) {
-        if (msg == (UInt)RP_MSG_HIBERNATION) {
+            }
+
+            /* Fall through */
+        case (UInt)RP_MSG_HIBERNATION_FORCE:
+            /* Ack request */
+            InterruptProxy_intSend(hostProcId,
+                    (UInt)RP_MSG_HIBERNATION_ACK);
             IpcPower_suspend();
-        }
-        return;
+            return;
+
+        default:
+            /*
+             *  If the message isn't one of the above, it's either part of the
+             *  2-message synchronization sequence or it a virtqueue message
+             */
+            break;
     }
 
-    if (MultiProc_self() == sysm3ProcId && (msg == ID_A9_TO_APPM3 || msg == ID_APPM3_TO_A9)) {
-        InterruptProxy_intSend(appm3ProcId, (UInt)msg);
+    /* Don't let unknown messages to pass as a virtqueue index */
+    if (msg >= NUM_QUEUES) {
+        /* Adding print here deliberately, we should never see this */
+        System_printf("VirtQueue_isr: Invalid mailbox message 0x%x "
+                "received\n", msg);
+        return;
     }
-    else {
-#endif
-#endif
-        /* Don't let unknown messages to pass as a virtqueue index */
-        if (msg >= NUM_QUEUES) {
-            /* Adding print here deliberately, we should never see this */
-            System_printf("VirtQueue_isr: Invalid mailbox message 0x%x "
-                          "received\n", msg);
-            return;
-        }
 
-        vq = queueRegistry[msg];
-        if (vq) {
-            vq->callback(vq);
-        }
-#ifndef SMP
-#ifndef DSPC674
+    vq = queueRegistry[msg];
+    if (vq) {
+        vq->callback(vq);
     }
-#endif
-#endif
 }
 
 
@@ -562,14 +497,6 @@ VirtQueue_Handle VirtQueue_create(UInt16 remoteProcId, VirtQueue_Params *params,
     vq->procId = remoteProcId;
     vq->last_avail_idx = 0;
 
-#ifndef SMP
-    if (MultiProc_self() == appm3ProcId) {
-        /* vqindices that belong to AppM3 should be big so they don't
-         * collide with SysM3's virtqueues */
-         vq->id += 2;
-    }
-#endif
-
     switch (vq->id) {
         /* IPC transport vrings */
         case ID_SELF_TO_A9:
@@ -580,16 +507,6 @@ VirtQueue_Handle VirtQueue_create(UInt16 remoteProcId, VirtQueue_Params *params,
             /* A9 -> IPU/DSP */
             vringAddr = (struct vring *) IPC_MEM_VRING1;
             break;
-#ifndef SMP
-        case ID_APPM3_TO_A9:
-            /* APPM3 -> A9 */
-            vringAddr = (struct vring *) IPC_MEM_VRING2;
-            break;
-        case ID_A9_TO_APPM3:
-            /* A9 -> APPM3 */
-            vringAddr = (struct vring *) IPC_MEM_VRING3;
-            break;
-#endif
         default:
             GateHwi_delete(&vq->gateH);
             Memory_free(NULL, vq, sizeof(VirtQueue_Object));
@@ -623,22 +540,9 @@ VirtQueue_Handle VirtQueue_create(UInt16 remoteProcId, VirtQueue_Params *params,
 Void VirtQueue_startup()
 {
     hostProcId      = MultiProc_getId("HOST");
-#ifndef SMP
-    dspProcId       = MultiProc_getId("DSP");
-    sysm3ProcId     = MultiProc_getId("CORE0");
-    appm3ProcId     = MultiProc_getId("CORE1");
-#endif
 
-#ifndef DSPC674
     /* Initilize the IpcPower module */
     IpcPower_init();
-#endif
-
-#if defined(M3_ONLY) && !defined(SMP)
-    if (MultiProc_self() == sysm3ProcId) {
-        OffloadM3_init();
-    }
-#endif
 
     /*
      * Wait for HLOS (Virtio device) to indicate that priming of host's receive
index 1d74a041ecc5fbbc5fe46f19c8f0f29de35db0a6..67cec4a3a8ba4a2cc34fe10f63b0a085f0c9f233 100644 (file)
 extern "C" {
 #endif
 
-/*!
- *  @brief  VirtQueue Ids for the basic IPC transport rings.
- */
-#define ID_SELF_TO_A9      0
-#define ID_A9_TO_SELF      1
-
 /*!
  *  @brief  a queue to register buffers for sending or receiving.
  */