Resource: Introduce customTable to override resource table
authorChris Ring <cring@ti.com>
Tue, 28 May 2013 20:25:13 +0000 (13:25 -0700)
committerChris Ring <cring@ti.com>
Fri, 31 May 2013 20:49:52 +0000 (13:49 -0700)
Users need to override the resource table.  Introduce the
customTable boolean config param which uses set to true
to indicate they will provide their own table (and IPC shouldn't
generate a table for them).

They then have the responsibility to provide their own table
(with a symbol named ti_ipc_remoteproc_ResourceTable) at link
time.

packages/ti/ipc/remoteproc/Resource.xdc
packages/ti/ipc/remoteproc/Resource.xdt

index 16103d9908fbedd0c3dfe2a10052309843ebcce9..1ef430461544a69f009052324034a3bd980067ef 100644 (file)
@@ -64,6 +64,18 @@ module Resource {
      */
     metaonly config Bool traceOnly = false;
 
+    /*!
+     *  Flag to indicate the user will provide a custom resource table
+     *
+     *  If false (the default), a default resource table will be
+     *  created during configuration.
+     *
+     *  If true, the user must supply their own resource table.
+     *  Fundamentally, this amounts to providing a well-formed
+     *  resource_table structure named 'ti_ipc_remoteproc_ResourceTable'.
+     */
+    metaonly config Bool customTable = false;
+
     /*!
      *  @def    Resource_S_SUCCESS
      *  @brief  Operation is successful.
index 2278cbd49db25f6b6dd8eb351c498506511c3e4c..22850500d5379f0afbae2e2875a2394e1389d189 100644 (file)
 
 %var prog = xdc.om['xdc.cfg.Program'];
 
-%if (prog.platformName.match(/OMAPL138/)) {
-#include <ti/ipc/remoteproc/rsc_table_omapl138.h>
+%if (this.customTable) {
+extern struct resource_table ti_ipc_remoteproc_ResourceTable;
 %}
-%else if (prog.platformName.match(/evm6614/)) {
+%else {
+%  if (prog.platformName.match(/OMAPL138/)) {
+#include <ti/ipc/remoteproc/rsc_table_omapl138.h>
+%  }
+%  else if (prog.platformName.match(/evm6614/)) {
 #include <ti/ipc/remoteproc/rsc_table_tci6614.h>
 //#include <ti/ipc/remoteproc/rsc_table_tci6614_v3.3.h> // Test with v3.3 Linux.
-%}
-%else if (prog.platformName.match(/Kepler/) ||
+%  }
+%  else if (prog.platformName.match(/Kepler/) ||
 %         prog.platformName.match(/TCI6638/)) {
 %    if (this.traceOnly) {
 #define TRACE_RESOURCE_ONLY
 %    }
 #include <ti/ipc/remoteproc/rsc_table_tci6638.h>
-%}
-%else if (prog.cpu.deviceName.match(/^OMAP5430$/)) {
+%  }
+%  else if (prog.cpu.deviceName.match(/^OMAP5430$/)) {
 %    if (prog.cpu.attrs.cpuCore.match(/^CM4$/)) {
 #define OMAP5
 #include <ti/ipc/remoteproc/rsc_table_omap5_ipu.h>
@@ -63,8 +67,8 @@
 %        print("ti.ipc.remoteproc.Resource.xdt - unable to provide OMAP5 " +
 %                "resource table (" + prog.cpu.attrs.cpuCore + ")");
 %    }
-%}
-%else if (prog.cpu.deviceName.match(/Vayu/)) { // NOTE: This will probably change to DRA7xx
+%  }
+%  else if (prog.cpu.deviceName.match(/Vayu/)) { // NOTE: This will probably change to DRA7xx
 %    if (prog.cpu.attrs.cpuCore.match(/CM4/) &&
 %       (xdc.om["ti.sysbios.family.arm.ducati.Core"].ipuId == 2)) {
 #define OMAP5
 %        print("ti.ipc.remoteproc.Resource.xdt - unable to provide Vayu " +
 %                "resource table (" + prog.cpu.attrs.cpuCore + ")");
 %    }
-%}
-%else {
+%  }
+%  else {
 %    print("ti.ipc.remoteproc.Resource.xdt - unable to provide resource table " +
 %            "(" + prog.cpu.deviceName + ", " + prog.cpu.attrs.cpuCore + ")");
+%  }
 %}
 
 Void ti_ipc_remoteproc_Resource_init__I()