66AK2G: Linux: Add support for K2G
authorSam Nelson <sam.nelson@ti.com>
Fri, 13 Nov 2015 20:36:55 +0000 (15:36 -0500)
committerSam Nelson <sam.nelson@ti.com>
Mon, 16 Nov 2015 18:49:51 +0000 (13:49 -0500)
    The C66AK2G device is an A15 + C66 DSP, similar in hardware
    to the TCI663X family of devices.  This commit adds Linux-side
    support.

    Note that this commit doesn't update the autotools-generated
    files.  That will be done in a separate commit.

Signed-off-by: Sam Nelson <sam.nelson@ti.com>
configure.ac
linux/src/daemon/Makefile.am
linux/src/daemon/cfg/MultiProcCfg_66ak2g.c [new file with mode: 0644]
linux/src/tests/Makefile.am
packages/ti/ipc/remoteproc/Resource.xdt
packages/ti/ipc/rpmsg/Build.xs
packages/ti/ipc/rpmsg/RPMessage.xs
packages/ti/ipc/rpmsg/package.xs
packages/ti/ipc/tests/messageq_common.cfg.xs
packages/ti/ipc/tests/package.bld
packages/ti/ipc/tests/ping_rpmsg_common.cfg.xs

index e6cb19f99f201d0b2a804052ee39d6f693df600b..9e6e55c72cde9da19c37eb9b2ba89bd6bd559a60 100644 (file)
@@ -67,7 +67,7 @@ AC_SUBST([AM_LDFLAGS])
 
 # Add config variables/options and check them
 # Note that 6614 isn't documented and, though it may work, is planned for removal
-AC_ARG_VAR(PLATFORM, Platform to build. Options are: 'OMAPL138' 'OMAP54XX' '66AK2E' 'TCI6630' 'TCI6636' 'TCI6638' and 'DRA7XX'. If not defined all platforms will be built.)
+AC_ARG_VAR(PLATFORM, Platform to build. Options are: 'OMAPL138' 'OMAP54XX' '66AK2E' 'TCI6630' 'TCI6636' 'TCI6638' '66AK2G' and 'DRA7XX'. If not defined all platforms will be built.)
 AC_ARG_VAR(CMEM_INSTALL_DIR, Installation path directory to the CMEM libraries)
 AC_ARG_VAR(KERNEL_INSTALL_DIR, Installation path to the Linux kernel.)
 AC_ARG_VAR(AF_RPMSG, Address Family used by the RPMSG driver)
@@ -86,13 +86,15 @@ AS_IF([test "x$PLATFORM" = "xOMAPL138"],
   [AC_MSG_NOTICE([PLATFORM is set to ${PLATFORM}])],
   [AS_IF([test "x$PLATFORM" = "xTCI6638"],
   [AC_MSG_NOTICE([PLATFORM is set to ${PLATFORM}])],
+  [AS_IF([test "x$PLATFORM" = "x66AK2G"],
+  [AC_MSG_NOTICE([PLATFORM is set to ${PLATFORM}])],
   [AS_IF([test "x$PLATFORM" = "xOMAP54XX"],
   [AC_MSG_NOTICE([PLATFORM is set to ${PLATFORM}])],
   [AS_IF([test "x$PLATFORM" = "xDRA7XX"],
   [AC_MSG_NOTICE([PLATFORM is set to ${PLATFORM}])],
   [AS_IF([test "x$PLATFORM" = "x"],
   [AC_MSG_NOTICE([PLATFORM is not set. All supported platforms will be built ....])],
-  [AC_MSG_ERROR([PLATFORM is set to "${PLATFORM}": run ./configure --help for available PLATFORM options])])])])])])])])])])
+  [AC_MSG_ERROR([PLATFORM is set to "${PLATFORM}": run ./configure --help for available PLATFORM options])])])])])])])])])])])
 
 # If platform is specified, make sure at least one of
 # KERNEL_INSTALL_DIR or AF_MSG are set.
@@ -118,6 +120,7 @@ AM_CONDITIONAL([TCI6614], [test "x$PLATFORM" = "xTCI6614"])
 AM_CONDITIONAL([TCI6630], [test "x$PLATFORM" = "xTCI6630"])
 AM_CONDITIONAL([TCI6636], [test "x$PLATFORM" = "xTCI6636"])
 AM_CONDITIONAL([TCI6638], [test "x$PLATFORM" = "xTCI6638"])
+AM_CONDITIONAL([C66AK2G], [test "x$PLATFORM" = "x66AK2G"])
 AM_CONDITIONAL([OMAP54XX_SMP], [test "x$PLATFORM" = "xOMAP54XX"])
 AM_CONDITIONAL([DRA7XX], [test "x$PLATFORM" = "xDRA7XX"])
 AM_CONDITIONAL([CMEM], [test "x$CMEM_INSTALL_DIR" != "x"])
index db049f7046847820ed3bf2dcbd006ee342b14f60..34a652f1319472e2c1822fdd6c0bf7f31d754e02 100644 (file)
@@ -80,7 +80,11 @@ else
 if TCI6638
   bin_PROGRAMS += lad_tci6638
 else
-  bin_PROGRAMS += lad_omap54xx_smp lad_dra7xx lad_omapl138 lad_66ak2e lad_tci6614 lad_tci6630 lad_tci6636 lad_tci6638
+if C66AK2G
+  bin_PROGRAMS += lad_66ak2g
+else
+  bin_PROGRAMS += lad_omap54xx_smp lad_dra7xx lad_omapl138 lad_66ak2e lad_tci6614 lad_tci6630 lad_tci6636 lad_tci6638 lad_66ak2g
+endif
 endif
 endif
 endif
@@ -140,6 +144,7 @@ lad_tci6614_SOURCES = $(common_sources) cfg/MultiProcCfg_tci6614.c
 lad_tci6630_SOURCES = $(common_sources) cfg/MultiProcCfg_tci6630.c
 lad_tci6636_SOURCES = $(common_sources) cfg/MultiProcCfg_tci6638.c
 lad_tci6638_SOURCES = $(common_sources) cfg/MultiProcCfg_tci6638.c
+lad_66ak2g_SOURCES = $(common_sources) cfg/MultiProcCfg_66ak2g.c
 
 common_libraries = -lpthread \
                 $(top_builddir)/linux/src/utils/libtiipcutils_lad.la
@@ -161,5 +166,7 @@ lad_tci6636_LDADD = $(common_libraries) \
                 $(AM_LDFLAGS)
 lad_tci6638_LDADD = $(common_libraries) \
                 $(AM_LDFLAGS)
+lad_66ak2g_LDADD = $(common_libraries) \
+                $(AM_LDFLAGS)
 
 ###############################################################################
diff --git a/linux/src/daemon/cfg/MultiProcCfg_66ak2g.c b/linux/src/daemon/cfg/MultiProcCfg_66ak2g.c
new file mode 100644 (file)
index 0000000..56d9e17
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2015 Texas Instruments Incorporated - http://www.ti.com
+ * 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.
+ */
+/*
+ * ======== MultiProcCfg.c ========
+ * System-wide MultiProc configuration
+ */
+
+/* Standard IPC headers */
+#include <ti/ipc/Std.h>
+
+/* For Backplane IPC startup/shutdown stuff: */
+#include <_MultiProc.h>
+
+/* This must match BIOS side MultiProc configuration for given platform!: */
+MultiProc_Config _MultiProc_cfg =  {
+   .numProcessors = 2,
+   .nameList[0] = "HOST",
+   .nameList[1] = "CORE0",
+   .rprocList[0] = -1,
+   .rprocList[1] = 0,
+   .id = 0,             /* host processor must be coherent with cluster */
+   .numProcsInCluster = 2,
+   .baseIdOfCluster = 0
+};
index 22e772b177775cd7367e948dc5cfa32c61be93ef..e1e4665c4483a714f5cb689f8d6087c45d99a37d 100644 (file)
@@ -114,6 +114,10 @@ if TCI6638
 # Add platform specific bin application's here
   bin_PROGRAMS +=
 else
+if C66AK2G
+# Add platform specific bin application's here
+  bin_PROGRAMS +=
+else
 # Add platform independent apps here or above in bin_PROGRAMS
 if CMEM
   bin_PROGRAMS += nano_test
@@ -131,6 +135,7 @@ endif
 endif
 endif
 endif
+endif
 
 common_sources = \
                 $(top_srcdir)/linux/include/ti/ipc/Std.h \
index 052cb1703b441ba87bf3537ee177fb16a6b7e3fa..3a71dd90fa0ba966bb2ab2a26d774c7538852589 100644 (file)
@@ -50,6 +50,7 @@ extern struct resource_table ti_ipc_remoteproc_ResourceTable;
 %  }
 %  else if (prog.platformName.match(/Kepler/) ||
 %         prog.cpu.deviceName.match(/^TMS320C66AK2E05$/) ||
+%         prog.cpu.deviceName.match(/^TCI66AK2G02$/) ||
 %         prog.cpu.deviceName.match(/^TMS320C66AK2H12$/) ||
 %         prog.cpu.deviceName.match(/^TMS320TCI663(0K2L|6|8)$/)) {
 %    if (this.traceOnly) {
index e007a08f53e8606f3e15ba19cf5da60b1aae6d59..2d560e2f0300e946273d80d5dec822ec2188e068 100644 (file)
@@ -65,6 +65,7 @@ function getDefs()
             case "TMS320TCI6630K2L":
             case "TMS320TCI6636":
             case "TMS320TCI6638":
+            case "TCI66AK2G02":
                 defs += " -DTCI6638 -DRPMSG_NS_2_0";
                 break;
             case "Vayu":
index 2285f859f5c98c2f51dcb302211ed146769787db..db280ed6e21c9f95444d83cea60ec16694689b77 100644 (file)
@@ -77,6 +77,7 @@ function module$use()
         case "TMS320TCI6630K2L":
         case "TMS320TCI6636":
         case "TMS320TCI6638":
+        case "TCI66AK2G02":
             xdc.useModule('ti.ipc.family.tci6638.VirtQueue');
             break;
 
index 01adaa65cc595bcec952c98e5e1f6b19ba23d603..a109f3589840c342b329728702e59fa76713e4ef 100644 (file)
@@ -97,6 +97,7 @@ function getLibs(prog)
         case "TMS320TCI6630K2L":
         case "TMS320TCI6636":
         case "TMS320TCI6638":
+        case "TCI66AK2G02":
             platform = "tci6638";
             break;
 
index 4fdf4c2324586d1ce5647b0781ec1897cb404bfa..cb88ef8963ccb09e7087c8b8daed05d323dda367 100644 (file)
@@ -157,6 +157,7 @@ else if (Program.platformName.match(/6614/)) {
 else if (Program.platformName.match(/simKepler/) ||
         Program.cpu.deviceName.match(/^TMS320C66AK2E05$/) ||
         Program.cpu.deviceName.match(/^TMS320C66AK2H12$/) ||
+        Program.cpu.deviceName.match(/^TCI66AK2G02$/) ||
         Program.cpu.deviceName.match(/^TMS320TCI663(0K2L|6|8)$/)) {
     var VirtQueue = xdc.useModule('ti.ipc.family.tci6638.VirtQueue');
     var Interrupt = xdc.useModule('ti.ipc.family.tci6638.Interrupt');
@@ -166,6 +167,7 @@ else if (Program.platformName.match(/simKepler/) ||
 
     switch (Program.cpu.deviceName) {
         case "TMS320C66AK2E05":
+        case "TCI66AK2G02":
             MultiProc.setConfig(null,
                     ["HOST", "CORE0"]);
             break;
index cae1a89735fcd0445a879f78a4d6c9dbec0111ee..47da580fe2f699f8aa8f33e9ea9234048ac07f0b 100644 (file)
@@ -470,6 +470,10 @@ Build.platformTable["ti.platforms.evmTCI6638K2K:core0"] = {
     externalMemoryMap: [ ]
 };
 
+Build.platformTable["ti.platforms.evmTCI66AK2G02:core0"] = {
+    externalMemoryMap: [ ]
+};
+
 for (var i = 0; i < Build.targets.length; i++) {
     var targ = Build.targets[i];
 
@@ -489,6 +493,7 @@ for (var i = 0; i < Build.targets.length; i++) {
         if (!((platform.match(/^ti\.platforms\.evm6614\:DSP/)) ||
               (platform.match(/^ti\.platforms\.simKepler/)) ||
               (platform.match(/^ti.platforms.evmC66AK2E/)) ||
+              (platform.match(/^ti.platforms.evmTCI66AK2G02/)) ||
               (platform.match(/^ti.platforms.evmTCI6630K2L/)) ||
               (platform.match(/^ti.platforms.evmTCI6638K2K/)) ||
               (platform.match(/^ti.platforms.evmTCI6636K2H/)) ||
index ba8ad1d2a3535adc3819cc008b44ff4c5f9cd9fc..b6872b86a474518c0d76b527cd9919b2ca68c377 100644 (file)
@@ -132,6 +132,7 @@ else if (Program.platformName.match(/6614/)) {
 }
 else if (Program.platformName.match(/simKepler/) ||
         Program.cpu.deviceName.match(/^TMS320C66AK2E05$/) ||
+        Program.cpu.deviceName.match(/^TCI66AK2G02$/) ||
         Program.cpu.deviceName.match(/^TMS320C66AK2H12$/) ||
         Program.cpu.deviceName.match(/^TMS320TCI663(0K2L|6|8)$/)) {
     var VirtQueue = xdc.useModule('ti.ipc.family.tci6638.VirtQueue');
@@ -142,6 +143,7 @@ else if (Program.platformName.match(/simKepler/) ||
 
     switch (Program.cpu.deviceName) {
         case "TMS320C66AK2E05":
+        case "TCI66AK2G02":
             MultiProc.setConfig(null, ["HOST", "CORE0"]);
             break;