TransportVirtio: Built over MessageQCopy.
authorG Anthony <a0783926@ti.com>
Sat, 23 Feb 2013 02:25:43 +0000 (18:25 -0800)
committerG Anthony <a0783926@ti.com>
Tue, 26 Feb 2013 18:30:35 +0000 (10:30 -0800)
Updated NameServerRemoteRpmsg to also go over MessageQCopy.

Updated tests CFG file.

Signed-off-by: G Anthony <a0783926@ti.com>
14 files changed:
src/ti/ipc/namesrv/NameServerRemoteRpmsg.c
src/ti/ipc/namesrv/_NameServerRemoteRpmsg.h
src/ti/ipc/rpmsg/MessageQCopy.c
src/ti/ipc/rpmsg/NameMap.c
src/ti/ipc/rpmsg/_VirtQueue.h [new file with mode: 0644]
src/ti/ipc/tests/messageq_common.cfg.xs
src/ti/ipc/tests/package.bld
src/ti/ipc/transports/TransportVirtio.c
src/ti/ipc/transports/TransportVirtio.xdc
src/ti/ipc/transports/TransportVirtio.xs
src/ti/ipc/transports/TransportVirtioSetup.c
src/ti/ipc/transports/TransportVirtioSetup.xdc
src/ti/ipc/transports/_TransportVirtio.h
src/ti/ipc/transports/package.bld

index afdb487742d944cc4340eb20abe389eb259231ca..f0fe4024a38b3da8b9684d5e84926ec9140148c5 100644 (file)
@@ -48,7 +48,7 @@
 #include <ti/sdo/utils/INameServerRemote.h>
 #include <ti/ipc/MultiProc.h>
 #include <ti/ipc/namesrv/_NameServerRemoteRpmsg.h>
-#include <ti/ipc/transports/_TransportVirtio.h>
+#include <ti/ipc/rpmsg/MessageQCopy.h>
 
 #include "package/internal/NameServerRemoteRpmsg.xdc.h"
 
@@ -183,15 +183,15 @@ Int NameServerRemoteRpmsg_get(NameServerRemoteRpmsg_Object *obj,
 
     len = strlen(instanceName);
     Assert_isTrue(len < MAXNAMEINCHAR, NameServerRemoteRpmsg_A_nameIsTooLong);
-    strncpy((Char *)msg.instanceName, instanceName, len + 1);
+    strncpy((Char *)msg.instanceName, instanceName, len);
 
     len = strlen(name);
     Assert_isTrue(len < MAXNAMEINCHAR, NameServerRemoteRpmsg_A_nameIsTooLong);
-    strncpy((Char *)msg.name, name, len + 1);
+    strncpy((Char *)msg.name, name, len);
 
     Log_print3(Diags_INFO, FXNN": Requesting from procId %d, %s:%s...\n",
                obj->remoteProcId, (IArg)msg.instanceName, (IArg)msg.name);
-    sendRpmsg(obj->remoteProcId, NameServerRemoteRpmsg_module->nsPort,
+    MessageQCopy_send(obj->remoteProcId, NameServerRemoteRpmsg_module->nsPort,
                RPMSG_MESSAGEQ_PORT, (Ptr)&msg, sizeof(msg));
 
     /* Now pend for response */
@@ -288,7 +288,7 @@ void NameServerRemote_processMessage(NameServerRemote_Msg * msg)
         msg->request = NameServerRemoteRpmsg_RESPONSE;
 
         /* send response message to remote processor */
-        sendRpmsg(dstProc, NameServerRemoteRpmsg_module->nsPort,
+        MessageQCopy_send(dstProc, NameServerRemoteRpmsg_module->nsPort,
                  RPMSG_MESSAGEQ_PORT, (Ptr)msg, sizeof(NameServerRemote_Msg));
     }
     else {
index 4aa7e2906523cfa0de765bcd0150bdd12a66c243..67cda3ecd25c4d96c266f4a86fac0d0b77ba3260 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Texas Instruments Incorporated
+ * Copyright (c) 2012-2013, Texas Instruments Incorporated
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -58,6 +58,10 @@ typedef struct NameServerRemote_Msg {
 
 #define NAMESERVER_MSG_TOKEN   0x5678abcd
 
+/* That special per processor RPMSG channel reserved to multiplex MessageQ */
+/* Duplicated in _TransportVirtio.h: move to a common rpmsg_ports.h? */
+#define RPMSG_MESSAGEQ_PORT         61
+
 extern void NameServerRemote_processMessage(NameServerRemote_Msg * ns_msg);
 extern void NameServerRemote_SetNameServerPort(UInt port);
 
index ee46b9cf9b35b9f7ee5ba50062e95d4efc3cb086..1018b474615019ae07b382f40b0a800b57f6f6da 100644 (file)
  *
  *  @brief      A simple copy-based MessageQ, to work with Linux virtio_rp_msg.
  *
+ *  Notes:
+ *  - The logic in the functions for sending (_put()) and receiving _swiFxn()
+ *    depend on the role (host or slave) the processor is playing in the
+ *    asymmetric virtio I/O.
+ *  - The host always adds *available* buffers to send/receive, while the slave
+ *    always adds *used* buffers to send/receive.
+ *  - The logic is summarized below:
+ *
+ *    Host:
+ *    - Prime vq_host with avail bufs, and kick vq_host so slave can send.
+ *    - To send a buffer to the slave processor:
+ *          allocate a tx buffer, or get_used_buf(vq_slave);
+ *               >> copy data into buf <<
+ *          add_avail_buf(vq_slave);
+ *          kick(vq_slave);
+ *    - To receive buffer from slave processor:
+ *          get_used_buf(vq_host);
+ *              >> empty data from buf <<
+ *          add_avail_buf(vq_host);
+ *          kick(vq_host);
+ *
+ *    Slave:
+ *    - To receive buffer from the host:
+ *          get_avail_buf(vq_slave);
+ *              >> empty data from buf <<
+ *          add_used_buf(vq_slave);
+ *          kick(vq_slave);
+ *    - To send buffer to the host:
+ *          get_avail_buf(vq_host);
+ *              >> copy data into buf <<
+ *          add_used_buf(vq_host);
+ *          kick(vq_host);
+ *
  *  ============================================================================
  */
 
@@ -42,6 +75,8 @@
 #define MODULE_NAME "ti.ipc.rpmsg.MessageQCopy"
 
 #include <xdc/std.h>
+#include <string.h>
+
 #include <xdc/runtime/System.h>
 #include <xdc/runtime/Error.h>
 #include <xdc/runtime/Assert.h>
@@ -486,10 +521,7 @@ Int MessageQCopy_recv(MessageQCopy_Handle handle, Ptr data, UInt16 *len,
     }
     else  {
        payload = (Queue_elem *)List_get(obj->queue);
-
-       if (!payload) {
-           System_abort("MessageQCopy_recv: got a NULL payload\n");
-       }
+       Assert_isTrue((!payload), NULL);
     }
 
     if (status == MessageQCopy_S_SUCCESS)  {
@@ -583,26 +615,26 @@ Int MessageQCopy_send(UInt16 dstProc,
         }
         else {
             /* else, put on a Message queue on this processor: */
-        /* Allocate a buffer to copy the payload: */
-        size = len + sizeof(Queue_elem);
-
-        /* HeapBuf_alloc() is non-blocking, so needs protection: */
-        key = GateSwi_enter(module.gateSwi);
-        payload = (Queue_elem *)HeapBuf_alloc(module.heap, size, 0, NULL);
-        GateSwi_leave(module.gateSwi, key);
-
-        if (payload != NULL)  {
-            memcpy(payload->data, data, len);
-            payload->len = len;
-            payload->src = srcEndpt;
-
-            /* Put on the endpoint's queue and signal: */
-            List_put(obj->queue, (List_Elem *)payload);
-            Semaphore_post(obj->semHandle);
-        }
-        else {
-            status = MessageQCopy_E_MEMORY;
-            Log_print0(Diags_STATUS, FXNN": HeapBuf_alloc failed!");
+            /* Allocate a buffer to copy the payload: */
+            size = len + sizeof(Queue_elem);
+
+            /* HeapBuf_alloc() is non-blocking, so needs protection: */
+            key = GateSwi_enter(module.gateSwi);
+            payload = (Queue_elem *)HeapBuf_alloc(module.heap, size, 0, NULL);
+            GateSwi_leave(module.gateSwi, key);
+
+            if (payload != NULL)  {
+                memcpy(payload->data, data, len);
+                payload->len = len;
+                payload->src = srcEndpt;
+
+                /* Put on the endpoint's queue and signal: */
+                List_put(obj->queue, (List_Elem *)payload);
+                Semaphore_post(obj->semHandle);
+            }
+            else {
+                status = MessageQCopy_E_MEMORY;
+                Log_print0(Diags_STATUS, FXNN": HeapBuf_alloc failed!");
             }
         }
     }
index 557b77f32e5587be7be7ac820b77391ec52a3512..600e746ed2d6f33eb6e702c7174351d0c5d8cde6 100644 (file)
@@ -43,7 +43,7 @@
 typedef unsigned int u32;
 
 struct rpmsg_ns_msg {
-    char name[RPMSG_NAME_SIZE]; /* name of service including 0 */
+    char name[RPMSG_NAME_SIZE]; /* name of service including terminal '\0' */
     u32 addr;                   /* address of the service */
     u32 flags;                  /* see below */
 } __packed;
@@ -58,7 +58,8 @@ static void sendMessage(Char * name, UInt32 port, enum rpmsg_ns_flags flags)
     struct rpmsg_ns_msg nsMsg;
     Int s;
 
-    strncpy(nsMsg.name, name, RPMSG_NAME_SIZE);
+    strncpy(nsMsg.name, name, (RPMSG_NAME_SIZE - 1));
+    nsMsg.name[RPMSG_NAME_SIZE-1] = '\0';
     nsMsg.addr = port;
     nsMsg.flags = flags;
 
diff --git a/src/ti/ipc/rpmsg/_VirtQueue.h b/src/ti/ipc/rpmsg/_VirtQueue.h
new file mode 100644 (file)
index 0000000..4e4f043
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 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.
+ */
+/** ============================================================================
+ *  @file       _VirtQueue.h
+ *
+ *  @brief      Common Virtio Queue Definitions across families.
+ *
+ *  ============================================================================
+ */
+
+#ifndef ti_ipc_VirtQueue__include
+#define ti_ipc_VirtQueue__include
+
+#if defined (__cplusplus)
+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  Size of buffer being exchanged in the VirtQueue rings.
+ */
+#define RPMSG_BUF_SIZE     (512)
+
+
+#if defined (__cplusplus)
+}
+#endif /* defined (__cplusplus) */
+
+#endif /* ti_ipc_VirtQueue__include */
index b0da7035fa557012c4e049d1422340c518a953f1..1632311402fa3c58521ab73db2a0dc239594d747 100644 (file)
@@ -81,6 +81,30 @@ if (Program.cpu.deviceName == "OMAPL138") {
     Clock.timerId = 1;
 
     SysMin.bufSize  = 0x8000;
+
+    /*  COMMENT OUT TO SHUT OFF LOG FOR BENCHMARKS: */
+    /*
+    Diags.setMaskMeta("ti.sdo.ipc.family.da830.InterruptDsp", Diags.USER1,
+        Diags.ALWAYS_ON);
+    Diags.setMaskMeta("ti.ipc.family.omapl138.VirtQueue", Diags.USER1,
+        Diags.ALWAYS_ON);
+    Diags.setMaskMeta("ti.ipc.transports.TransportVirtio",
+        Diags.INFO|Diags.USER1|Diags.STATUS,
+        Diags.ALWAYS_ON);
+    Diags.setMaskMeta("ti.ipc.namesrv.NameServerRemoteRpmsg", Diags.INFO,
+        Diags.ALWAYS_ON);
+    */
+
+    /* Enable runtime Diags_setMask() for non-XDC spec'd modules: */
+    /*
+    var Text = xdc.useModule('xdc.runtime.Text');
+    Text.isLoaded = true;
+    var Registry = xdc.useModule('xdc.runtime.Registry');
+    Registry.common$.diags_INFO  = Diags.ALWAYS_ON;
+    Registry.common$.diags_STATUS = Diags.ALWAYS_ON;
+    Registry.common$.diags_LIFECYCLE = Diags.ALWAYS_ON;
+    Diags.setMaskEnabled = true;
+    */
 }
 else if (Program.platformName.match(/6614/)) {
     var VirtQueue = xdc.useModule('ti.ipc.family.tci6614.VirtQueue');
@@ -208,11 +232,8 @@ var LoggerSysParams = new LoggerSys.Params();
 
 Defaults.common$.logger = LoggerSys.create(LoggerSysParams);
 
-var Main = xdc.useModule('xdc.runtime.Main');
-Main.common$.diags_INFO = Diags.RUNTIME_ON;
-Main.common$.diags_ENTRY = Diags.RUNTIME_ON;
-Main.common$.diags_EXIT = Diags.RUNTIME_ON;
 var VirtioSetup = xdc.useModule('ti.ipc.transports.TransportVirtioSetup');
 VirtioSetup.common$.diags_INFO = Diags.RUNTIME_OFF;
 
+
 xdc.loadPackage('ti.ipc.transports').profile = 'release';
index 4f21562f55b6dcf1048bafeeb7af3cbbec6debd9..bb2e5a362fc70e9f4f99b5470c60b03503657c6e 100644 (file)
@@ -97,9 +97,6 @@ for (var i = 0; i < Build.targets.length; i++) {
             cfgScript: "ping_rpmsg"
         }).addObjects(["ping_rpmsg.c"]);
 
-        /* TEMP: Just build ping_rpmsg for now: */
-        continue;
-
         /* Only build this for our multicore platforms: */
         if (platform.match(/^ti\.platforms\.simKepler/) ||
             platform.match(/^ti\.platforms\.evm6614\:DSP/)) {
index 1befb588deb4eb39a8c9481fc7f444f605ab8c43..42680a93a050f273dd7c8e197b50a3e2c4e7b97f 100644 (file)
  */
 /*
  *  ======== TransportVirtio.c ========
- *
- *  Notes:
- *  - The logic in the functions for sending (_put()) and receiving _swiFxn()
- *    depend on the role (host or slave) the processor is playing in the
- *    asymmetric virtio I/O.
- *  - The host always adds *available* buffers to send/receive, while the slave
- *    always adds *used* buffers to send/receive.
- *  - The logic is summarized below:
- *
- *    Host:
- *    - Prime vq_host with avail bufs, and kick vq_host so slave can send.
- *    - To send a buffer to the slave processor:
- *          allocate a tx buffer, or get_used_buf(vq_slave);
- *               >> copy data into buf <<
- *          add_avail_buf(vq_slave);
- *          kick(vq_slave);
- *    - To receive buffer from slave processor:
- *          get_used_buf(vq_host);
- *              >> empty data from buf <<
- *          add_avail_buf(vq_host);
- *          kick(vq_host);
- *
- *    Slave:
- *    - To receive buffer from the host:
- *          get_avail_buf(vq_slave);
- *              >> empty data from buf <<
- *          add_used_buf(vq_slave);
- *          kick(vq_slave);
- *    - To send buffer to the host:
- *          get_avail_buf(vq_host);
- *              >> copy data into buf <<
- *          add_used_buf(vq_host);
- *          kick(vq_host);
- *
  */
 
 #include <string.h>
 #include <xdc/runtime/Log.h>
 #include <xdc/runtime/Diags.h>
 
-#include <ti/sysbios/knl/Swi.h>
-#include <ti/sysbios/gates/GateSwi.h>
 
 #include <ti/sdo/utils/_MultiProc.h>
 #include <ti/sdo/ipc/_MessageQ.h>
 
 #include <ti/ipc/rpmsg/virtio_ring.h>
+#include <ti/ipc/rpmsg/_VirtQueue.h>
 #include <ti/ipc/rpmsg/Rpmsg.h>
+#include <ti/ipc/rpmsg/NameMap.h>
 
-/* TBD: VirtQueue.h needs to live in a common directory, not family specific.*/
-#if defined(OMAPL138)
-#include <ti/ipc/family/omapl138/VirtQueue.h>
-#elif defined(TCI6614)
-#include <ti/ipc/family/tci6614/VirtQueue.h>
-#elif defined(TCI6638)
-#include <ti/ipc/family/tci6638/VirtQueue.h>
-#else
-#error unknown processor!
-#endif
+#include <ti/ipc/rpmsg/_MessageQCopy.h>
+#include <ti/ipc/rpmsg/MessageQCopy.h>
 
 #include <ti/ipc/namesrv/_NameServerRemoteRpmsg.h>
 
 #include "_TransportVirtio.h"
 #include "package/internal/TransportVirtio.xdc.h"
 
-/* TBD: until NameMap built over a new rpmsg API: */
-static VirtQueue_Handle vq_host;
-
 /* Maximum RPMSG payload: */
-#define MAX_PAYLOAD (VirtQueue_RP_MSG_BUF_SIZE - sizeof(Rpmsg_Header))
+#define MAX_PAYLOAD (RPMSG_BUF_SIZE - sizeof(Rpmsg_Header))
 
 /* Addresses below this are assumed to be bound to MessageQ objects: */
 #define RPMSG_RESERVED_ADDRESSES     (1024)
@@ -117,124 +72,8 @@ static VirtQueue_Handle vq_host;
 /* Name of the rpmsg socket on host: */
 #define RPMSG_SOCKET_NAME  "rpmsg-proto"
 
-#define FXNN "callback_usedBufReady"
-static Void callback_usedBufReady(VirtQueue_Handle vq)
-{
-    Log_print2(Diags_INFO, FXNN": vq %d kicked; VirtQueue_isHost: 0x%x",
-            VirtQueue_getId(vq), VirtQueue_isHost(vq));
-    if (VirtQueue_isHost(vq))  {
-        /* Post a SWI to process all incoming messages */
-        Swi_post(VirtQueue_getSwiHandle(vq));
-    }
-    else {
-        /* Note: We post nothing for vq_slave. */
-       Log_print0(Diags_INFO, FXNN": Not posting SWI");
-    }
-}
-#undef FXNN
-
-
-#define FXNN "callback_availBufReady"
-static Void callback_availBufReady(VirtQueue_Handle vq)
-{
-    Log_print2(Diags_INFO, FXNN": vq %d kicked; VirtQueue_isSlave: 0x%x",
-            VirtQueue_getId(vq), VirtQueue_isSlave(vq));
-    if (VirtQueue_isSlave(vq))  {
-        /* Post a SWI to process all incoming messages */
-        Swi_post(VirtQueue_getSwiHandle(vq));
-    }
-    else {
-       /* Note: We post nothing for vq_host, as we assume the
-        * host has already made all buffers available for slave to send.
-        */
-       Log_print0(Diags_INFO, FXNN": Not posting SWI");
-    }
-}
-#undef FXNN
-
-/* Allocate a buffer for sending: */
-#define FXNN "getTxBuf"
-static Void *getTxBuf(TransportVirtio_Object *obj, VirtQueue_Handle vq)
-{
-        Void     *buf;
-
-        /*
-         * either pick the next unused tx buffer
-         * (half of our buffers are used for sending messages)
-         */
-        if (obj->last_sbuf < VirtQueue_RP_MSG_NUM_BUFS)  {
-           Log_print1(Diags_INFO, FXNN": last_sbuf: %d", obj->last_sbuf);
-           buf = (Char *)obj->sbufs + VirtQueue_RP_MSG_BUF_SIZE * obj->last_sbuf++;
-        }
-        else {
-           /* or recycle a used one */
-           buf = VirtQueue_getUsedBuf(vq);
-        }
-        return (buf);
-}
-#undef FXNN
-
-
-/*  --------------  TEMP NameService over VirtQueue ----------------------- */
-
-/* -------------- TEMP NameService over rpmsg ----------------------- */
-#define FXNN "nameService_register"
-static void nameService_register(UInt16 dstProc, char * name, UInt32 port, enum Rpmsg_nsFlags flags)
-{
-    struct Rpmsg_NsMsg nsMsg;
-    UInt16 len = sizeof(nsMsg);
-    UInt32 dstEndpt = RPMSG_NAMESERVICE_PORT;
-    UInt32 srcEndpt = port;
-    Ptr data = &nsMsg;
-
-    strncpy(nsMsg.name, name, RPMSG_NAME_SIZE);
-    nsMsg.name[RPMSG_NAME_SIZE - 1] = '\0'; /* ensure NULL termination */
-
-    nsMsg.addr = port;
-    nsMsg.flags = flags;
-
-    Log_print3(Diags_INFO, FXNN": %sing service %s on port %d",
-           (IArg)(flags == RPMSG_NS_CREATE? "creat":"destroy"),
-           (IArg)name, (IArg)port);
-    sendRpmsg(dstProc, dstEndpt, srcEndpt, data, len);
-}
-#undef FXNN
-
-void sendRpmsg(UInt16 dstProc, UInt32 dstEndpt, UInt32 srcEndpt,
-              Ptr data, UInt16 len)
-{
-    Int16             token = 0;
-    Rpmsg_Msg             msg;
-    IArg              key;
-
-    if (dstProc != MultiProc_self()) {
-        /* Send to remote processor: */
-        /* Protect vring structs. */
-        key = GateSwi_enter(TransportVirtio_module->gateSwiHandle);
-        token = VirtQueue_getAvailBuf(vq_host, (Void **)&msg);
-        GateSwi_leave(TransportVirtio_module->gateSwiHandle, key);
-
-        if (token >= 0) {
-            /* Copy the payload and set message header: */
-            memcpy(msg->payload, data, len);
-            msg->dataLen = len;
-            msg->dstAddr = dstEndpt;
-            msg->srcAddr = srcEndpt;
-            msg->flags = 0;
-            msg->reserved = 0;
-
-            key = GateSwi_enter(TransportVirtio_module->gateSwiHandle);
-            VirtQueue_addUsedBuf(vq_host, token);
-            VirtQueue_kick(vq_host);
-            GateSwi_leave(TransportVirtio_module->gateSwiHandle, key);
-        }
-        else {
-            System_abort("sendRpmsg: getAvailBuf failed!");
-        }
-    }
-}
-
-
+static Void transportCallbackFxn(MessageQCopy_Handle msgq, UArg arg, Ptr data,
+                                      UInt16 dataLen, UInt32 srcAddr);
 
 /*
  *************************************************************************
@@ -252,97 +91,41 @@ Int TransportVirtio_Instance_init(TransportVirtio_Object *obj,
         Error_Block *eb)
 {
     Bool        flag;
-    Swi_Handle  swiHandle;
-    Swi_Params  swiParams;
-    GateSwi_Params gatePrms;
-    VirtQueue_Params vqParams;
+    UInt32      myEndpoint = 0;
+
+    Log_print1(Diags_INFO, FXNN": remoteProc: %d\n", remoteProcId);
+
+    /* This MessageQ Transport over RPMSG only talks to the "HOST" for now: */
+    Assert_isTrue(remoteProcId == MultiProc_getId("HOST"), NULL);
+    MessageQCopy_init(remoteProcId);
 
     /* set object fields */
     obj->priority     = params->priority;
     obj->remoteProcId = remoteProcId;
 
-    /* From the remoteProcId, we must determine if this Virtio Transport is
-     * acting as host or a slave.
-     */
-#if 0
-    /* Linux side currently assumes HOST is lowest ID core in the system:
-     */
-    if ((MultiProc_self() == MultiProc_getId("HOST")) ||
-         ((remoteProcId != MultiProc_getId("HOST")) &&
-          (MultiProc_self() < remoteProcId)))
-    {
-      /* This processor is Host in pair if it's own ID is the "HOST" id according
-        * to the MultiProc names or if the remote processor is not the host and
-        * the remote processor has an ID greater than its own ID */
-      obj->isHost = TRUE;
-    }
-#else
-    /* Hardcoded below until constraint mentioned above is lifted: */
-    obj->isHost = (MultiProc_self() == MultiProc_getId("HOST"));
-#endif
-
-    Log_print2(Diags_INFO, FXNN": remoteProc: %d, isHost: %d",
-                  obj->remoteProcId, obj->isHost);
-
-    swiHandle = TransportVirtio_Instance_State_swiObj(obj);
+    /* Announce our "MessageQ" service to the HOST: */
+    NameMap_register(RPMSG_SOCKET_NAME, RPMSG_MESSAGEQ_PORT);
 
-    /* construct the Swi to process incoming messages: */
-    Swi_Params_init(&swiParams);
-    swiParams.arg0 = (UArg)obj;
-    Swi_construct(Swi_struct(swiHandle),
-                 (Swi_FuncPtr)TransportVirtio_swiFxn,
-                 &swiParams, eb);
-
-    /* Construct a GateSwi to protect our vrings: */
-    GateSwi_Params_init(&gatePrms);
-    TransportVirtio_module->gateSwiHandle = GateSwi_create(&gatePrms, NULL);
+    /* Associate incomming messages with this transport's callback fxn: */
+    obj->msgqHandle = MessageQCopy_create(RPMSG_MESSAGEQ_PORT,
+                                          transportCallbackFxn,
+                                          (UArg)obj,
+                                          &myEndpoint);
 
     /*
-     * Create a pair VirtQueues (one for sending, one for receiving).
-     * Note: First one gets an even, second gets odd vq ID.
+     * TBD: The following should be set via a ns_announcement from Linux side.
+     * Setting this now will cause NameServer requests from BIOS side to
+     * timeout (benignly), if the app calls MessageQ_open() in a loop.
+     * Ideally, a NameMap module needs to allow registration for announcements.
      */
-    VirtQueue_Params_init(&vqParams);
-    vqParams.host = obj->isHost;
-    vqParams.swiHandle = swiHandle;
-    vqParams.intVectorId = params->intVectorId;
-    if (obj->isHost)  {
-      vqParams.callback = (Fxn) callback_usedBufReady;
-    }
-    else {
-      vqParams.callback = (Fxn) callback_availBufReady;
-    }
+    NameServerRemote_SetNameServerPort(NAME_SERVER_RPMSG_ADDR);
 
-    vq_host = obj->vq_host = (Ptr)VirtQueue_create(remoteProcId, &vqParams, eb);
-    obj->vq_slave  = (Ptr)VirtQueue_create(remoteProcId, &vqParams, eb);
-
-    if (obj->isHost)  {
-#if 0  /* This code is broken for multicore, and case where obj->isHost */
-       /* Initialize fields used by getTxBuf(): */
-            obj->sbufs = (Char *)buf_addr + VirtQueue_RP_MSG_NUM_BUFS * VirtQueue_RP_MSG_BUF_SIZE;
-        obj->last_sbuf = 0;
-
-       /* Host needs to prime his vq with some buffers for receiving: */
-       for (i = 0; i < VirtQueue_RP_MSG_NUM_BUFS; i++) {
-            VirtQueue_addAvailBuf(obj->vq_host,
-                                  ((Char *)buf_addr + i * VirtQueue_RP_MSG_BUF_SIZE));
-       }
-       VirtQueue_kick(obj->vq_host);
-#else
-       Assert_isTrue(FALSE, NULL);
-#endif
+    if (obj->msgqHandle) {
+        /* Register the transport with MessageQ */
+        flag = ti_sdo_ipc_MessageQ_registerTransport(
+            TransportVirtio_Handle_upCast(obj), remoteProcId, params->priority);
     }
 
-    /* Plug Vring Interrupts, and wait for host ready to recv kick: */
-    VirtQueue_startup(remoteProcId, obj->isHost);
-
-    /* Announce our "MessageQ" service to other side: */
-    nameService_register(remoteProcId, RPMSG_SOCKET_NAME, RPMSG_MESSAGEQ_PORT,
-                         RPMSG_NS_CREATE);
-
-    /* Register the transport with MessageQ */
-    flag = ti_sdo_ipc_MessageQ_registerTransport(
-        TransportVirtio_Handle_upCast(obj), remoteProcId, params->priority);
-
     if (flag == FALSE) {
         return (2);
     }
@@ -357,41 +140,23 @@ Int TransportVirtio_Instance_init(TransportVirtio_Object *obj,
 #define FXNN "TransportVirtio_Instance_finalize"
 Void TransportVirtio_Instance_finalize(TransportVirtio_Object *obj, Int status)
 {
-    Swi_Handle  swiHandle;
-
     Log_print0(Diags_ENTRY, "--> "FXNN);
 
-
     /* Announce our "MessageQ" service is going away: */
-    nameService_register(obj->remoteProcId, RPMSG_SOCKET_NAME,
-                         RPMSG_MESSAGEQ_PORT, RPMSG_NS_DESTROY);
-
-    /* Destruct the swi */
-    swiHandle = TransportVirtio_Instance_State_swiObj(obj);
-    if (swiHandle != NULL) {
-      Swi_destruct(Swi_struct(swiHandle));
-    }
-
-    GateSwi_delete(&(TransportVirtio_module->gateSwiHandle));
-
-    /* Delete the VirtQueue instance */
-    if (obj->isHost) {
-       VirtQueue_delete(obj->vq_slave);
-    }
-    else{
-       VirtQueue_delete(obj->vq_host);
-    }
+    NameMap_unregister(RPMSG_SOCKET_NAME, RPMSG_MESSAGEQ_PORT);
 
     switch(status) {
         case 0: /* MessageQ_registerTransport succeeded */
             ti_sdo_ipc_MessageQ_unregisterTransport(obj->remoteProcId,
                 obj->priority);
-
             /* fall thru OK */
         case 1: /* NOT USED: Notify_registerEventSingle failed */
         case 2: /* MessageQ_registerTransport failed */
             break;
     }
+
+    MessageQCopy_finalize();
+
 #undef FXNN
 }
 
@@ -410,67 +175,27 @@ Void TransportVirtio_Instance_finalize(TransportVirtio_Object *obj, Int status)
 #define FXNN "TransportVirtio_put"
 Bool TransportVirtio_put(TransportVirtio_Object *obj, Ptr msg)
 {
-    Int          status = MessageQ_S_SUCCESS;
+    Int          status;
     UInt         msgSize;
-    Int16        token = (-1);
-    IArg         key;
-    Rpmsg_Msg    rpMsg = NULL;
-
-    Log_print1(Diags_ENTRY, "--> "FXNN": Entered: isHost: %d",
-                 obj->isHost);
+    UInt16       dstAddr;
 
     /* Send to remote processor: */
-    key = GateSwi_enter(TransportVirtio_module->gateSwiHandle);
-    if (obj->isHost)  {
-       rpMsg = getTxBuf(obj, obj->vq_slave);
+    /* Assert msg->msgSize <= vring's max fixed buffer size */
+    msgSize = MessageQ_getMsgSize(msg);
+    Assert_isTrue(msgSize <= MAX_PAYLOAD, NULL);
+    dstAddr  = (((MessageQ_Msg)msg)->dstId & 0x0000FFFF);
+
+    Log_print3(Diags_INFO, FXNN": sending msg from: %d, to: %d, dataLen: %d",
+                  (IArg)RPMSG_MESSAGEQ_PORT, (IArg)dstAddr, (IArg)msgSize);
+    status = MessageQCopy_send(obj->remoteProcId, dstAddr, RPMSG_MESSAGEQ_PORT,
+                      msg, msgSize);
+
+    /* free the app's message */
+    if (((MessageQ_Msg)msg)->heapId != ti_sdo_ipc_MessageQ_STATICMSG) {
+       MessageQ_free(msg);
     }
-    else {
-       token = VirtQueue_getAvailBuf(obj->vq_host, (Void **)&rpMsg);
-    }
-    GateSwi_leave(TransportVirtio_module->gateSwiHandle, key);
-
-    if ((obj->isHost && rpMsg) || token >= 0) {
-        /* Assert msg->msgSize <= vring's max fixed buffer size */
-        msgSize = MessageQ_getMsgSize(msg);
 
-        Assert_isTrue(msgSize <= MAX_PAYLOAD, NULL);
-
-        /* Copy the payload and set message header: */
-        memcpy(rpMsg->payload, (Ptr)msg, msgSize);
-        rpMsg->dataLen  = msgSize;
-        rpMsg->dstAddr  = (((MessageQ_Msg)msg)->dstId & 0x0000FFFF);
-        rpMsg->srcAddr  = RPMSG_MESSAGEQ_PORT;
-        rpMsg->flags    = 0;
-        rpMsg->reserved = 0;
-
-        /* free the app's message */
-        if (((MessageQ_Msg)msg)->heapId != ti_sdo_ipc_MessageQ_STATICMSG) {
-            MessageQ_free(msg);
-        }
-
-        Log_print4(Diags_INFO, FXNN": sending rpMsg: 0x%x from: %d, "
-                   "to: %d, dataLen: %d",
-                  (IArg)rpMsg, (IArg)rpMsg->srcAddr, (IArg)rpMsg->dstAddr,
-                  (IArg)rpMsg->dataLen);
-
-        key = GateSwi_enter(TransportVirtio_module->gateSwiHandle);
-        if (obj->isHost)  {
-            VirtQueue_addAvailBuf(obj->vq_slave, rpMsg);
-            VirtQueue_kick(obj->vq_slave);
-        }
-        else {
-            VirtQueue_addUsedBuf(obj->vq_host, token);
-            VirtQueue_kick(obj->vq_host);
-        }
-        GateSwi_leave(TransportVirtio_module->gateSwiHandle, key);
-    }
-    else {
-        status = MessageQ_E_FAIL;
-        Log_print1(Diags_STATUS, FXNN": %s failed!",
-                      (IArg)(obj->isHost? "getTxBuf" : "getAvailBuf"));
-    }
-
-    return (status == MessageQ_S_SUCCESS? TRUE: FALSE);
+    return (status == MessageQCopy_S_SUCCESS? TRUE: FALSE);
 }
 #undef FXNN
 
@@ -498,44 +223,27 @@ Int TransportVirtio_getStatus(TransportVirtio_Object *obj)
  */
 
 /*
- *  ======== TransportVirtio_swiFxn ========
+ *  ======== transportCallbackFxn ========
  *
  */
-#define FXNN "TransportVirtio_swiFxn"
-Void TransportVirtio_swiFxn(UArg arg0, UArg arg1)
+#define FXNN "transportCallbackFxn"
+static Void transportCallbackFxn(MessageQCopy_Handle msgq, UArg arg, Ptr data,
+                                      UInt16 dataLen, UInt32 srcAddr)
 {
-    Int16             token;
-    Bool              bufAdded = FALSE;
     UInt32            queueId;
     MessageQ_Msg      msg;
     MessageQ_Msg      buf = NULL;
-    Rpmsg_Msg         rpMsg;
     UInt              msgSize;
-    TransportVirtio_Object      *obj;
-    Bool              buf_avail = FALSE;
-    Rpmsg_NsMsg       * nsMsg; /* Name Service Message */
     NameServerRemote_Msg * nsrMsg;  /* Name Server Message */
-    Int               nsPort = NAME_SERVER_PORT_INVALID;
 
     Log_print0(Diags_ENTRY, "--> "FXNN);
 
-    obj = (TransportVirtio_Object *)arg0;
-
-    /* Process all available buffers: */
-    if (obj->isHost)  {
-        rpMsg = VirtQueue_getUsedBuf(obj->vq_host);
-        buf_avail = (rpMsg != NULL);
-    }
-    else {
-        token = VirtQueue_getAvailBuf(obj->vq_slave, (Void **)&rpMsg);
-        buf_avail = (token >= 0);
-    }
-
-    while (buf_avail) {
-        Log_print4(Diags_INFO, FXNN": \n\tReceived rpMsg: 0x%x from: %d, "
-                   "to: %d, dataLen: %d",
-                  (IArg)rpMsg, (IArg)rpMsg->srcAddr, (IArg)rpMsg->dstAddr,
-                  (IArg)rpMsg->dataLen);
+    Log_print3(Diags_INFO, FXNN": Received data: 0x%x from: %d, dataLen: %d",
+                  (IArg)data, (IArg)srcAddr, (IArg)dataLen);
+#if 0
+/* TBD: This logic needs to be put in a callback from the name service endpt: */
+    {
+        Int               nsPort = NAME_SERVER_PORT_INVALID;
 
         /* See if this is an rpmsg ns announcment... : */
         if (rpMsg->dstAddr != RPMSG_MESSAGEQ_PORT) {
@@ -561,74 +269,53 @@ Void TransportVirtio_swiFxn(UArg arg0, UArg arg1)
             }
             goto skip;
         }
-        else if (rpMsg->srcAddr >= RPMSG_RESERVED_ADDRESSES) {
-            /*
-             * This could either be a NameServer request or a MessageQ.
-             * Check the NameServerRemote_Msg reserved field to distinguish.
-             */
-            nsrMsg = (NameServerRemote_Msg *)rpMsg->payload;
-            if (nsrMsg->reserved == NAMESERVER_MSG_TOKEN) {
-                /* Process the NameServer request/reply message: */
-                NameServerRemote_processMessage(nsrMsg);
-                goto skip;
-            }
+    }
+#endif
+    if(srcAddr >= RPMSG_RESERVED_ADDRESSES) {
+        /*
+         * This could either be a NameServer request or a MessageQ.
+         * Check the NameServerRemote_Msg reserved field to distinguish.
+         */
+        nsrMsg = (NameServerRemote_Msg *)data;
+        if (nsrMsg->reserved == NAMESERVER_MSG_TOKEN) {
+            /* Process the NameServer request/reply message: */
+            NameServerRemote_processMessage(nsrMsg);
+            goto exit;
         }
+    }
 
-        /* Convert Rpmsg payload into a MessageQ_Msg: */
-        msg = (MessageQ_Msg)rpMsg->payload;
-
-        Log_print4(Diags_INFO, FXNN": \n\tmsg->heapId: %d, "
-                   "msg->msgSize: %d, msg->dstId: %d, msg->msgId: %d\n",
-                   msg->heapId, msg->msgSize, msg->dstId, msg->msgId);
+    /* Convert Rpmsg payload into a MessageQ_Msg: */
+    msg = (MessageQ_Msg)data;
 
-        /* Alloc a message from msg->heapId to copy the msg */
-        msgSize = MessageQ_getMsgSize(msg);
-        buf = MessageQ_alloc(msg->heapId, msgSize);
+    Log_print4(Diags_INFO, FXNN": \n\tmsg->heapId: %d, "
+               "msg->msgSize: %d, msg->dstId: %d, msg->msgId: %d\n",
+               msg->heapId, msg->msgSize, msg->dstId, msg->msgId);
 
-        /* Make sure buf is not NULL */
-        Assert_isTrue(buf != NULL, NULL);
+    /* Alloc a message from msg->heapId to copy the msg */
+    msgSize = MessageQ_getMsgSize(msg);
+    buf = MessageQ_alloc(msg->heapId, msgSize);
 
-        /* copy the message to the buffer allocated. */
-        memcpy((Ptr)buf, (Ptr)msg, msgSize);
+    /* Make sure buf is not NULL */
+    Assert_isTrue(buf != NULL, NULL);
 
-        /*
-         * If the message received was statically allocated, reset the
-         * heapId, so the app can free it.
-         */
-         if (msg->heapId == ti_sdo_ipc_MessageQ_STATICMSG)  {
-             msg->heapId = 0;  /* for a copy transport, heap id is 0. */
-         }
+    /* copy the message to the buffer allocated. */
+    memcpy((Ptr)buf, (Ptr)msg, msgSize);
 
-        /* get the queue id */
-        queueId = MessageQ_getDstQueue(msg);
+    /*
+     * If the message received was statically allocated, reset the
+     * heapId, so the app can free it.
+     */
+    if (msg->heapId == ti_sdo_ipc_MessageQ_STATICMSG)  {
+        msg->heapId = 0;  /* for a copy transport, heap id is 0. */
+    }
 
-        /* Pass to destination queue: */
-        MessageQ_put(queueId, buf);
+    /* get the queue id */
+    queueId = MessageQ_getDstQueue(msg);
 
-skip:
-        if (obj->isHost)  {
-            VirtQueue_addAvailBuf(obj->vq_host, rpMsg);
-        }
-        else {
-            VirtQueue_addUsedBuf(obj->vq_slave, token);
-        }
-        bufAdded = TRUE;
-
-        /* See if there is another one: */
-        if (obj->isHost)  {
-            rpMsg = VirtQueue_getUsedBuf(obj->vq_host);
-            buf_avail = (rpMsg != NULL);
-        }
-        else {
-            token = VirtQueue_getAvailBuf(obj->vq_slave, (Void **)&rpMsg);
-            buf_avail = (token >= 0);
-        }
-    }
+    /* Pass to desitination queue: */
+    MessageQ_put(queueId, buf);
 
-    if (bufAdded)  {
-       /* Tell host/slave we've processed the buffers: */
-       VirtQueue_kick(obj->isHost? obj->vq_host: obj->vq_slave);
-    }
+exit:
     Log_print0(Diags_EXIT, "<-- "FXNN);
 }
 
index 5c0103861d3acee34af67bbd5edc07c18b2965ce..b3299e77efd1ff4d1333c8c65e8c1c458b4d0eb4 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Texas Instruments Incorporated
+ * Copyright (c) 2012-2013, Texas Instruments Incorporated
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,9 +33,6 @@
  *  ======== TransportVirtio.xdc ================
  */
 
-import ti.sysbios.knl.Swi;
-import ti.sysbios.gates.GateSwi;
-
 /*!
  *  ======== TransportVirtio ========
  *  Transport for MessageQ that uses vring structures.
@@ -61,35 +58,13 @@ instance:
      */
     config Ptr sharedAddr = null;
 
-    /*!
-     *  ======== intVectorId ========
-     *  Interrupt vector ID to be used by the driver.
-     *
-     *  This parameter is only used by C64x+ targets
-     */
-    config UInt intVectorId = ~1u;
 
 internal:
 
-    /*!
-     *  ======== swiFxn ========
-     */
-    Void swiFxn(UArg arg0, UArg arg1);
-
-    struct Module_State
-    {
-        GateSwi.Handle gateSwiHandle;
-    }
-
     /*! Instance state structure */
     struct Instance_State {
         UInt16       priority;           /* priority to register             */
         UInt16       remoteProcId;       /* dst proc id                      */
-        Bool         isHost;             /* self proc id acts as a host.     */
-        Swi.Object   swiObj;             /* Each instance has a swi          */
-        Ptr          vq_slave;           /* Slave's VirtQueue Handle         */
-        Ptr          vq_host;            /* Host's VirtQueue Handle          */
-        Ptr          sbufs;              /* Buffers for sending              */
-        UInt16       last_sbuf;          /* Index of last send buffer used   */
+        Ptr          msgqHandle;         /* MessageQCopy Handle              */
     }
 }
index e8a4872b6867ab0ce933a92f62d00b9636a7ada8..741a2525b884a0f0d8d941097f8c776b958f4983 100644 (file)
  */
 function module$use()
 {
-    var TransportVirtio = this;
     xdc.useModule("ti.sdo.utils.MultiProc");
     xdc.useModule("ti.sdo.ipc.MessageQ");
-    xdc.useModule("ti.sysbios.knl.Swi");
     xdc.useModule("ti.ipc.transports.TransportVirtioSetup");
     xdc.loadPackage("ti.ipc.namesrv");
-
-    if (Program.cpu.deviceName == "OMAPL138") {
-        xdc.useModule("ti.ipc.family.omapl138.VirtQueue");
-    }
-    else if (Program.platformName.match(/6614/)) {
-        xdc.useModule("ti.ipc.family.tci6614.VirtQueue");
-    }
-    else if (Program.platformName.match(/Kepler/)) {
-        xdc.useModule("ti.ipc.family.tci6638.VirtQueue");
-    }
-    else
-    {
-        print("TransportVirtio.xs: Did not match any platform!");
-    }
-}
-/*
- *  ======== module$static$init ========
- */
-function module$static$init(mod, params)
-{
-  /* Init Virtio Transport params */
-  mod.gateSwiHandle = null;
+    xdc.loadPackage("ti.ipc.rpmsg");
 }
index e235703cf7c46b8b38025ef74c76fb536a0df163..8e1e1d7f2974813b1e5b6acaf08de682eccf772e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Texas Instruments Incorporated
+ * Copyright (c) 2012-2013, Texas Instruments Incorporated
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -64,7 +64,6 @@ Int TransportVirtioSetup_attach(UInt16 remoteProcId, Ptr sharedAddr)
 
     /* init the transport parameters */
     TransportVirtio_Params_init(&params);
-    params.intVectorId     = TransportVirtioSetup_dspIntVectId;
     params.sharedAddr = sharedAddr;  /* Not used yet */
 
     handle = TransportVirtio_create(remoteProcId, &params, &eb);
index 032c80eec386e56cc550d3e27abd586818af3e3c..7c9313721961a0a998dc9a98b22d7544428e619d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Texas Instruments Incorporated
+ * Copyright (c) 2012-2013, Texas Instruments Incorporated
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -43,9 +43,6 @@
 module TransportVirtioSetup inherits ti.sdo.ipc.interfaces.ITransportSetup
 {
 
-    /* The interrupt vector id */
-    config UInt dspIntVectId = 0;  /* Used where interrupts used vs mailboxes */
-
 internal:
 
     /* Module Status object */
index 282a9ce870d680dd36c8ceecaed3b3988e0716c1..b4cd9bedf0dcdd1280d67511f98e0b5cb3df1d1f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Texas Instruments Incorporated
+ * Copyright (c) 2012-2013, Texas Instruments Incorporated
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -39,10 +39,6 @@ extern "C" {
 
 /* That special per processor RPMSG channel reserved to multiplex MessageQ */
 #define RPMSG_MESSAGEQ_PORT         61
-#define NAME_SERVER_RPMSG_ADDR      0
-
-extern void sendRpmsg(UInt16 dstProc, UInt32 dstEndpt, UInt32 srcEndpt,
-              Ptr data, UInt16 len);
 
 #if defined (__cplusplus)
 }
index c217aaed70a47ffffb7a76e976a8b121a75ccb4e..1535e9d0b4c10dbc165e958bf12394c0005a9fe3 100644 (file)
@@ -52,29 +52,14 @@ Pkg.generatedFiles.$add("lib/");
 
 for (var i = 0; i < Build.targets.length; i++) {
     var targ = Build.targets[i];
-    var isaDefs = "";
 
-    /* Yuck, yuck, yuck! */
-    if (targ.isa == "674") {
-        isaDefs = "-DOMAPL138";
-// OMAP4 not yet supported
-//    } else if ((targ.isa == "v7M") || (targ.isa == "64T")) {
-//        isaDefs = "-DOMAP4430";
-    } else if (targ.isa == "66") {
-        /* TBD: Only one of Appleton or Kepler can build for now: */
-        isaDefs = "-DTCI6638";
-        //isaDefs = "-DTCI6614";
-    } else {
-        continue;
-    }
 
     /* Build for all profiles */
     for (var profile in targ.profiles) {
 
         Pkg.addLibrary("lib/" + profile + "/" + Pkg.name, targ, {
             profile: profile,
-            copts: "--gcc",   /* b/c Rpmsg.h requires gcc-isms */
-            defs: isaDefs
+            copts: "--gcc"   /* b/c Rpmsg.h requires gcc-isms */
         }).addObjects(SRCS);
     }
 }