summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Nelson <sam.nelson@ti.com>2015-11-13 15:36:55 -0500
committerSam Nelson <sam.nelson@ti.com>2015-11-16 13:49:51 -0500
commit3125e192c61547e9341b791d3becfb41017a00bd (patch)
tree1fc399e83d618e92b66b807dc0b1151d56cbcc26
parentb34c8ada4ed243cd52e504bf2c6fb3451dc730f8 (diff)
downloadipc-3125e192c61547e9341b791d3becfb41017a00bd.tar.gz
66AK2G: Linux: Add support for K2G
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>
-rw-r--r--configure.ac7
-rw-r--r--linux/src/daemon/Makefile.am9
-rw-r--r--linux/src/daemon/cfg/MultiProcCfg_66ak2g.c53
-rw-r--r--linux/src/tests/Makefile.am5
-rw-r--r--packages/ti/ipc/remoteproc/Resource.xdt1
-rw-r--r--packages/ti/ipc/rpmsg/Build.xs1
-rw-r--r--packages/ti/ipc/rpmsg/RPMessage.xs1
-rw-r--r--packages/ti/ipc/rpmsg/package.xs1
-rw-r--r--packages/ti/ipc/tests/messageq_common.cfg.xs2
-rw-r--r--packages/ti/ipc/tests/package.bld5
-rw-r--r--packages/ti/ipc/tests/ping_rpmsg_common.cfg.xs2
11 files changed, 84 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac
index e6cb19f..9e6e55c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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"])
diff --git a/linux/src/daemon/Makefile.am b/linux/src/daemon/Makefile.am
index db049f7..34a652f 100644
--- a/linux/src/daemon/Makefile.am
+++ b/linux/src/daemon/Makefile.am
@@ -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
index 0000000..56d9e17
--- /dev/null
+++ b/linux/src/daemon/cfg/MultiProcCfg_66ak2g.c
@@ -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
+};
diff --git a/linux/src/tests/Makefile.am b/linux/src/tests/Makefile.am
index 22e772b..e1e4665 100644
--- a/linux/src/tests/Makefile.am
+++ b/linux/src/tests/Makefile.am
@@ -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 \
diff --git a/packages/ti/ipc/remoteproc/Resource.xdt b/packages/ti/ipc/remoteproc/Resource.xdt
index 052cb17..3a71dd9 100644
--- a/packages/ti/ipc/remoteproc/Resource.xdt
+++ b/packages/ti/ipc/remoteproc/Resource.xdt
@@ -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) {
diff --git a/packages/ti/ipc/rpmsg/Build.xs b/packages/ti/ipc/rpmsg/Build.xs
index e007a08..2d560e2 100644
--- a/packages/ti/ipc/rpmsg/Build.xs
+++ b/packages/ti/ipc/rpmsg/Build.xs
@@ -65,6 +65,7 @@ function getDefs()
case "TMS320TCI6630K2L":
case "TMS320TCI6636":
case "TMS320TCI6638":
+ case "TCI66AK2G02":
defs += " -DTCI6638 -DRPMSG_NS_2_0";
break;
case "Vayu":
diff --git a/packages/ti/ipc/rpmsg/RPMessage.xs b/packages/ti/ipc/rpmsg/RPMessage.xs
index 2285f85..db280ed 100644
--- a/packages/ti/ipc/rpmsg/RPMessage.xs
+++ b/packages/ti/ipc/rpmsg/RPMessage.xs
@@ -77,6 +77,7 @@ function module$use()
case "TMS320TCI6630K2L":
case "TMS320TCI6636":
case "TMS320TCI6638":
+ case "TCI66AK2G02":
xdc.useModule('ti.ipc.family.tci6638.VirtQueue');
break;
diff --git a/packages/ti/ipc/rpmsg/package.xs b/packages/ti/ipc/rpmsg/package.xs
index 01adaa6..a109f35 100644
--- a/packages/ti/ipc/rpmsg/package.xs
+++ b/packages/ti/ipc/rpmsg/package.xs
@@ -97,6 +97,7 @@ function getLibs(prog)
case "TMS320TCI6630K2L":
case "TMS320TCI6636":
case "TMS320TCI6638":
+ case "TCI66AK2G02":
platform = "tci6638";
break;
diff --git a/packages/ti/ipc/tests/messageq_common.cfg.xs b/packages/ti/ipc/tests/messageq_common.cfg.xs
index 4fdf4c2..cb88ef8 100644
--- a/packages/ti/ipc/tests/messageq_common.cfg.xs
+++ b/packages/ti/ipc/tests/messageq_common.cfg.xs
@@ -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;
diff --git a/packages/ti/ipc/tests/package.bld b/packages/ti/ipc/tests/package.bld
index cae1a89..47da580 100644
--- a/packages/ti/ipc/tests/package.bld
+++ b/packages/ti/ipc/tests/package.bld
@@ -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/)) ||
diff --git a/packages/ti/ipc/tests/ping_rpmsg_common.cfg.xs b/packages/ti/ipc/tests/ping_rpmsg_common.cfg.xs
index ba8ad1d..b6872b8 100644
--- a/packages/ti/ipc/tests/ping_rpmsg_common.cfg.xs
+++ b/packages/ti/ipc/tests/ping_rpmsg_common.cfg.xs
@@ -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;