diff options
author | Sam Nelson <sam.nelson@ti.com> | 2015-11-13 15:36:55 -0500 |
---|---|---|
committer | Sam Nelson <sam.nelson@ti.com> | 2015-11-16 13:49:51 -0500 |
commit | 3125e192c61547e9341b791d3becfb41017a00bd (patch) | |
tree | 1fc399e83d618e92b66b807dc0b1151d56cbcc26 | |
parent | b34c8ada4ed243cd52e504bf2c6fb3451dc730f8 (diff) | |
download | ipc-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.ac | 7 | ||||
-rw-r--r-- | linux/src/daemon/Makefile.am | 9 | ||||
-rw-r--r-- | linux/src/daemon/cfg/MultiProcCfg_66ak2g.c | 53 | ||||
-rw-r--r-- | linux/src/tests/Makefile.am | 5 | ||||
-rw-r--r-- | packages/ti/ipc/remoteproc/Resource.xdt | 1 | ||||
-rw-r--r-- | packages/ti/ipc/rpmsg/Build.xs | 1 | ||||
-rw-r--r-- | packages/ti/ipc/rpmsg/RPMessage.xs | 1 | ||||
-rw-r--r-- | packages/ti/ipc/rpmsg/package.xs | 1 | ||||
-rw-r--r-- | packages/ti/ipc/tests/messageq_common.cfg.xs | 2 | ||||
-rw-r--r-- | packages/ti/ipc/tests/package.bld | 5 | ||||
-rw-r--r-- | packages/ti/ipc/tests/ping_rpmsg_common.cfg.xs | 2 |
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; |