RpMsg: Restore original rpmsg struct to fix non-OMAP5 devices
authorChris Ring <cring@ti.com>
Wed, 10 Apr 2013 07:08:36 +0000 (00:08 -0700)
committerChris Ring <cring@ti.com>
Wed, 10 Apr 2013 07:08:36 +0000 (00:08 -0700)
The work to add MmRpc and related BIOS-side support broke compatibility
with existing rpmsg structs for all devices except OMAP5.  This commit
restores the original struct definitions for all devices except OMAP5,
and OMAP5 continues with the new APIs.

packages/ti/ipc/rpmsg/NameMap.c
packages/ti/ipc/rpmsg/NameMap.h
packages/ti/ipc/tests/package.bld
packages/ti/ipc/tests/ping_rpmsg.c
packages/ti/ipc/tests/ping_tasks.c
packages/ti/ipc/transports/TransportRpmsg.c
packages/ti/ipc/transports/package.bld
packages/ti/srvmgr/omaprpc/package.bld
packages/ti/srvmgr/omx/package.bld

index c15a22349984d212e7d05ee80f200514b6aaa07b..8b68f145eaf53027131f516649049127be5925e7 100644 (file)
@@ -44,7 +44,9 @@ typedef unsigned int u32;
 
 struct rpmsg_ns_msg {
     char name[RPMSG_NAME_SIZE]; /* name of service including terminal '\0' */
+#ifdef OMAP5
     char desc[RPMSG_NAME_SIZE]; /* description of service including '\0' */
+#endif
     u32 addr;                   /* address of the service */
     u32 flags;                  /* see below */
 } __packed;
@@ -55,15 +57,21 @@ enum rpmsg_ns_flags {
 };
 
 static void
+#ifdef OMAP5
 sendMessage(Char * name, Char *desc, UInt32 port, enum rpmsg_ns_flags flags)
+#else
+sendMessage(Char * name, UInt32 port, enum rpmsg_ns_flags flags)
+#endif
 {
     struct rpmsg_ns_msg nsMsg;
     Int s;
 
     strncpy(nsMsg.name, name, (RPMSG_NAME_SIZE - 1));
     nsMsg.name[RPMSG_NAME_SIZE-1] = '\0';
+#ifdef OMAP5
     strncpy(nsMsg.desc, desc, (RPMSG_NAME_SIZE - 1));
     nsMsg.desc[RPMSG_NAME_SIZE-1] = '\0';
+#endif
     nsMsg.addr = port;
     nsMsg.flags = flags;
 
@@ -75,6 +83,7 @@ sendMessage(Char * name, Char *desc, UInt32 port, enum rpmsg_ns_flags flags)
     }
 }
 
+#ifdef OMAP5
 void NameMap_register(Char * name, Char * desc, UInt32 port)
 {
     System_printf("registering %s:%s service on %d with HOST\n", name, desc,
@@ -88,3 +97,16 @@ void NameMap_unregister(Char * name, Char * desc, UInt32 port)
                                                                     port);
     sendMessage(name, desc, port, RPMSG_NS_DESTROY);
 }
+#else
+void NameMap_register(Char * name, UInt32 port)
+{
+    System_printf("registering %s service on %d with HOST\n", name, port);
+    sendMessage(name, port, RPMSG_NS_CREATE);
+}
+
+void NameMap_unregister(Char * name, UInt32 port)
+{
+    System_printf("un-registering %s service on %d with HOST\n", name, port);
+    sendMessage(name, port, RPMSG_NS_DESTROY);
+}
+#endif
index bdae1d61d4cfdd219b48b982dc566a175481eece..93d11bc763c89692275a48d6a1fdb4ba2fa845a3 100644 (file)
 #ifndef _NAMEMAP_H_
 #define _NAMEMAP_H_
 
+#ifdef OMAP5  /* temporarily OMAP5-specific until upstream change ready */
 extern void NameMap_register(Char * name, Char * desc, UInt32 value);
 extern void NameMap_unregister(Char * name, Char * desc, UInt32 value);
+#else
+extern void NameMap_register(Char * name, UInt32 value);
+extern void NameMap_unregister(Char * name, UInt32 value);
+#endif
 
 #endif
index 4875b8e9c31ebcaa83c64720d8c60fb706f3ee7c..bfebaf42f1e11e16c905fcc8a633af0047e96982 100644 (file)
@@ -98,9 +98,16 @@ for (var i = 0; i < Build.targets.length; i++) {
                 // replace all ':' and '.' with '_' in platform name
                 platform.replace(/\:/g, "_").replace(/\./g, "_");
 
-        Pkg.addExecutable(name + "/ping_rpmsg", targ, platform, {
-            cfgScript: "ping_rpmsg"
-        }).addObjects(["ping_rpmsg.c"]);
+        if (targ.isa.match(/^v7M(|4)$/)) {
+            Pkg.addExecutable(name + "/ping_rpmsg", targ, platform, {
+                cfgScript: "ping_rpmsg",
+                defs: " -DOMAP5"
+            }).addObjects(["ping_rpmsg.c"]);
+        } else {
+            Pkg.addExecutable(name + "/ping_rpmsg", targ, platform, {
+                cfgScript: "ping_rpmsg"
+            }).addObjects(["ping_rpmsg.c"]);
+        }
 
         /* Only build this for our multicore platforms: */
         if (platform.match(/^ti\.platforms\.simKepler/) ||
@@ -137,7 +144,7 @@ for (var i = 0; i < Build.targets.length; i++) {
         if (platform.match(/^ti\.platform\.omap54xx\.ipu/)) {
             Pkg.addExecutable(name + "/test_omx_ipu_omap5", targ, platform, {
                 cfgScript: "test_omx_ipu_omap5",
-                defs: "-D IPU -D OMAP5xxx"
+                defs: "-D IPU -D OMAP5xxx -DOMAP5"
             }).addObjects(["test_omx.c","ping_tasks.c","rpc_task.c",
                     "MxServer.c"]);
         }
index 6e979dedaf71699b3af8f3f8ea5e06c32fda7e8c..0d002f47bcb1319fe6b330af4fc995c9398d6d55 100644 (file)
@@ -81,7 +81,11 @@ Void pingTaskFxn(UArg arg0, UArg arg1)
     }
 
     /* Announce we are here: */
+#ifdef OMAP5
     NameMap_register("rpmsg-proto", "rpmsg-proto", arg0);
+#else
+    NameMap_register("rpmsg-proto", arg0);
+#endif
 
     /* Note: we don't get a chance to teardown with RPMessage_destroy() */
 }
index 2aa801f560c9cb6c391804748a2840c621c24914..845560aef85c8754d96f920d3cd16adc5b45d6be 100644 (file)
@@ -69,7 +69,11 @@ Void copyTaskFxn(UArg arg0, UArg arg1)
     /* Create the messageQ for receiving (and get our endpoint for sending). */
     handle = RPMessage_create(arg0, NULL, NULL, &myEndpoint);
 
+#ifdef OMAP5
     NameMap_register("rpmsg-client-sample", "sample-desc", arg0);
+#else
+    NameMap_register("rpmsg-client-sample", arg0);
+#endif
 
     for (i = 0; i < APP_NUM_ITERATIONS; i++) {
        /* Await a character message: */
index c20b62ad68c85ab7df6051408f964d4c6c625998..154d7d112794ff65413af8d7338dec6a80c5abd3 100644 (file)
@@ -104,7 +104,11 @@ Int TransportRpmsg_Instance_init(TransportRpmsg_Object *obj,
     obj->remoteProcId = remoteProcId;
 
     /* Announce our "MessageQ" service to the HOST: */
+#ifdef OMAP5
     NameMap_register(RPMSG_SOCKET_NAME, RPMSG_SOCKET_NAME, RPMSG_MESSAGEQ_PORT);
+#else
+    NameMap_register(RPMSG_SOCKET_NAME, RPMSG_MESSAGEQ_PORT);
+#endif
 
     /* Associate incomming messages with this transport's callback fxn: */
     obj->msgqHandle = RPMessage_create(RPMSG_MESSAGEQ_PORT,
@@ -143,8 +147,12 @@ Void TransportRpmsg_Instance_finalize(TransportRpmsg_Object *obj, Int status)
     Log_print0(Diags_ENTRY, "--> "FXNN);
 
     /* Announce our "MessageQ" service is going away: */
+#ifdef OMAP5
     NameMap_unregister(RPMSG_SOCKET_NAME, RPMSG_SOCKET_NAME,
             RPMSG_MESSAGEQ_PORT);
+#else
+    NameMap_unregister(RPMSG_SOCKET_NAME, RPMSG_MESSAGEQ_PORT);
+#endif
 
     switch(status) {
         case 0: /* MessageQ_registerTransport succeeded */
index a3a02008a89d8962669f47d3b54572fae98eb250..e6157e5c7d6074a0457bf664b39b54a9c677a437 100644 (file)
@@ -68,5 +68,13 @@ for (var i = 0; i < Build.targets.length; i++) {
             profile: profile,
             copts: myCopts
         }).addObjects(SRCS);
+
+        if (targ.isa.match(/^v7M(|4)$/)) {
+            /* for now, build 'special' lib compatible with OMAP5 HLOS */
+            Pkg.addLibrary("lib/" + profile + "/" + Pkg.name + "_omap5", targ, {
+                profile: profile,
+                copts: myCopts + " -DOMAP5"
+            }).addObjects(SRCS);
+        }
     }
 }
index 24d9490444d389be010f47675f64d1233dabc6eb..15aaa5b3285bbbe5e5935217adde86e18aa34301 100644 (file)
@@ -58,16 +58,24 @@ for (var i = 0; i < Build.targets.length; i++) {
 
     /* Build for all profiles */
     for (var profile in targ.profiles) {
-        Pkg.addLibrary("lib/" + profile + "/" + Pkg.name, targ, {
-            profile: profile,
-        }).addObjects(SRCS);
 
-        /* And SMP-enabled libraries for M3 and M4 */
+        /* Unfortunately, only OMAP5 HLOS's currently support this (due to an
+         * update required in the rpmsg name service announcement).
+         */
+
+        /* SMP-enabled libraries for M3 and M4 */
         if (targ.isa.match(/^v7M(|4)$/)) {
             Pkg.addLibrary("lib/" + profile + "/" + Pkg.name + "_smp", targ, {
                 profile: profile,
-                defs: " -DSMP"
+                defs: " -DOMAP5 -DSMP"
+            }).addObjects(SRCS);
+        } else if (targ.isa == "64T") {
+            Pkg.addLibrary("lib/" + profile + "/" + Pkg.name, targ, {
+                profile: profile,
+                defs: " -DOMAP5"
             }).addObjects(SRCS);
+        } else {
+            /* skip it - no non-OMAP5 targets are supported */
         }
     }
 }
index 6f5c1b6234fff9fca12854003da089d01d56901b..216a10b56b73e0ac3602eba38c03b83c93beeefb 100644 (file)
@@ -58,16 +58,24 @@ for (var i = 0; i < Build.targets.length; i++) {
 
     /* Build for all profiles */
     for (var profile in targ.profiles) {
-        Pkg.addLibrary("lib/" + profile + "/" + Pkg.name, targ, {
-            profile: profile,
-        }).addObjects(SRCS);
 
-        /* And SMP-enabled libraries for M3 and M4 */
+        /* Unfortunately, only OMAP5 HLOS's currently support this (due to an
+         * update required in the rpmsg name service announcement).
+         */
+
+        /* SMP-enabled libraries for M3 and M4 */
         if (targ.isa.match(/^v7M(|4)$/)) {
             Pkg.addLibrary("lib/" + profile + "/" + Pkg.name + "_smp", targ, {
                 profile: profile,
-                defs: " -DSMP"
+                defs: " -DOMAP5 -DSMP"
+            }).addObjects(SRCS);
+        } else if (targ.isa == "64T") {
+            Pkg.addLibrary("lib/" + profile + "/" + Pkg.name, targ, {
+                profile: profile,
+                defs: " -DOMAP5"
             }).addObjects(SRCS);
+        } else {
+            /* skip it - no non-OMAP5 targets are supported */
         }
     }
 }