RemoteProc: rework resource_table definition/usage
authorChris Ring <cring@ti.com>
Fri, 31 May 2013 01:50:48 +0000 (18:50 -0700)
committerChris Ring <cring@ti.com>
Fri, 31 May 2013 20:49:48 +0000 (13:49 -0700)
Introduce the resource_table struct (defined in Linux) and
rework the device/core-specific resource tables to derive from
that struct (rather than redefine the struct themselves.

No functional difference, but this provides a better
framework and example for end users when they (soon!) are enabled
to define their own resource_table-based structs.

packages/ti/ipc/remoteproc/Resource.xdt
packages/ti/ipc/remoteproc/rsc_table_omap5_dsp.h
packages/ti/ipc/remoteproc/rsc_table_omap5_ipu.h
packages/ti/ipc/remoteproc/rsc_table_omapl138.h
packages/ti/ipc/remoteproc/rsc_table_tci6638.h
packages/ti/ipc/remoteproc/rsc_table_vayu_dsp.h
packages/ti/ipc/remoteproc/rsc_table_vayu_ipu.h
packages/ti/ipc/remoteproc/rsc_types.h

index 989ccc72454b81b27302659c8b8f05f55c90e1c9..2278cbd49db25f6b6dd8eb351c498506511c3e4c 100644 (file)
@@ -33,6 +33,7 @@
 %%}
 
 #include <xdc/runtime/System.h>
+#include <ti/ipc/remoteproc/rsc_types.h>
 
 %var prog = xdc.om['xdc.cfg.Program'];
 
 
 Void ti_ipc_remoteproc_Resource_init__I()
 {
+    struct resource_table *pTable =
+        (struct resource_table *)&ti_ipc_remoteproc_ResourceTable;
+
 %if (prog.platformName.match(/evm6614/)) {
 // Uncomment to test for v3.3 Linux...
 //    xdc_runtime_System_printf("Resource Table: 0x%lx\n", resources);
 //  ...and comment out this:
     xdc_runtime_System_printf("%d Resource entries at 0x%x\n",
-            ti_ipc_remoteproc_ResourceTable.num,
-            &ti_ipc_remoteproc_ResourceTable);
+            pTable->num, pTable);
 %}
 %else {
     xdc_runtime_System_printf("%d Resource entries at 0x%x\n",
-            ti_ipc_remoteproc_ResourceTable.num,
-            &ti_ipc_remoteproc_ResourceTable);
+            pTable->num, pTable);
 %}
 
     return;
index 4dd04cb93640dcc5991efa2345a1ac05a5b65ded..3d9e0f23cfe7fc1b6f98b04b9180713c3b4f6a8f 100644 (file)
 /* flip up bits whose indices represent features we support */
 #define RPMSG_DSP_C0_FEATURES         1
 
-struct resource_table {
-    UInt32 version;
-    UInt32 num;
-    UInt32 reserved[2];
+struct my_resource_table {
+    struct resource_table base;
+
     UInt32 offset[16];  /* Should match 'num' in actual definition */
 
     /* rpmsg vdev entry */
@@ -176,28 +175,28 @@ struct resource_table {
 #pragma DATA_SECTION(ti_ipc_remoteproc_ResourceTable, ".resource_table")
 #pragma DATA_ALIGN(ti_ipc_remoteproc_ResourceTable, 4096)
 
-struct resource_table ti_ipc_remoteproc_ResourceTable = {
+struct my_resource_table ti_ipc_remoteproc_ResourceTable = {
     1,      /* we're the first version that implements this */
     16,     /* number of entries in the table */
     0, 0,   /* reserved, must be zero */
     /* offsets to entries */
     {
-        offsetof(struct resource_table, rpmsg_vdev),
-        offsetof(struct resource_table, text_cout),
-        offsetof(struct resource_table, data_cout),
-        offsetof(struct resource_table, heap_cout),
-        offsetof(struct resource_table, ipcdata_cout),
-        offsetof(struct resource_table, trace),
-        offsetof(struct resource_table, devmem0),
-        offsetof(struct resource_table, devmem1),
-        offsetof(struct resource_table, devmem2),
-        offsetof(struct resource_table, devmem3),
-        offsetof(struct resource_table, devmem4),
-        offsetof(struct resource_table, devmem5),
-        offsetof(struct resource_table, devmem6),
-        offsetof(struct resource_table, devmem7),
-        offsetof(struct resource_table, devmem8),
-        offsetof(struct resource_table, devmem9),
+        offsetof(struct my_resource_table, rpmsg_vdev),
+        offsetof(struct my_resource_table, text_cout),
+        offsetof(struct my_resource_table, data_cout),
+        offsetof(struct my_resource_table, heap_cout),
+        offsetof(struct my_resource_table, ipcdata_cout),
+        offsetof(struct my_resource_table, trace),
+        offsetof(struct my_resource_table, devmem0),
+        offsetof(struct my_resource_table, devmem1),
+        offsetof(struct my_resource_table, devmem2),
+        offsetof(struct my_resource_table, devmem3),
+        offsetof(struct my_resource_table, devmem4),
+        offsetof(struct my_resource_table, devmem5),
+        offsetof(struct my_resource_table, devmem6),
+        offsetof(struct my_resource_table, devmem7),
+        offsetof(struct my_resource_table, devmem8),
+        offsetof(struct my_resource_table, devmem9),
     },
 
     /* rpmsg vdev entry */
index 36c8dc4066a12adb6d7921365d6a36cafcf1ae5e..3a9050e2e61eabf72e37c8a90b2d76e194dac171 100644 (file)
 /* flip up bits whose indices represent features we support */
 #define RPMSG_IPU_C0_FEATURES   1
 
-struct resource_table {
-    UInt32 version;
-    UInt32 num;
-    UInt32 reserved[2];
+struct my_resource_table {
+    struct resource_table base;
+
     UInt32 offset[16];  /* Should match 'num' in actual definition */
 
     /* rpmsg vdev entry */
@@ -184,28 +183,28 @@ struct resource_table {
 #pragma DATA_SECTION(ti_ipc_remoteproc_ResourceTable, ".resource_table")
 #pragma DATA_ALIGN(ti_ipc_remoteproc_ResourceTable, 4096)
 
-struct resource_table ti_ipc_remoteproc_ResourceTable = {
+struct my_resource_table ti_ipc_remoteproc_ResourceTable = {
     1,      /* we're the first version that implements this */
     16,     /* number of entries in the table */
     0, 0,   /* reserved, must be zero */
     /* offsets to entries */
     {
-        offsetof(struct resource_table, rpmsg_vdev),
-        offsetof(struct resource_table, text_cout),
-        offsetof(struct resource_table, data_cout),
-        offsetof(struct resource_table, ipcdata_cout),
-        offsetof(struct resource_table, trace),
-        offsetof(struct resource_table, devmem0),
-        offsetof(struct resource_table, devmem1),
-        offsetof(struct resource_table, devmem2),
-        offsetof(struct resource_table, devmem3),
-        offsetof(struct resource_table, devmem4),
-        offsetof(struct resource_table, devmem5),
-        offsetof(struct resource_table, devmem6),
-        offsetof(struct resource_table, devmem7),
-        offsetof(struct resource_table, devmem8),
-        offsetof(struct resource_table, devmem9),
-        offsetof(struct resource_table, devmem10),
+        offsetof(struct my_resource_table, rpmsg_vdev),
+        offsetof(struct my_resource_table, text_cout),
+        offsetof(struct my_resource_table, data_cout),
+        offsetof(struct my_resource_table, ipcdata_cout),
+        offsetof(struct my_resource_table, trace),
+        offsetof(struct my_resource_table, devmem0),
+        offsetof(struct my_resource_table, devmem1),
+        offsetof(struct my_resource_table, devmem2),
+        offsetof(struct my_resource_table, devmem3),
+        offsetof(struct my_resource_table, devmem4),
+        offsetof(struct my_resource_table, devmem5),
+        offsetof(struct my_resource_table, devmem6),
+        offsetof(struct my_resource_table, devmem7),
+        offsetof(struct my_resource_table, devmem8),
+        offsetof(struct my_resource_table, devmem9),
+        offsetof(struct my_resource_table, devmem10),
     },
 
     /* rpmsg vdev entry */
index 2268a3f242b898f5d87485f4d1184f010111d6ea..3eda5dbee69c3b86c169112f3f90d1a05ca00a8d 100644 (file)
 /* flip up bits whose indices represent features we support */
 #define RPMSG_IPU_C0_FEATURES         1
 
-struct resource_table {
-    UInt32 version;
-    UInt32 num;
-    UInt32 reserved[2];
+struct my_resource_table {
+    struct resource_table base;
+
     UInt32 offset[13];
 
     /* rpmsg vdev entry */
@@ -94,15 +93,15 @@ struct resource_table {
 #pragma DATA_SECTION(ti_ipc_remoteproc_ResourceTable, ".resource_table")
 #pragma DATA_ALIGN(ti_ipc_remoteproc_ResourceTable, 4096)
 
-struct resource_table ti_ipc_remoteproc_ResourceTable = {
+struct my_resource_table ti_ipc_remoteproc_ResourceTable = {
     1, /* we're the first version that implements this */
     3, /* number of entries in the table */
     0, 0, /* reserved, must be zero */
     /* offsets to entries */
     {
-        offsetof(struct resource_table, rpmsg_vdev),
-        offsetof(struct resource_table, data_cout),
-        offsetof(struct resource_table, trace),
+        offsetof(struct my_resource_table, rpmsg_vdev),
+        offsetof(struct my_resource_table, data_cout),
+        offsetof(struct my_resource_table, trace),
     },
 
     /* rpmsg vdev entry */
index f4b54073e1ef41569d2f8c384fd4db38384888f6..12c9b34d11c6eaf6f4436b3c99c35dbc039951a6 100644 (file)
 #define RPMSG_VQ0_SIZE          256
 #define RPMSG_VQ1_SIZE          256
 
-struct resource_table {
-        UInt32 version;
-        UInt32 num;
-        UInt32 reserved[2];
-        UInt32 offset[13];
+struct my_resource_table {
+    struct resource_table base;
+
+    UInt32 offset[13];
 
 #ifndef TRACE_RESOURCE_ONLY
-        /* rpmsg vdev entry */
-        struct fw_rsc_vdev rpmsg_vdev;
-        struct fw_rsc_vdev_vring rpmsg_vring0;
-        struct fw_rsc_vdev_vring rpmsg_vring1;
+    /* rpmsg vdev entry */
+    struct fw_rsc_vdev rpmsg_vdev;
+    struct fw_rsc_vdev_vring rpmsg_vring0;
+    struct fw_rsc_vdev_vring rpmsg_vring1;
 #endif
-        /* data carveout entry */
-        struct fw_rsc_carveout data_cout;
+    /* data carveout entry */
+    struct fw_rsc_carveout data_cout;
 
-        /* trace entry */
-        struct fw_rsc_trace trace;
+    /* trace entry */
+    struct fw_rsc_trace trace;
 };
 
 /* Add trace buffer information to the resource table */
@@ -87,7 +86,7 @@ struct resource_table {
 #pragma DATA_SECTION(ti_ipc_remoteproc_ResourceTable, ".resource_table")
 #pragma DATA_ALIGN(ti_ipc_remoteproc_ResourceTable, 4096)
 
-struct resource_table ti_ipc_remoteproc_ResourceTable = {
+struct my_resource_table ti_ipc_remoteproc_ResourceTable = {
     1, /* we're the first version that implements this */
 #ifndef TRACE_RESOURCE_ONLY
     3, /* number of entries in the table */
@@ -98,10 +97,10 @@ struct resource_table ti_ipc_remoteproc_ResourceTable = {
     /* offsets to entries */
     {
 #ifndef TRACE_RESOURCE_ONLY
-        offsetof(struct resource_table, rpmsg_vdev),
+        offsetof(struct my_resource_table, rpmsg_vdev),
 #endif
-        offsetof(struct resource_table, data_cout),
-        offsetof(struct resource_table, trace),
+        offsetof(struct my_resource_table, data_cout),
+        offsetof(struct my_resource_table, trace),
     },
 
 #ifndef TRACE_RESOURCE_ONLY
index 1b942abb02e7af5f309bd3115a6c9630d2c860c5..84608b6040051c110b177a961e6e553ce6e6a1fc 100644 (file)
 #define PHYS_MEM_IPC_VRING      0x98800000
 #endif
 
-/* Need to be identical to that of Ducati */
+/* Need to be identical to that of IPU */
 #define PHYS_MEM_IOBUFS         0xBA300000
 
 /*
 /* flip up bits whose indices represent features we support */
 #define RPMSG_DSP_C0_FEATURES         1
 
-struct resource_table {
-    UInt32 version;
-    UInt32 num;
-    UInt32 reserved[2];
+struct my_resource_table {
+    struct resource_table base;
+
     UInt32 offset[16];  /* Should match 'num' in actual definition */
 
     /* rpmsg vdev entry */
@@ -176,28 +175,28 @@ struct resource_table {
 #pragma DATA_SECTION(ti_ipc_remoteproc_ResourceTable, ".resource_table")
 #pragma DATA_ALIGN(ti_ipc_remoteproc_ResourceTable, 4096)
 
-struct resource_table ti_ipc_remoteproc_ResourceTable = {
+struct my_resource_table ti_ipc_remoteproc_ResourceTable = {
     1,      /* we're the first version that implements this */
     16,     /* number of entries in the table */
     0, 0,   /* reserved, must be zero */
     /* offsets to entries */
     {
-        offsetof(struct resource_table, rpmsg_vdev),
-        offsetof(struct resource_table, text_cout),
-        offsetof(struct resource_table, data_cout),
-        offsetof(struct resource_table, heap_cout),
-        offsetof(struct resource_table, ipcdata_cout),
-        offsetof(struct resource_table, trace),
-        offsetof(struct resource_table, devmem0),
-        offsetof(struct resource_table, devmem1),
-        offsetof(struct resource_table, devmem2),
-        offsetof(struct resource_table, devmem3),
-        offsetof(struct resource_table, devmem4),
-        offsetof(struct resource_table, devmem5),
-        offsetof(struct resource_table, devmem6),
-        offsetof(struct resource_table, devmem7),
-        offsetof(struct resource_table, devmem8),
-        offsetof(struct resource_table, devmem9),
+        offsetof(struct my_resource_table, rpmsg_vdev),
+        offsetof(struct my_resource_table, text_cout),
+        offsetof(struct my_resource_table, data_cout),
+        offsetof(struct my_resource_table, heap_cout),
+        offsetof(struct my_resource_table, ipcdata_cout),
+        offsetof(struct my_resource_table, trace),
+        offsetof(struct my_resource_table, devmem0),
+        offsetof(struct my_resource_table, devmem1),
+        offsetof(struct my_resource_table, devmem2),
+        offsetof(struct my_resource_table, devmem3),
+        offsetof(struct my_resource_table, devmem4),
+        offsetof(struct my_resource_table, devmem5),
+        offsetof(struct my_resource_table, devmem6),
+        offsetof(struct my_resource_table, devmem7),
+        offsetof(struct my_resource_table, devmem8),
+        offsetof(struct my_resource_table, devmem9),
     },
 
     /* rpmsg vdev entry */
index 6700b0dca6271d64c6ebd0905305958dd804f71d..1b3a3fdd0c79e277d823716ef2da1e32911fd969 100644 (file)
 /* flip up bits whose indices represent features we support */
 #define RPMSG_IPU_C0_FEATURES   1
 
-struct resource_table {
-    UInt32 version;
-    UInt32 num;
-    UInt32 reserved[2];
+struct my_resource_table {
+    struct resource_table base;
+
     UInt32 offset[16];  /* Should match 'num' in actual definition */
 
     /* rpmsg vdev entry */
@@ -184,28 +183,28 @@ struct resource_table {
 #pragma DATA_SECTION(ti_ipc_remoteproc_ResourceTable, ".resource_table")
 #pragma DATA_ALIGN(ti_ipc_remoteproc_ResourceTable, 4096)
 
-struct resource_table ti_ipc_remoteproc_ResourceTable = {
+struct my_resource_table ti_ipc_remoteproc_ResourceTable = {
     1,      /* we're the first version that implements this */
     16,     /* number of entries in the table */
     0, 0,   /* reserved, must be zero */
     /* offsets to entries */
     {
-        offsetof(struct resource_table, rpmsg_vdev),
-        offsetof(struct resource_table, text_cout),
-        offsetof(struct resource_table, data_cout),
-        offsetof(struct resource_table, ipcdata_cout),
-        offsetof(struct resource_table, trace),
-        offsetof(struct resource_table, devmem0),
-        offsetof(struct resource_table, devmem1),
-        offsetof(struct resource_table, devmem2),
-        offsetof(struct resource_table, devmem3),
-        offsetof(struct resource_table, devmem4),
-        offsetof(struct resource_table, devmem5),
-        offsetof(struct resource_table, devmem6),
-        offsetof(struct resource_table, devmem7),
-        offsetof(struct resource_table, devmem8),
-        offsetof(struct resource_table, devmem9),
-        offsetof(struct resource_table, devmem10),
+        offsetof(struct my_resource_table, rpmsg_vdev),
+        offsetof(struct my_resource_table, text_cout),
+        offsetof(struct my_resource_table, data_cout),
+        offsetof(struct my_resource_table, ipcdata_cout),
+        offsetof(struct my_resource_table, trace),
+        offsetof(struct my_resource_table, devmem0),
+        offsetof(struct my_resource_table, devmem1),
+        offsetof(struct my_resource_table, devmem2),
+        offsetof(struct my_resource_table, devmem3),
+        offsetof(struct my_resource_table, devmem4),
+        offsetof(struct my_resource_table, devmem5),
+        offsetof(struct my_resource_table, devmem6),
+        offsetof(struct my_resource_table, devmem7),
+        offsetof(struct my_resource_table, devmem8),
+        offsetof(struct my_resource_table, devmem9),
+        offsetof(struct my_resource_table, devmem10),
     },
 
     /* rpmsg vdev entry */
index 0cd56ba12453bc5dd88fc9b3628f0e36bbf0a96f..a29746691be8b7cea30bdac0bdce643271cd5153 100644 (file)
@@ -89,6 +89,12 @@ enum rproc_memregion {
 };
 
 /* Common Resource Structure Types */
+struct resource_table {
+    UInt32 ver;
+    UInt32 num;
+    UInt32 reserved[2];
+};
+
 struct fw_rsc_carveout {
     UInt32  type;
     UInt32  da;