Modified Memory Map in Resource table. 1.00.00.00
authorPradeep Venkatasubbarao <pradeepv@ti.com>
Tue, 3 Dec 2013 11:01:25 +0000 (16:31 +0530)
committerPradeep Venkatasubbarao <pradeepv@ti.com>
Tue, 3 Dec 2013 11:01:25 +0000 (16:31 +0530)
Now DSP can allocate upto 64MB.

Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
Makefile
build/config.bld
platform/ti/dce/baseimage/custom_rsc_table_vayu_dsp.h
platform/ti/dce/baseimage/dce_dsp.cfg
platform/ti/dce/baseimage/main.c
src/ti/framework/dce/dce.c

index a65ac9a8fb6712f87fc5768b51c12317a2edb017..46bf5b88105f2368d218129654dfe043fd99a754 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -23,13 +23,12 @@ XDCVERSION  ?= xdctools_3_25_02_70
 BIOSVERSION    ?= bios_6_35_02_45
 IPCVERSION     ?= ipc_3_10_00_08
 CEVERSION      ?= codec_engine_3_24_00_08
-#FCVERSION     ?= framework_components_3_24_00_09
-FCVERSION      ?= framework_components_3_24_02_14_eng
+FCVERSION      ?= framework_components_3_24_02_15
 XDAISVERSION   ?= xdais_7_24_00_04
 OSALVERSION    ?= osal_1_24_00_09
 
 # TI Compiler Settings
-export CGT_C66X_ELF_INSTALL_DIR ?= /opt/ti/TI_CGT_TI_C66X_7.2.3
+export C66XCGTOOLSPATH ?= /opt/ti/C6000CGT7.4.2
 
 # Define where the sources are
 DSPDCEMMSRC    = $(shell pwd)
@@ -96,21 +95,6 @@ vayu_config: unconfig
        @echo ".\c"
        @echo "done"
 
-omap5_config: unconfig
-       @echo "Creating new config\c"
-       @echo DSP_CONFIG = omap5_smp_config > bldcfg.mk
-       @echo ".\c"
-       @echo MYXDCARGS=\"profile=$(PROFILE) trace_level=$(TRACELEVEL) hw_type=OMAP5 hw_version=$(HWVERSION) BIOS_type=non-SMP\" >> bldcfg.mk
-       @echo ".\c"
-       @echo CHIP = OMAP5 >> bldcfg.mk
-       @echo ".\c"
-       @echo FORSMP = 0 >> bldcfg.mk
-       @echo ".\c"
-       @echo DSPBINNAME = "omap5-dsp.xe66x" >> bldcfg.mk
-       @echo INTBINNAME = "dsp.xe66x" >> bldcfg.mk
-       @echo ".\c"
-       @echo "done"
-
 clean: config
        export XDCARGS=$(MYXDCARGS); \
         $(XDCROOT)/xdc --jobs=$(JOBS) clean -PD $(DSPDCEMMSRC)/platform/ti/dce/baseimage/.
@@ -120,8 +104,8 @@ ifeq ($(IPCSRC),)
        @echo "ERROR: IPCSRC not set. Exiting..."
        @echo "For more info, use 'make help'"
        @exit 1
-else ifeq ($(CGT_C66X_ELF_INSTALL_DIR),)
-       @echo "ERROR: CGT_C66X_ELF_INSTALL_DIR not set. Exiting..."
+else ifeq ($(C66XCGTOOLSPATH),)
+       @echo "ERROR: C66XCGTOOLSPATH not set. Exiting..."
        @echo "For more info, use 'make help'"
        @exit 1
 endif
@@ -130,7 +114,7 @@ endif
 
 dspbin: build
 ifeq ($(FORSMP),0)
-       $(CGT_C66X_ELF_INSTALL_DIR)/bin/strip6x $(DSPDCEMMSRC)/platform/ti/dce/baseimage/out/dsp/$(PROFILE)/$(INTBINNAME) -o=$(DSPBINNAME)
+       $(C66XCGTOOLSPATH)/bin/strip6x $(DSPDCEMMSRC)/platform/ti/dce/baseimage/out/dsp/$(PROFILE)/$(INTBINNAME) -o=$(DSPBINNAME)
 else
        @echo "***********Not yet implemented************"
 endif
@@ -144,7 +128,7 @@ tools:
        @echo "FC      := $(FCPROD)"
        @echo "CE      := $(CEPROD)"
        @echo "XDAIS   := $(XDAISPROD)"
-       @echo "CGT_C66X_ELF_INSTALL_DIR := $(CGT_C66X_ELF_INSTALL_DIR)"
+       @echo "C66XCGTOOLSPATH := $(C66XCGTOOLSPATH)"
        @echo " "
 
 sources:
@@ -174,7 +158,7 @@ help:
        @echo "Please export the following variables: "
        @echo " 1. BIOSTOOLSROOT - Directory where all the BIOS tools are installed."
        @echo "                    If not mentioned, picks up the default, /opt/ti"
-       @echo " 2. CGT_C66X_ELF_INSTALL_DIR - DSP Code Generation Tools installation path"
+       @echo " 2. C66XCGTOOLSPATH - DSP Code Generation Tools installation path"
        @echo "                       If not mentioned, tries the default install location, /opt/ti/TI_CGT_TI_ARM_5.0.1"
        @echo " 3. IPCSRC - Absolute path of the $(IPCVERSION)"
        @echo " 4. [Optional] - Any of the following variables can be defined to customize your build."
@@ -190,7 +174,7 @@ help:
        @echo "       FCVERSION        = $(FCPROD)"
        @echo "       XDAISVERSION     = $(XDAISPROD)"
        @echo "       OSALVERSION      = $(OSALPROD)"
-       @echo "       CGT_C66X_ELF_INSTALL_DIR = $(CGT_C66X_ELF_INSTALL_DIR)"
+       @echo "       C66XCGTOOLSPATH = $(C66XCGTOOLSPATH)"
        @echo " "
        @echo "Use the appropriate make targets from the following: "
        @echo "  Configure Platform: "
index 60ee3fb97050ab1d6eaaa07e3efb23aa41cf72b6..d459ec5e95bbd41590eb0fb72accacf13cf08b85 100644 (file)
@@ -24,17 +24,17 @@ for (x = 0; x < arguments.length; x++)
  *  --- External Memory ---
  *  Virtual     Physical        Size            Comment
  *  ------------------------------------------------------------------------
- *  9500_0000   ????_????    10_0000  (  ~1 MB) EXT_CODE
- *  9510_0000   ????_????    10_0000  (   1 MB) EXT_DATA
- *  9520_0000   ????_????    30_0000  (  3 MB) EXT_HEAP
+ *  9500_0000   ????_????    20_0000  (  ~2 MB) EXT_CODE
+ *  9520_0000   ????_????    20_0000  (   2 MB) EXT_DATA
+ *  9540_0000   ????_????   280_0000  (  40 MB) EXT_HEAP
  *  9F00_0000   9F00_0000     6_0000  ( 384 kB) TRACE_BUF
  *  9F06_0000   9F06_0000     1_0000  (  64 kB) EXC_DATA
  *  9F07_0000   9F07_0000     2_0000  ( 128 kB) PM_DATA (Power mgmt)
  */
 var evmDRA7XX_ExtMemMapDsp1 = {
-       EXT_CODE: { name: "EXT_CODE", base: 0x95000000, len:  0x100000, space: "code", access: "RWX" },
-       EXT_DATA: { name: "EXT_DATA", base: 0x95100000, len:  0x00100000, space: "data", access: "RW" },
-       EXT_HEAP: { name: "EXT_HEAP", base: 0x95200000, len:  0x0300000, space: "data", access: "RW" },
+       EXT_CODE: { name: "EXT_CODE", base: 0x95000000, len:  0x200000, space: "code", access: "RWX" },
+       EXT_DATA: { name: "EXT_DATA", base: 0x95200000, len:  0x00200000, space: "data", access: "RW" },
+       EXT_HEAP: { name: "EXT_HEAP", base: 0x95400000, len:  0x02800000, space: "data", access: "RW" },
        TRACE_BUF: { name: "TRACE_BUF", base: 0x9F000000, len:  0x00060000, space: "data", access: "RW" },
        EXC_DATA: { name: "EXC_DATA", base: 0x9F060000, len:  0x00010000, space: "data", access: "RW" },
        PM_DATA: { name: "PM_DATA", base: 0x9F070000, len:  0x00020000, space: "data", access: "RWX" }
@@ -62,7 +62,7 @@ var TargetBuild = commonBld.getTargetBuild(arguments);
 * Setup for dsp target
 ************************************/
 var dsp_tgt            = xdc.useModule('ti.targets.elf.C66');
-dsp_tgt.rootDir        = java.lang.System.getenv("CGT_C66X_ELF_INSTALL_DIR");
+dsp_tgt.rootDir        = java.lang.System.getenv("C66XCGTOOLSPATH");
 dsp_tgt.ccOpts.suffix  += " --gcc -D___DSPBIOS___ -DDSP";
 dsp_tgt.ccOpts.suffix += " -ms ";
 //dsp_tgt.ccOpts.suffix += " -pden -pds=48 ";
@@ -99,13 +99,13 @@ if(trace_level == 0) {
     HwVer = ES10;
     var build_vayu = true;
     print("Selected Vayu for ES10");
-    
+
     dsp_tgt.ccOpts.suffix += " -DBUILD_FOR_VAYU";
        dsp_tgt.ccOpts.suffix += " -DVAYU_ES10";
     dsp_tgt.platform = dsp_tgt.platforms[0];
-    
+
 }
-    
+
 /************************************
 * Setup for WIN target
 ************************************/
index c8891cf2648141390d303398bec10acf8be8c512..c28912722f433920a74e869b733b56c53e4c2e3c 100644 (file)
-/*\r
- * Copyright (c) 2013, Texas Instruments Incorporated\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- *\r
- * *  Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- *\r
- * *  Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * *  Neither the name of Texas Instruments Incorporated nor the names of\r
- *    its contributors may be used to endorse or promote products derived\r
- *    from this software without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\r
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\r
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\r
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\r
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- */\r
\r
-/*\r
- *  ======== custom_rsc_table_vayu_ipu.h ========\r
- *\r
- *  Define the VAYU/DRA7xx custom resource table entries for all IPU cores. This will be\r
- *  incorporated into corresponding base images, and used by the remoteproc\r
- *  on the host-side to allocated/reserve resources.\r
- *\r
- */\r
-\r
-#ifndef __CUSTOM_RSC_TABLE_VAYU_DSP_H__\r
-#define __CUSTOM_RSC_TABLE_VAYU_DSP_H__\r
-\r
-#include <ti/ipc/remoteproc/rsc_types.h>\r
-\r
-/* DSP Memory Map */\r
-#define L4_DRA7XX_BASE          0x4A000000\r
-\r
-/* L4_CFG & L4_WKUP */\r
-#define L4_PERIPHERAL_L4CFG     (L4_DRA7XX_BASE)\r
-#define DSP_PERIPHERAL_L4CFG    0x4A000000\r
-\r
-#define L4_PERIPHERAL_L4PER1    0x48000000\r
-#define DSP_PERIPHERAL_L4PER1   0x48000000\r
-\r
-#define L4_PERIPHERAL_L4PER2    0x48400000\r
-#define DSP_PERIPHERAL_L4PER2   0x48400000\r
-\r
-#define L4_PERIPHERAL_L4PER3    0x48800000\r
-#define DSP_PERIPHERAL_L4PER3   0x48800000\r
-\r
-#define L4_PERIPHERAL_L4EMU     0x54000000\r
-#define DSP_PERIPHERAL_L4EMU    0x54000000\r
-\r
-#define L3_PERIPHERAL_DMM       0x4E000000\r
-#define DSP_PERIPHERAL_DMM      0x4E000000\r
-\r
-\r
-#define L3_PERIPHERAL_ISS       0x52000000\r
-#define DSP_PERIPHERAL_ISS      0x52000000\r
-\r
-#define L3_TILER_MODE_0_1       0x60000000\r
-#define DSP_TILER_MODE_0_1      0x60000000\r
-\r
-#define L3_TILER_MODE_2         0x70000000\r
-#define DSP_TILER_MODE_2        0x70000000\r
-\r
-#define L3_TILER_MODE_3         0x78000000\r
-#define DSP_TILER_MODE_3        0x78000000\r
-\r
-#define DSP_MEM_TEXT            0x95000000\r
-#define DSP_MEM_IOBUFS          0x80000000\r
-#define DSP_MEM_DATA            0x95100000\r
-#define DSP_MEM_HEAP            0x95200000\r
-\r
-#define DSP_MEM_IPC_DATA        0x9F000000\r
-#define DSP_MEM_IPC_VRING       0xA0000000\r
-#define DSP_MEM_RPMSG_VRING0    0xA0000000\r
-#define DSP_MEM_RPMSG_VRING1    0xA0004000\r
-#define DSP_MEM_VRING_BUFS0     0xA0040000\r
-#define DSP_MEM_VRING_BUFS1     0xA0080000\r
-\r
-#define DSP_MEM_IPC_VRING_SIZE  SZ_1M\r
-#define DSP_MEM_IPC_DATA_SIZE   SZ_1M\r
-\r
-#define DSP_MEM_TEXT_SIZE       SZ_1M\r
-\r
-#define DSP_MEM_DATA_SIZE       SZ_1M\r
-#define DSP_MEM_HEAP_SIZE       (SZ_1M * 3)\r
-#define DSP_MEM_IOBUFS_SIZE     (SZ_1M * 90)\r
-\r
-/*\r
- * Assign fixed RAM addresses to facilitate a fixed MMU table.\r
- * PHYS_MEM_IPC_VRING & PHYS_MEM_IPC_DATA MUST be together.\r
- */\r
-/* See CMA BASE addresses in Linux side: arch/arm/mach-omap2/remoteproc.c */\r
-\r
-#define PHYS_MEM_IPC_VRING      0x95000000\r
-#define PHYS_MEM_IOBUFS         0xBA300000\r
-\r
-/*\r
- * Sizes of the virtqueues (expressed in number of buffers supported,\r
- * and must be power of 2)\r
- */\r
-#define DSP_RPMSG_VQ0_SIZE      256\r
-#define DSP_RPMSG_VQ1_SIZE      256\r
-\r
-/* flip up bits whose indices represent features we support */\r
-#define RPMSG_DSP_C0_FEATURES   1\r
-\r
-struct my_resource_table {\r
-    struct resource_table base;\r
-\r
-    UInt32 offset[18];  /* Should match 'num' in actual definition */\r
-\r
-    /* rpmsg vdev entry */\r
-    struct fw_rsc_vdev rpmsg_vdev;\r
-    struct fw_rsc_vdev_vring rpmsg_vring0;\r
-    struct fw_rsc_vdev_vring rpmsg_vring1;\r
-\r
-    /* text carveout entry */\r
-    struct fw_rsc_carveout text_cout;\r
-\r
-    /* data carveout entry */\r
-    struct fw_rsc_carveout data_cout;\r
-    /* heap carveout entry */\r
-    struct fw_rsc_carveout heap_cout;\r
-\r
-    /* ipcdata carveout entry */\r
-    struct fw_rsc_carveout ipcdata_cout;\r
-\r
-    /* trace entry */\r
-    struct fw_rsc_trace trace;\r
-\r
-    /* devmem entry */\r
-    struct fw_rsc_devmem devmem0;\r
-\r
-    /* devmem entry */\r
-    struct fw_rsc_devmem devmem1;\r
-\r
-    /* devmem entry */\r
-    struct fw_rsc_devmem devmem2;\r
-\r
-    /* devmem entry */\r
-    struct fw_rsc_devmem devmem3;\r
-\r
-    /* devmem entry */\r
-    struct fw_rsc_devmem devmem4;\r
-\r
-    /* devmem entry */\r
-    struct fw_rsc_devmem devmem5;\r
-\r
-    /* devmem entry */\r
-    struct fw_rsc_devmem devmem6;\r
-\r
-    /* devmem entry */\r
-    struct fw_rsc_devmem devmem7;\r
-\r
-    /* devmem entry */\r
-    struct fw_rsc_devmem devmem8;\r
-\r
-    /* devmem entry */\r
-    struct fw_rsc_devmem devmem9;\r
-\r
-    /* devmem entry */\r
-    struct fw_rsc_devmem devmem10;\r
-\r
-    /* devmem entry */\r
-    struct fw_rsc_devmem devmem11;\r
-};\r
-\r
-extern char ti_trace_SysMin_Module_State_0_outbuf__A;\r
-#define TRACEBUFADDR (UInt32)&ti_trace_SysMin_Module_State_0_outbuf__A\r
-\r
-#pragma DATA_SECTION(ti_ipc_remoteproc_ResourceTable, ".resource_table")\r
-#pragma DATA_ALIGN(ti_ipc_remoteproc_ResourceTable, 4096)\r
-\r
-struct my_resource_table ti_ipc_remoteproc_ResourceTable = {\r
-    1,      /* we're the first version that implements this */\r
-    18,     /* number of entries in the table */\r
-    0, 0,   /* reserved, must be zero */\r
-    /* offsets to entries */\r
-    {\r
-        offsetof(struct my_resource_table, rpmsg_vdev),\r
-        offsetof(struct my_resource_table, text_cout),\r
-        offsetof(struct my_resource_table, data_cout),\r
-        offsetof(struct my_resource_table, heap_cout),\r
-        offsetof(struct my_resource_table, ipcdata_cout),\r
-        offsetof(struct my_resource_table, trace),\r
-        offsetof(struct my_resource_table, devmem0),\r
-        offsetof(struct my_resource_table, devmem1),\r
-        offsetof(struct my_resource_table, devmem2),\r
-        offsetof(struct my_resource_table, devmem3),\r
-        offsetof(struct my_resource_table, devmem4),\r
-        offsetof(struct my_resource_table, devmem5),\r
-        offsetof(struct my_resource_table, devmem6),\r
-        offsetof(struct my_resource_table, devmem7),\r
-        offsetof(struct my_resource_table, devmem8),\r
-        offsetof(struct my_resource_table, devmem9),\r
-        offsetof(struct my_resource_table, devmem10),\r
-        offsetof(struct my_resource_table, devmem11),\r
-    },\r
-\r
-    /* rpmsg vdev entry */\r
-    {\r
-        TYPE_VDEV, VIRTIO_ID_RPMSG, 0,\r
-        RPMSG_DSP_C0_FEATURES, 0, 0, 0, 2, { 0, 0 },\r
-        /* no config data */\r
-    },\r
-    /* the two vrings */\r
-    { DSP_MEM_RPMSG_VRING0, 4096, DSP_RPMSG_VQ0_SIZE, 1, 0 },\r
-    { DSP_MEM_RPMSG_VRING1, 4096, DSP_RPMSG_VQ1_SIZE, 2, 0 },\r
-\r
-    {\r
-        TYPE_CARVEOUT,\r
-        DSP_MEM_TEXT, 0,\r
-        DSP_MEM_TEXT_SIZE, 0, 0, "DSP_MEM_TEXT",\r
-    },\r
-\r
-    {\r
-        TYPE_CARVEOUT,\r
-        DSP_MEM_DATA, 0,\r
-        DSP_MEM_DATA_SIZE, 0, 0, "DSP_MEM_DATA",\r
-    },\r
-\r
-    {\r
-        TYPE_CARVEOUT,\r
-        DSP_MEM_HEAP, 0,\r
-        DSP_MEM_HEAP_SIZE, 0, 0, "DSP_MEM_HEAP",\r
-    },\r
-\r
-    {\r
-        TYPE_CARVEOUT,\r
-        DSP_MEM_IPC_DATA, 0,\r
-        DSP_MEM_IPC_DATA_SIZE, 0, 0, "DSP_MEM_IPC_DATA",\r
-    },\r
-\r
-    {\r
-        TYPE_TRACE, TRACEBUFADDR, 0x8000, 0, "trace:dsp",\r
-    },\r
-\r
-    {\r
-        TYPE_DEVMEM,\r
-        DSP_MEM_IPC_VRING, PHYS_MEM_IPC_VRING,\r
-        DSP_MEM_IPC_VRING_SIZE, 0, 0, "DSP_MEM_IPC_VRING",\r
-    },\r
-\r
-    {\r
-        TYPE_DEVMEM,\r
-        DSP_MEM_IOBUFS, PHYS_MEM_IOBUFS,\r
-        DSP_MEM_IOBUFS_SIZE, 0, 0, "DSP_MEM_IOBUFS",\r
-    },\r
-\r
-    {\r
-        TYPE_DEVMEM,\r
-        DSP_TILER_MODE_0_1, L3_TILER_MODE_0_1,\r
-        SZ_256M, 0, 0, "DSP_TILER_MODE_0_1",\r
-    },\r
-\r
-    {\r
-        TYPE_DEVMEM,\r
-        DSP_TILER_MODE_2, L3_TILER_MODE_2,\r
-        SZ_128M, 0, 0, "DSP_TILER_MODE_2",\r
-    },\r
-\r
-    {\r
-        TYPE_DEVMEM,\r
-        DSP_TILER_MODE_3, L3_TILER_MODE_3,\r
-        SZ_128M, 0, 0, "DSP_TILER_MODE_3",\r
-    },\r
-\r
-    {\r
-        TYPE_DEVMEM,\r
-        DSP_PERIPHERAL_L4CFG, L4_PERIPHERAL_L4CFG,\r
-        SZ_16M, 0, 0, "DSP_PERIPHERAL_L4CFG",\r
-    },\r
-\r
-    {\r
-        TYPE_DEVMEM,\r
-        DSP_PERIPHERAL_L4PER1, L4_PERIPHERAL_L4PER1,\r
-        SZ_2M, 0, 0, "DSP_PERIPHERAL_L4PER1",\r
-    },\r
-\r
-    {\r
-        TYPE_DEVMEM,\r
-        DSP_PERIPHERAL_L4PER2, L4_PERIPHERAL_L4PER2,\r
-        SZ_4M, 0, 0, "DSP_PERIPHERAL_L4PER2",\r
-    },\r
-\r
-    {\r
-        TYPE_DEVMEM,\r
-        DSP_PERIPHERAL_L4PER3, L4_PERIPHERAL_L4PER3,\r
-        SZ_8M, 0, 0, "DSP_PERIPHERAL_L4PER3",\r
-    },\r
-\r
-    {\r
-        TYPE_DEVMEM,\r
-        DSP_PERIPHERAL_L4EMU, L4_PERIPHERAL_L4EMU,\r
-        SZ_16M, 0, 0, "DSP_PERIPHERAL_L4EMU",\r
-    },\r
-\r
-    {\r
-        TYPE_DEVMEM,\r
-        DSP_PERIPHERAL_DMM, L3_PERIPHERAL_DMM,\r
-        SZ_1M, 0, 0, "DSP_PERIPHERAL_DMM",\r
-    },\r
-\r
-    {\r
-        TYPE_DEVMEM,\r
-        DSP_PERIPHERAL_ISS, L3_PERIPHERAL_ISS,\r
-        SZ_256K, 0, 0, "DSP_PERIPHERAL_ISS",\r
-    },\r
-};\r
-\r
-#endif /* __CUSTOM_RSC_TABLE_VAYU_DSP_H__ */\r
-\r
+/*
+ * Copyright (c) 2013, Texas Instruments Incorporated
+ * 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.
+ */
+
+/*
+ *  ======== custom_rsc_table_vayu_ipu.h ========
+ *
+ *  Define the VAYU/DRA7xx custom resource table entries for all IPU cores. This will be
+ *  incorporated into corresponding base images, and used by the remoteproc
+ *  on the host-side to allocated/reserve resources.
+ *
+ */
+
+#ifndef __CUSTOM_RSC_TABLE_VAYU_DSP_H__
+#define __CUSTOM_RSC_TABLE_VAYU_DSP_H__
+
+#include <ti/ipc/remoteproc/rsc_types.h>
+
+/* DSP Memory Map */
+#define L4_DRA7XX_BASE          0x4A000000
+
+/* L4_CFG & L4_WKUP */
+#define L4_PERIPHERAL_L4CFG     (L4_DRA7XX_BASE)
+#define DSP_PERIPHERAL_L4CFG    0x4A000000
+
+#define L4_PERIPHERAL_L4PER1    0x48000000
+#define DSP_PERIPHERAL_L4PER1   0x48000000
+
+#define L4_PERIPHERAL_L4PER2    0x48400000
+#define DSP_PERIPHERAL_L4PER2   0x48400000
+
+#define L4_PERIPHERAL_L4PER3    0x48800000
+#define DSP_PERIPHERAL_L4PER3   0x48800000
+
+#define L4_PERIPHERAL_L4EMU     0x54000000
+#define DSP_PERIPHERAL_L4EMU    0x54000000
+
+#define L3_PERIPHERAL_DMM       0x4E000000
+#define DSP_PERIPHERAL_DMM      0x4E000000
+
+
+#define L3_PERIPHERAL_ISS       0x52000000
+#define DSP_PERIPHERAL_ISS      0x52000000
+
+#define L3_TILER_MODE_0_1       0x60000000
+#define DSP_TILER_MODE_0_1      0x60000000
+
+#define L3_TILER_MODE_2         0x70000000
+#define DSP_TILER_MODE_2        0x70000000
+
+#define L3_TILER_MODE_3         0x78000000
+#define DSP_TILER_MODE_3        0x78000000
+
+#define DSP_MEM_TEXT            0x95000000
+#define DSP_MEM_IOBUFS          0x80000000
+#define DSP_MEM_DATA            0x95200000
+#define DSP_MEM_HEAP            0x95400000
+
+#define DSP_MEM_IPC_DATA        0x9F000000
+#define DSP_MEM_IPC_VRING       0xA0000000
+#define DSP_MEM_RPMSG_VRING0    0xA0000000
+#define DSP_MEM_RPMSG_VRING1    0xA0004000
+#define DSP_MEM_VRING_BUFS0     0xA0040000
+#define DSP_MEM_VRING_BUFS1     0xA0080000
+
+#define DSP_MEM_IPC_VRING_SIZE  SZ_1M
+#define DSP_MEM_IPC_DATA_SIZE   SZ_1M
+
+#define DSP_MEM_TEXT_SIZE       (SZ_1M * 2)
+
+#define DSP_MEM_DATA_SIZE       (SZ_1M * 2)
+#define DSP_MEM_HEAP_SIZE       (SZ_1M * 40)
+#define DSP_MEM_IOBUFS_SIZE     (SZ_1M * 90)
+
+/*
+ * Assign fixed RAM addresses to facilitate a fixed MMU table.
+ * PHYS_MEM_IPC_VRING & PHYS_MEM_IPC_DATA MUST be together.
+ */
+/* See CMA BASE addresses in Linux side: arch/arm/mach-omap2/remoteproc.c */
+
+#define PHYS_MEM_IPC_VRING      0x99800000
+#define PHYS_MEM_IOBUFS         0xBA300000
+
+/*
+ * Sizes of the virtqueues (expressed in number of buffers supported,
+ * and must be power of 2)
+ */
+#define DSP_RPMSG_VQ0_SIZE      256
+#define DSP_RPMSG_VQ1_SIZE      256
+
+/* flip up bits whose indices represent features we support */
+#define RPMSG_DSP_C0_FEATURES   1
+
+struct my_resource_table {
+    struct resource_table base;
+
+    UInt32 offset[18];  /* Should match 'num' in actual definition */
+
+    /* rpmsg vdev entry */
+    struct fw_rsc_vdev rpmsg_vdev;
+    struct fw_rsc_vdev_vring rpmsg_vring0;
+    struct fw_rsc_vdev_vring rpmsg_vring1;
+
+    /* text carveout entry */
+    struct fw_rsc_carveout text_cout;
+
+    /* data carveout entry */
+    struct fw_rsc_carveout data_cout;
+    /* heap carveout entry */
+    struct fw_rsc_carveout heap_cout;
+
+    /* ipcdata carveout entry */
+    struct fw_rsc_carveout ipcdata_cout;
+
+    /* trace entry */
+    struct fw_rsc_trace trace;
+
+    /* devmem entry */
+    struct fw_rsc_devmem devmem0;
+
+    /* devmem entry */
+    struct fw_rsc_devmem devmem1;
+
+    /* devmem entry */
+    struct fw_rsc_devmem devmem2;
+
+    /* devmem entry */
+    struct fw_rsc_devmem devmem3;
+
+    /* devmem entry */
+    struct fw_rsc_devmem devmem4;
+
+    /* devmem entry */
+    struct fw_rsc_devmem devmem5;
+
+    /* devmem entry */
+    struct fw_rsc_devmem devmem6;
+
+    /* devmem entry */
+    struct fw_rsc_devmem devmem7;
+
+    /* devmem entry */
+    struct fw_rsc_devmem devmem8;
+
+    /* devmem entry */
+    struct fw_rsc_devmem devmem9;
+
+    /* devmem entry */
+    struct fw_rsc_devmem devmem10;
+
+    /* devmem entry */
+    struct fw_rsc_devmem devmem11;
+};
+
+extern char ti_trace_SysMin_Module_State_0_outbuf__A;
+#define TRACEBUFADDR (UInt32)&ti_trace_SysMin_Module_State_0_outbuf__A
+
+#pragma DATA_SECTION(ti_ipc_remoteproc_ResourceTable, ".resource_table")
+#pragma DATA_ALIGN(ti_ipc_remoteproc_ResourceTable, 4096)
+
+struct my_resource_table ti_ipc_remoteproc_ResourceTable = {
+    1,      /* we're the first version that implements this */
+    18,     /* number of entries in the table */
+    0, 0,   /* reserved, must be zero */
+    /* offsets to entries */
+    {
+        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),
+        offsetof(struct my_resource_table, devmem10),
+        offsetof(struct my_resource_table, devmem11),
+    },
+
+    /* rpmsg vdev entry */
+    {
+        TYPE_VDEV, VIRTIO_ID_RPMSG, 0,
+        RPMSG_DSP_C0_FEATURES, 0, 0, 0, 2, { 0, 0 },
+        /* no config data */
+    },
+    /* the two vrings */
+    { DSP_MEM_RPMSG_VRING0, 4096, DSP_RPMSG_VQ0_SIZE, 1, 0 },
+    { DSP_MEM_RPMSG_VRING1, 4096, DSP_RPMSG_VQ1_SIZE, 2, 0 },
+
+    {
+        TYPE_CARVEOUT,
+        DSP_MEM_TEXT, 0,
+        DSP_MEM_TEXT_SIZE, 0, 0, "DSP_MEM_TEXT",
+    },
+
+    {
+        TYPE_CARVEOUT,
+        DSP_MEM_DATA, 0,
+        DSP_MEM_DATA_SIZE, 0, 0, "DSP_MEM_DATA",
+    },
+
+    {
+        TYPE_CARVEOUT,
+        DSP_MEM_HEAP, 0,
+        DSP_MEM_HEAP_SIZE, 0, 0, "DSP_MEM_HEAP",
+    },
+
+    {
+        TYPE_CARVEOUT,
+        DSP_MEM_IPC_DATA, 0,
+        DSP_MEM_IPC_DATA_SIZE, 0, 0, "DSP_MEM_IPC_DATA",
+    },
+
+    {
+        TYPE_TRACE, TRACEBUFADDR, 0x8000, 0, "trace:dsp",
+    },
+
+    {
+        TYPE_DEVMEM,
+        DSP_MEM_IPC_VRING, PHYS_MEM_IPC_VRING,
+        DSP_MEM_IPC_VRING_SIZE, 0, 0, "DSP_MEM_IPC_VRING",
+    },
+
+    {
+        TYPE_DEVMEM,
+        DSP_MEM_IOBUFS, PHYS_MEM_IOBUFS,
+        DSP_MEM_IOBUFS_SIZE, 0, 0, "DSP_MEM_IOBUFS",
+    },
+
+    {
+        TYPE_DEVMEM,
+        DSP_TILER_MODE_0_1, L3_TILER_MODE_0_1,
+        SZ_256M, 0, 0, "DSP_TILER_MODE_0_1",
+    },
+
+    {
+        TYPE_DEVMEM,
+        DSP_TILER_MODE_2, L3_TILER_MODE_2,
+        SZ_128M, 0, 0, "DSP_TILER_MODE_2",
+    },
+
+    {
+        TYPE_DEVMEM,
+        DSP_TILER_MODE_3, L3_TILER_MODE_3,
+        SZ_128M, 0, 0, "DSP_TILER_MODE_3",
+    },
+
+    {
+        TYPE_DEVMEM,
+        DSP_PERIPHERAL_L4CFG, L4_PERIPHERAL_L4CFG,
+        SZ_16M, 0, 0, "DSP_PERIPHERAL_L4CFG",
+    },
+
+    {
+        TYPE_DEVMEM,
+        DSP_PERIPHERAL_L4PER1, L4_PERIPHERAL_L4PER1,
+        SZ_2M, 0, 0, "DSP_PERIPHERAL_L4PER1",
+    },
+
+    {
+        TYPE_DEVMEM,
+        DSP_PERIPHERAL_L4PER2, L4_PERIPHERAL_L4PER2,
+        SZ_4M, 0, 0, "DSP_PERIPHERAL_L4PER2",
+    },
+
+    {
+        TYPE_DEVMEM,
+        DSP_PERIPHERAL_L4PER3, L4_PERIPHERAL_L4PER3,
+        SZ_8M, 0, 0, "DSP_PERIPHERAL_L4PER3",
+    },
+
+    {
+        TYPE_DEVMEM,
+        DSP_PERIPHERAL_L4EMU, L4_PERIPHERAL_L4EMU,
+        SZ_16M, 0, 0, "DSP_PERIPHERAL_L4EMU",
+    },
+
+    {
+        TYPE_DEVMEM,
+        DSP_PERIPHERAL_DMM, L3_PERIPHERAL_DMM,
+        SZ_1M, 0, 0, "DSP_PERIPHERAL_DMM",
+    },
+
+    {
+        TYPE_DEVMEM,
+        DSP_PERIPHERAL_ISS, L3_PERIPHERAL_ISS,
+        SZ_256K, 0, 0, "DSP_PERIPHERAL_ISS",
+    },
+};
+
+#endif /* __CUSTOM_RSC_TABLE_VAYU_DSP_H__ */
+
index c4e15445d0f91d16eb9c3482bcf61d0625a39f30..9669492c19607e54e53160846b739ac64f0161ce 100644 (file)
-/*\r
- * Copyright (c) 2011, Texas Instruments Incorporated\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- *\r
- * *  Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- *\r
- * *  Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * *  Neither the name of Texas Instruments Incorporated nor the names of\r
- *    its contributors may be used to endorse or promote products derived\r
- *    from this software without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\r
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\r
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\r
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\r
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- */\r
-\r
-\r
-var hw_OMAP4 = 0;\r
-var hw_OMAP5 = 1;\r
-var hw_VAYU = 2;\r
-var VIRTIO = 0;\r
-var ZEBU = 0;\r
-var ES10 = 1;\r
-var ES20 = 2;\r
-\r
-var Program                    = xdc.useModule('xdc.cfg.Program');\r
-\r
-var cfgArgs = prog.build.cfgArgs;\r
-\r
-Program.global.HwType = cfgArgs.HwType;\r
-Program.global.enableSMP = cfgArgs.enableSMP;\r
-Program.global.HwVer = cfgArgs.HwVer;\r
-Program.global.coreName = "dsp";\r
-\r
-print("HwType = " + Program.global.HwType);\r
-\r
-if(Program.global.HwType == hw_VAYU)\r
-{\r
-  //  xdc.loadCapsule("ti/configs/vayu/IpcCommon.cfg.xs");\r
-    xdc.includeFile("ti/configs/vayu/Dsp1.cfg");\r
-    \r
-}\r
-else\r
-{\r
-  //  xdc.loadCapsule("ti/configs/omap54xx/IpcCommon.cfg.xs");\r
-    xdc.includeFile("ti/configs/omap54xx/Dsp.cfg");\r
-    xdc.includeFile("ti/configs/omap54xx/DspAmmu.cfg");\r
-}\r
-\r
-xdc.loadPackage('ti.ipc.mm');\r
-xdc.loadPackage('ti.ipc.ipcmgr');\r
-xdc.loadPackage('ti.srvmgr');\r
-xdc.loadPackage('ti.srvmgr.omaprpc');\r
-\r
-// Disabling default IpcCommon trace\r
-var Registry = xdc.useModule('xdc.runtime.Registry');\r
-var Diags = xdc.useModule('xdc.runtime.Diags');\r
-var Task = xdc.useModule('ti.sysbios.knl.Task');\r
-Task.common$.namedInstance = true;\r
-\r
-Registry.common$.diags_ENTRY = Diags.RUNTIME_OFF;\r
-Registry.common$.diags_EXIT = Diags.RUNTIME_OFF;\r
-Registry.common$.diags_USER1 = Diags.RUNTIME_OFF;\r
-Registry.common$.diags_INFO = Diags.RUNTIME_OFF;\r
-Registry.common$.diags_LIFECYCLE = Diags.ALWAYS_ON;\r
-Registry.common$.diags_STATUS = Diags.ALWAYS_ON;\r
-Diags.setMaskEnabled = true;\r
-\r
-var Memory                     = xdc.useModule('xdc.runtime.Memory');\r
-var HeapMem                    = xdc.useModule('ti.sysbios.heaps.HeapMem');\r
-var GateHwi                    = xdc.useModule('ti.sysbios.gates.GateHwi');\r
-HeapMem.common$.gate = GateHwi.create();\r
-\r
-\r
-var heapMemParams                      = new HeapMem.Params;\r
-heapMemParams.size                     = 0x280000; // 2.5MB\r
-heapMemParams.sectionName      = ".systemHeap";\r
-var heap0                                      = HeapMem.create(heapMemParams);\r
-Memory.defaultHeapInstance     = heap0;\r
-Program.global.heap0           = heap0;\r
-\r
-/*\r
- * Setup memory map.\r
- */\r
-\r
-/* Mark heaps as NOINIT for optimizing boot-time */\r
-Program.sectMap[".systemHeap"] = new Program.SectionSpec();\r
-Program.sectMap[".systemHeap"].loadSegment = "EXT_HEAP";\r
-Program.sectMap[".systemHeap"].type = "NOINIT";\r
-\r
-\r
-/* ----------------------------- VERSION CONFIGURATION ---------------------*/\r
-var commonBld = xdc.loadCapsule("build/common.bld");\r
-commonBld.GetVersionTag();\r
-\r
-/*\r
- *  ======== CODEC ENGINE configurations  ========\r
- */\r
-\r
-var Global = xdc.useModule('ti.sdo.ce.osal.Global');\r
-Global.runtimeEnv = Global.DSPBIOS;\r
-\r
-xdc.useModule('ti.sdo.ce.global.Settings').profile    = "debug";\r
-xdc.loadPackage('ti.sdo.ce.video').profile            = "debug";\r
-xdc.loadPackage('ti.sdo.ce.video3').profile           = "debug";\r
-xdc.loadPackage('ti.sdo.ce.alg').profile              = "debug";\r
-\r
-var HeapBufMP                  = xdc.useModule('ti.sdo.ipc.heaps.HeapBufMP');\r
-\r
-var ipcSettings = xdc.useModule('ti.sdo.ce.ipc.Settings');\r
-ipcSettings.ipc = xdc.useModule('ti.sdo.ce.ipc.bios.Ipc');\r
-// set to true to enable debugging of codec engine\r
-xdc.useModule('ti.sdo.ce.Settings').checked         = true;\r
-\r
-/* Enable Memory Translation module that operates on the BIOS Resource Table */\r
-var Resource = xdc.useModule('ti.ipc.remoteproc.Resource');\r
-Resource.customTable = true;\r
-\r
-// Load decoder/encoder APIs:\r
-var VIDDEC2 = xdc.useModule('ti.sdo.ce.video2.IVIDDEC2');\r
-var UNIVERSAL = xdc.useModule('ti.sdo.ce.universal.IUNIVERSAL');\r
-\r
-// load whatever codecs are available in the build\r
-var codecs = [];\r
-\r
-function loadCodec(pkg, name)\r
-{\r
-   try {\r
-               var codec = xdc.useModule(pkg);\r
-               print('loading: ' + name);\r
-               codecs.push({ name: name, mod: codec, local: true });\r
-       } catch(e) {\r
-               print('no package: ' + pkg);\r
-       }\r
-}\r
-\r
-loadCodec('ti.sdo.codecs.universal.ce.UNIVERSAL', 'dsp_universalCopy');\r
-\r
-var engine         = xdc.useModule('ti.sdo.ce.Engine');\r
-var myEngine       = engine.create("dsp_vidsvr", codecs);\r
-\r
-xdc.useModule('ti.sysbios.knl.Task');\r
-var Task = xdc.useModule('ti.sysbios.knl.Task');\r
-Task.defaultStackSize = 12 * 0x400;\r
-\r
-/* ----------------------------- Configure BIOS--------------------------------*/\r
-\r
-BIOS                = xdc.useModule('ti.sysbios.BIOS');\r
-BIOS.addUserStartupFunction('&IpcMgr_rpmsgStartup');\r
-\r
-BIOS.clockEnabled   = true;\r
-BIOS.libType = BIOS.LibType_Custom;\r
-BIOS.smpEnabled = false;\r
-\r
-\r
-var Timer = xdc.useModule('ti.sysbios.timers.dmtimer.Timer');\r
-if(Program.global.HwType == hw_OMAP5 || Program.global.HwType == hw_VAYU)\r
-{\r
-    /*\r
-    BIOS assumes that default frequency is 38.4 MHz. On OMAP5, SYS_CLK is used to source\r
-    Hence it is clocked at 19.2 MHz.\r
-\r
-    Locally setting the BIOS configuration for GPT and CTM for OMAP5 till actual changes are\r
-    present in omap54xx/ipu/Platform.xdc\r
-    */\r
-    Timer.intFreq.hi = 0;\r
-    Timer.intFreq.lo = 19200000;\r
-    BIOS.cpuFreq.hi = 0;\r
-    BIOS.cpuFreq.lo = 600000000;\r
-}\r
-\r
-Program.sectMap[".plt"] = "EXT_DATA";\r
-\r
-\r
-/* IPC 3.x is no longer providing version capability. If needed, then IPC needs to implement it. */\r
-    /* Version module; this will produce a .version section with trees infos. Read\r
-     * with "readelf -p .version <base_image>" */\r
-//    xdc.useModule('ti.utils.Version');\r
-\r
+/*
+ * Copyright (c) 2011, Texas Instruments Incorporated
+ * 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.
+ */
+
+
+var hw_OMAP4 = 0;
+var hw_OMAP5 = 1;
+var hw_VAYU = 2;
+var VIRTIO = 0;
+var ZEBU = 0;
+var ES10 = 1;
+var ES20 = 2;
+
+var Program                    = xdc.useModule('xdc.cfg.Program');
+
+var cfgArgs = prog.build.cfgArgs;
+
+Program.global.HwType = cfgArgs.HwType;
+Program.global.enableSMP = cfgArgs.enableSMP;
+Program.global.HwVer = cfgArgs.HwVer;
+Program.global.coreName = "dsp";
+
+print("HwType = " + Program.global.HwType);
+
+//*************************************
+var System      = xdc.useModule('xdc.runtime.System');
+var SysMin      = xdc.useModule('ti.trace.SysMin');
+System.SupportProxy = SysMin;
+SysMin.bufSize  = 0x8000;
+
+var Memory      = xdc.useModule('xdc.runtime.Memory');
+Memory.defaultHeapSize = 0x20000;
+
+var Semaphore   = xdc.useModule('ti.sysbios.knl.Semaphore');
+
+var Cache = xdc.useModule('ti.sysbios.family.c66.Cache');
+Cache.setMarMeta(0xa0000000, 0x02000000, Cache.Mar_DISABLE);
+var L1cache = new Cache.Size();
+L1cache.l1dSize = Cache.L1Size_0K;
+
+xdc.loadPackage('ti.sdo.ipc.family.vayu');
+xdc.useModule('ti.sdo.ipc.family.vayu.InterruptDsp');
+xdc.loadPackage('ti.ipc.rpmsg');
+xdc.loadPackage('ti.ipc.family.vayu');
+
+/* Enable Memory Translation module that operates on the BIOS Resource Table */
+var Resource = xdc.useModule('ti.ipc.remoteproc.Resource');
+Resource.loadSegment = "EXT_CODE"
+
+/* Modules used in Power Management */
+xdc.loadPackage('ti.pm');
+
+/* Idle function that periodically flushes the unicache */
+var Idle = xdc.useModule('ti.sysbios.knl.Idle');
+Idle.addFunc('&VirtQueue_cacheWb');
+
+var HeapBuf   = xdc.useModule('ti.sysbios.heaps.HeapBuf');
+var List      = xdc.useModule('ti.sdo.utils.List');
+
+xdc.useModule('ti.sysbios.xdcruntime.GateThreadSupport');
+var GateSwi   = xdc.useModule('ti.sysbios.gates.GateSwi');
+
+var Task          = xdc.useModule('ti.sysbios.knl.Task');
+Task.common$.namedInstance = true;
+
+var Assert = xdc.useModule('xdc.runtime.Assert');
+var Defaults = xdc.useModule('xdc.runtime.Defaults');
+var Diags = xdc.useModule('xdc.runtime.Diags');
+var LoggerSys = xdc.useModule('xdc.runtime.LoggerSys');
+var LoggerSysParams = new LoggerSys.Params();
+
+/* Enable Logger: */
+Defaults.common$.logger = LoggerSys.create(LoggerSysParams);
+
+/* Enable runtime Diags_setMask() for non-XDC spec'd modules: */
+var Text = xdc.useModule('xdc.runtime.Text');
+Text.isLoaded = true;
+
+var Main = xdc.useModule('xdc.runtime.Main');
+Main.common$.diags_ASSERT = Diags.ALWAYS_ON;
+Main.common$.diags_INTERNAL = Diags.ALWAYS_ON;
+
+var Hwi = xdc.useModule('ti.sysbios.family.c64p.Hwi');
+Hwi.enableException = true;
+
+/* -------------------------------- DSP ----------------------------------*/
+var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
+MultiProc.setConfig("DSP1", ["HOST", "IPU2", "IPU1", "DSP2", "DSP1"]);
+
+/* --------------------------- TICK --------------------------------------*/
+var Clock = xdc.useModule('ti.sysbios.knl.Clock');
+Clock.tickSource = Clock.TickSource_NULL;
+
+//**************************************
+xdc.loadPackage('ti.ipc.mm');
+xdc.loadPackage('ti.ipc.ipcmgr');
+xdc.loadPackage('ti.srvmgr');
+xdc.loadPackage('ti.srvmgr.omaprpc');
+
+// Disabling default IpcCommon trace
+var Registry = xdc.useModule('xdc.runtime.Registry');
+var Diags = xdc.useModule('xdc.runtime.Diags');
+var Task = xdc.useModule('ti.sysbios.knl.Task');
+Task.common$.namedInstance = true;
+
+Registry.common$.diags_ENTRY = Diags.RUNTIME_OFF;
+Registry.common$.diags_EXIT = Diags.RUNTIME_OFF;
+Registry.common$.diags_USER1 = Diags.RUNTIME_OFF;
+Registry.common$.diags_INFO = Diags.RUNTIME_OFF;
+Registry.common$.diags_LIFECYCLE = Diags.ALWAYS_ON;
+Registry.common$.diags_STATUS = Diags.ALWAYS_ON;
+Diags.setMaskEnabled = true;
+
+var Memory                     = xdc.useModule('xdc.runtime.Memory');
+var HeapMem                    = xdc.useModule('ti.sysbios.heaps.HeapMem');
+var GateHwi                    = xdc.useModule('ti.sysbios.gates.GateHwi');
+HeapMem.common$.gate = GateHwi.create();
+
+
+var heapMemParams                      = new HeapMem.Params;
+heapMemParams.size                     = 0x2400000; // 36MB
+heapMemParams.sectionName      = ".systemHeap";
+var heap0                                      = HeapMem.create(heapMemParams);
+Memory.defaultHeapInstance     = heap0;
+Program.global.heap0           = heap0;
+
+/*
+ * Setup memory map.
+ */
+
+/* Mark heaps as NOINIT for optimizing boot-time */
+Program.sectMap[".systemHeap"] = new Program.SectionSpec();
+Program.sectMap[".systemHeap"].loadSegment = "EXT_HEAP";
+Program.sectMap[".systemHeap"].type = "NOINIT";
+Program.sectMap[".tracebuf"] = "TRACE_BUF";
+Program.sectMap[".errorbuf"] = "EXC_DATA";
+
+/* ----------------------------- VERSION CONFIGURATION ---------------------*/
+var commonBld = xdc.loadCapsule("build/common.bld");
+commonBld.GetVersionTag();
+
+/*
+ *  ======== CODEC ENGINE configurations  ========
+ */
+
+var Global = xdc.useModule('ti.sdo.ce.osal.Global');
+Global.runtimeEnv = Global.DSPBIOS;
+
+xdc.useModule('ti.sdo.ce.global.Settings').profile    = "debug";
+xdc.loadPackage('ti.sdo.ce.video').profile            = "debug";
+xdc.loadPackage('ti.sdo.ce.video3').profile           = "debug";
+xdc.loadPackage('ti.sdo.ce.alg').profile              = "debug";
+
+var HeapBufMP                  = xdc.useModule('ti.sdo.ipc.heaps.HeapBufMP');
+
+var ipcSettings = xdc.useModule('ti.sdo.ce.ipc.Settings');
+ipcSettings.ipc = xdc.useModule('ti.sdo.ce.ipc.bios.Ipc');
+// set to true to enable debugging of codec engine
+xdc.useModule('ti.sdo.ce.Settings').checked         = true;
+
+/* Enable Memory Translation module that operates on the BIOS Resource Table */
+var Resource = xdc.useModule('ti.ipc.remoteproc.Resource');
+Resource.customTable = true;
+
+// Load decoder/encoder APIs:
+var VIDDEC2 = xdc.useModule('ti.sdo.ce.video2.IVIDDEC2');
+var UNIVERSAL = xdc.useModule('ti.sdo.ce.universal.IUNIVERSAL');
+
+// load whatever codecs are available in the build
+var codecs = [];
+
+function loadCodec(pkg, name)
+{
+   try {
+               var codec = xdc.useModule(pkg);
+               print('loading: ' + name);
+               codecs.push({ name: name, mod: codec, local: true });
+       } catch(e) {
+               print('no package: ' + pkg);
+       }
+}
+
+loadCodec('ti.sdo.codecs.universal.ce.UNIVERSAL', 'dsp_universalCopy');
+
+var engine         = xdc.useModule('ti.sdo.ce.Engine');
+var myEngine       = engine.create("dsp_vidsvr", codecs);
+
+xdc.useModule('ti.sysbios.knl.Task');
+var Task = xdc.useModule('ti.sysbios.knl.Task');
+Task.defaultStackSize = 12 * 0x400;
+
+/* ----------------------------- Configure BIOS--------------------------------*/
+
+BIOS                = xdc.useModule('ti.sysbios.BIOS');
+BIOS.addUserStartupFunction('&IpcMgr_rpmsgStartup');
+
+BIOS.clockEnabled   = true;
+BIOS.libType = BIOS.LibType_Custom;
+BIOS.smpEnabled = false;
+
+
+var Timer = xdc.useModule('ti.sysbios.timers.dmtimer.Timer');
+/*
+BIOS assumes that default frequency is 38.4 MHz. On OMAP5, SYS_CLK is used to source
+Hence it is clocked at 19.2 MHz.
+
+Locally setting the BIOS configuration for GPT and CTM for OMAP5 till actual changes are
+present in omap54xx/ipu/Platform.xdc
+*/
+Timer.intFreq.hi = 0;
+Timer.intFreq.lo = 19200000;
+BIOS.cpuFreq.hi = 0;
+BIOS.cpuFreq.lo = 600000000;
+
+Program.sectMap[".plt"] = "EXT_DATA";
+
+
+/* IPC 3.x is no longer providing version capability. If needed, then IPC needs to implement it. */
+    /* Version module; this will produce a .version section with trees infos. Read
+     * with "readelf -p .version <base_image>" */
+//    xdc.useModule('ti.utils.Version');
+
index 0186203e3114b63ad10057d965862ae874332f2d..3694c3c3d78e6f8d7994de7ef65a91079004b9f2 100644 (file)
@@ -85,10 +85,11 @@ void tools_ShowVersion()
     System_printf("\n\n **** DSPMM VERSION INFO **** \n\nCompile DATE %s TIME %s \n", __DATE__, __TIME__);\r
 \r
     System_printf("\n** DSPMM VERSION INFO END ** \n");\r
-\r
+#if 0\r
     System_printf("Trace Buffer PA 0x%x Trace Level %d\\r
                    \nTrace Usage: level:[0-4: 0-no trace, 1-err, 2-debug, 3-info, 4-CE,FC,IPC traces] \n\n",\r
                   MEMUTILS_getPhysicalAddr((Ptr)(TRACEBUFADDR)), dce_debug);\r
+#endif\r
 }\r
 \r
 int main(int argc, char * *argv)\r
index 0b7093d102663f9b9c85b13e8dbd68329686a91d..875b33e37134bf69e5e7f538d4e6e11aade3ac60 100644 (file)
@@ -29,7 +29,7 @@
  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
  */\r
-  \r
+\r
 #include <stdlib.h>\r
 #include <stdint.h>\r
 #include <string.h>\r
@@ -101,13 +101,13 @@ static Int32 engine_close(UInt32 size, UInt32 *data);
 \r
 /* VIDDEC2 Decoder Server static function declarations */\r
 static VIDDEC2_Handle viddec2_create(Engine_Handle engine, String name, VIDDEC2_Params *params);\r
-static int viddec2_reloc(VIDDEC2_Handle handle, uint8_t *ptr, uint32_t len);                                    \r
-static int viddec2_control(VIDDEC2_Handle handle, VIDDEC2_Cmd id, VIDDEC2_DynamicParams *dynParams, \r
+static int viddec2_reloc(VIDDEC2_Handle handle, uint8_t *ptr, uint32_t len);\r
+static int viddec2_control(VIDDEC2_Handle handle, VIDDEC2_Cmd id, VIDDEC2_DynamicParams *dynParams,\r
                               VIDDEC2_Status *status );\r
 static int viddec2_process(VIDDEC2_Handle handle, XDM1_BufDesc *inBufs,\r
                          XDM_BufDesc *outBufs, VIDDEC2_InArgs *inArgs, VIDDEC2_OutArgs *outArgs );\r
-static int viddec2_delete(VIDDEC2_Handle handle);                                                       \r
-                                                \r
+static int viddec2_delete(VIDDEC2_Handle handle);\r
+\r
 static struct {\r
     CreateFxn  create;\r
     ControlFxn control;\r
@@ -124,7 +124,7 @@ static struct {
     },\r
 };\r
 \r
-\r
+#define UNIVERSAL_COPY_EXAMPLE\r
 /* Static version string buffer.\r
  * Note: codec version can be large. For example, h264vdec needs more than\r
  * 58 characters, or the query will fail. */\r
@@ -139,7 +139,7 @@ static char    version_buffer[VERSION_SIZE];
  * it gets populated in the future versions of framework components.\r
  *\r
  * Forced off mode during video decode/encode is not supported. */\r
-#if 0 \r
+#if 0\r
 static void dce_suspend()\r
 {\r
     INFO("Preparing for suspend...");\r
@@ -153,6 +153,7 @@ static void dce_resume()
 }\r
 #endif\r
 \r
+#ifdef UNIVERSAL_COPY_EXAMPLE\r
 static void get_universal_version(UNIVERSAL_Handle h, char *buffer, unsigned size)\r
 {\r
     UNIVERSAL_DynamicParams    params =\r
@@ -180,20 +181,59 @@ static void get_universal_version(UNIVERSAL_Handle h, char *buffer, unsigned siz
         ERROR("Unknown version Error = %d:: buffer = %p size = %d", s, buffer, size);\r
     }\r
 }\r
+#else\r
+static void get_viddec2_version(VIDDEC2_Handle h, char *buffer, unsigned size)\r
+{\r
+    VIDDEC2_DynamicParams    params =\r
+    {\r
+        .size = sizeof(VIDDEC2_DynamicParams),\r
+    };\r
+\r
+    VIDDEC2_Status    status =\r
+    {\r
+        .size = sizeof(VIDDEC2_Status),\r
+        .data =\r
+        {\r
+            .buf = (XDAS_Int8 *)buffer,\r
+            .bufSize = (XDAS_Int32)size,\r
+        },\r
+    };\r
+\r
+    XDAS_Int32    s;\r
+\r
+    memset(buffer, 0, size);\r
+    s = VIDDEC2_control(h, XDM_GETVERSION, &params, &status);\r
+\r
+    if( s != VIDDEC2_EOK ) {\r
+        ERROR("Unknown version Error = %d:: buffer = %p size = %d", s, buffer, size);\r
+    }\r
+}\r
+\r
+#endif\r
 \r
 // VIDDEC2_create wrapper, to display version string in the trace.\r
 static VIDDEC2_Handle viddec2_create(Engine_Handle engine, String name, VIDDEC2_Params *params)\r
 {\r
+#ifdef UNIVERSAL_COPY_EXAMPLE\r
     UNIVERSAL_Handle   h;\r
 \r
     DEBUG(">> engine=%08x, name=%s, params=%p", engine, name, params);\r
 \r
     h = UNIVERSAL_create(engine, name, (IUNIVERSAL_Params*)params);\r
-       \r
-       get_universal_version(h, version_buffer, VERSION_SIZE);\r
-       \r
-    INFO("Created codec %s: version %s", name, version_buffer);\r
-\r
+    if(h){\r
+       get_universal_version(h, version_buffer, VERSION_SIZE);\r
+        INFO("Created codec %s: version %s", name, version_buffer);\r
+      }\r
+#else\r
+    VIDDEC2_Handle    h;\r
+\r
+    h = VIDDEC2_create(engine, name, params);\r
+\r
+    if( h ) {\r
+        get_viddec2_version(h, version_buffer, VERSION_SIZE);\r
+        INFO("Created viddec2 %s: version %s", name, version_buffer);\r
+    }\r
+#endif\r
     return ((VIDDEC2_Handle)h);\r
 }\r
 \r
@@ -204,69 +244,74 @@ static int viddec2_reloc(VIDDEC2_Handle handle, uint8_t *ptr, uint32_t len)
 \r
 }\r
 \r
-static int viddec2_control(VIDDEC2_Handle handle, VIDDEC2_Cmd id, VIDDEC2_DynamicParams *dynParams, \r
+static int viddec2_control(VIDDEC2_Handle handle, VIDDEC2_Cmd id, VIDDEC2_DynamicParams *dynParams,\r
                               VIDDEC2_Status *status )\r
 {\r
    int ret = 0;\r
+#ifdef UNIVERSAL_COPY_EXAMPLE\r
    UNIVERSAL_DynamicParams udynParam;\r
    UNIVERSAL_Status ustatus;\r
-   \r
+\r
    udynParam.size = sizeof(UNIVERSAL_DynamicParams);\r
    ustatus.size = sizeof(UNIVERSAL_Status);\r
-   //System_printf("command id is %d\n", id);\r
 \r
    if(id == XDM_GETVERSION){\r
        ustatus.data.numBufs = 1;\r
           ustatus.data.descs[0].buf = status->data.buf;\r
           ustatus.data.descs[0].bufSize = status->data.bufSize;\r
      }\r
-  \r
-   ret = UNIVERSAL_control((UNIVERSAL_Handle)handle, (UNIVERSAL_Cmd)id, \r
+\r
+   ret = UNIVERSAL_control((UNIVERSAL_Handle)handle, (UNIVERSAL_Cmd)id,\r
                               &udynParam, &ustatus);\r
 \r
    /*universal copy supports only XDM_GETVERSION cmd id    */\r
-   /*This is to return success to VIDDEC2 application in case of other cmd ids */   \r
+   /*This is to return success to VIDDEC2 application in case of other cmd ids */\r
    if(ret == IUNIVERSAL_EFAIL)ret = IUNIVERSAL_EOK;\r
-   \r
+#else\r
+   ret = VIDDEC2_control(handle, id, dynParams, status);\r
+#endif\r
    return ret;\r
 }\r
 \r
 static int viddec2_process(VIDDEC2_Handle handle, XDM1_BufDesc *inBufs,\r
                          XDM_BufDesc *outBufs, VIDDEC2_InArgs *inArgs, VIDDEC2_OutArgs *outArgs )\r
-{    \r
+{\r
      int ret = 0;\r
+#ifdef UNIVERSAL_COPY_EXAMPLE\r
         XDM1_BufDesc inBuf, outBuf;\r
         UNIVERSAL_InArgs inArg;\r
         UNIVERSAL_OutArgs outArg;\r
-     \r
+\r
      inArg.size = sizeof(UNIVERSAL_InArgs);\r
-     outArg.size = sizeof(UNIVERSAL_OutArgs);  \r
+     outArg.size = sizeof(UNIVERSAL_OutArgs);\r
      outArg.extendedError = 0;\r
-        //System_printf("Before VIDDEC2 process\n");\r
-        \r
-        //System_printf("outptr = 0x%x, size = %d\n",outBufs->bufs[0],outBufs->bufSizes[0]);\r
+\r
         inBuf.numBufs = 1;\r
         outBuf.numBufs = 1;\r
         inBuf.descs[0].buf = inBufs->descs[0].buf;\r
         inBuf.descs[0].bufSize = inBufs->descs[0].bufSize;\r
-                \r
+\r
         outBuf.descs[0].buf = outBufs->bufs[0];\r
         outBuf.descs[0].bufSize = outBufs->bufSizes[0];\r
-                  \r
-     ret = UNIVERSAL_process((UNIVERSAL_Handle)handle, &inBuf, &outBuf, NULL, \r
-                               &inArg, &outArg);\r
 \r
-        //System_printf("After VIDDEC2 process\n");\r
-        return ret;                                     \r
+     ret = UNIVERSAL_process((UNIVERSAL_Handle)handle, &inBuf, &outBuf, NULL,\r
+                               &inArg, &outArg);\r
+#else\r
+    ret = VIDDEC2_process(handle, inBufs, outBufs, inArgs, outArgs);\r
+#endif\r
+         return ret;\r
 }\r
 \r
 static int viddec2_delete(VIDDEC2_Handle handle)\r
 {\r
-   //System_printf("Deleting VIDDEC2\n"); \r
+#ifdef UNIVERSAL_COPY_EXAMPLE\r
    UNIVERSAL_delete((UNIVERSAL_Handle)handle);\r
+#else\r
+   VIDDEC2_delete(handle);\r
+#endif\r
    return 0;\r
 }\r
-                                                 \r
+\r
 \r
 /*\r
  * RPC message handlers\r
@@ -281,10 +326,10 @@ static int connect(void *msg)
 \r
         FCSettings_init();\r
         Diags_setMask(FCSETTINGS_MODNAME "+12345678LEXAIZFS");\r
-                               \r
+\r
                CESettings_init();\r
         Diags_setMask(CESETTINGS_MODNAME "+12345678LEXAIZFS");\r
-                                       \r
+\r
         /*\r
             * Enable use of runtime Diags_setMask per module:\r
             *\r
@@ -293,7 +338,7 @@ static int connect(void *msg)
         Diags_setMask("ti.ipc.rpmsg.RPMessage=EXLFS");\r
         Diags_setMask("ti.ipc.rpmsg.VirtQueue=EXLFS");\r
     }\r
-       \r
+\r
          CERuntime_init();\r
 \r
       if( !suspend_initialised ) {\r
@@ -318,7 +363,7 @@ static Int32 engine_open(UInt32 size, UInt32 *data)
     dce_engine_open   *engine_open_msg = (dce_engine_open *)payload[0].data;\r
     Engine_Handle      eng_handle = NULL;\r
     Uint32             num_params = MmRpc_NUM_PARAMETERS(size);\r
-    \r
+\r
     DEBUG(">> engine_open");\r
     if( num_params != 1 ) {\r
         ERROR("Invalid number of params sent");\r
@@ -326,10 +371,10 @@ static Int32 engine_open(UInt32 size, UInt32 *data)
     }\r
 \r
     dce_inv(engine_open_msg);\r
-    \r
+\r
        eng_handle = Engine_open(engine_open_msg->name, engine_open_msg->engine_attrs, &engine_open_msg->error_code);\r
        DEBUG("<< engine=%08x, ec=%d", eng_handle, engine_open_msg->error_code);\r
-    \r
+\r
     dce_clean(engine_open_msg);\r
 \r
     return ((Int32)eng_handle);\r
@@ -377,7 +422,7 @@ static Int32 codec_create(UInt32 size, UInt32 *data)
         ERROR("invalid number of params sent");\r
         return (-1);\r
     }\r
-       \r
+\r
        if(codec_id != OMAP_DCE_VIDDEC2){\r
         ERROR("invalid codec id sent");\r
         return (-1);\r
@@ -386,7 +431,7 @@ static Int32 codec_create(UInt32 size, UInt32 *data)
     dce_inv(static_params);\r
 \r
     codec_handle = (void *)codec_fxns[codec_id].create(engine, codec_name, static_params);\r
-  \r
+\r
     DEBUG("<< codec_handle=%08x", codec_handle);\r
 \r
     dce_clean(static_params);\r
@@ -420,7 +465,7 @@ static int codec_control(UInt32 size, UInt32 *data)
         ERROR("invalid number of params sent");\r
         return (-1);\r
     }\r
-       \r
+\r
        if(codec_id != OMAP_DCE_VIDDEC2){\r
         ERROR("invalid codec id sent");\r
         return (-1);\r
@@ -430,7 +475,7 @@ static int codec_control(UInt32 size, UInt32 *data)
     dce_inv(status);\r
 \r
     ret = (uint32_t) codec_fxns[codec_id].control(codec_handle, cmd_id, dyn_params, status);\r
\r
+\r
     DEBUG("<< result=%d", ret);\r
 \r
     dce_clean(dyn_params);\r
@@ -459,18 +504,18 @@ static int codec_get_version(UInt32 size, UInt32 *data)
         ERROR("invalid number of params sent");\r
         return (-1);\r
     }\r
-       \r
+\r
        if(codec_id != OMAP_DCE_VIDDEC2){\r
         ERROR("invalid codec id sent");\r
         return (-1);\r
     }\r
-               \r
+\r
     version_buf = (void *)(H2P((MemHeader *)((IVIDDEC2_Status *)status)->data.buf));\r
-    \r
+\r
     dce_inv(dyn_params);\r
     dce_inv(status);\r
     dce_inv(version_buf);\r
-  \r
+\r
     ret = (uint32_t) codec_fxns[codec_id].control(codec_handle, XDM_GETVERSION, dyn_params, status);\r
 \r
     DEBUG("<< result=%d", ret);\r
@@ -562,7 +607,7 @@ static int codec_process(UInt32 size, UInt32 *data)
        void           *outBufptr  = (void *)payload[6].data;\r
     Int32           ret = 0;\r
     void           *outBufSize = NULL;\r
-       \r
+\r
     DEBUG(">> codec_process");\r
 \r
     if( num_params != 7 ) {\r
@@ -574,7 +619,7 @@ static int codec_process(UInt32 size, UInt32 *data)
         ERROR("invalid codec id sent");\r
         return (-1);\r
     }\r
-               \r
+\r
        outBufSize = (void *)(H2P((MemHeader *)((XDM_BufDesc *)outBufs)->bufSizes));\r
 \r
     dce_inv(inBufs);\r
@@ -583,12 +628,12 @@ static int codec_process(UInt32 size, UInt32 *data)
     dce_inv(outArgs);\r
        dce_inv(outBufptr);\r
     dce_inv(outBufSize);\r
-        \r
+\r
     DEBUG(">> codec=%p, inBufs=%p, outBufs=%p, inArgs=%p, outArgs=%p codec_id=%d",\r
           codec, inBufs, outBufs, inArgs, outArgs, codec_id);\r
 \r
     ret = codec_fxns[codec_id].process((void *)codec, inBufs, outBufs, inArgs, outArgs);\r
-         \r
+\r
 \r
     DEBUG("<< ret=%d extendedError=%08x", ret, ((VIDDEC3_OutArgs *)outArgs)->extendedError);\r
 \r
@@ -623,7 +668,7 @@ static int codec_delete(UInt32 size, UInt32 *data)
         ERROR("invalid number of params sent");\r
         return (-1);\r
     }\r
-       \r
+\r
        if(codec_id != OMAP_DCE_VIDDEC2){\r
         ERROR("invalid codec id sent");\r
         return (-1);\r
@@ -739,7 +784,7 @@ static void dce_main(uint32_t arg0, uint32_t arg1)
 {\r
     int            err = 0;\r
     dce_connect    dce_connect_msg;\r
-    \r
+\r
     err = MmServiceMgr_init();  // MmServiceMgr_init() will always return MmServiceMgr_S_SUCCESS.\r
 \r
     // setup the RCM Server create params\r
@@ -751,7 +796,7 @@ static void dce_main(uint32_t arg0, uint32_t arg1)
 \r
     // Get the Service Manager handle\r
     err = MmServiceMgr_register(SERVER_NAME, &rpc_Params, &dce_fxnSigTab, dce_SrvDelNotification);\r
-       \r
+\r
     if( err < 0 ) {\r
         DEBUG("failed to start " SERVER_NAME " \n");\r
                //err = -1;\r
@@ -796,7 +841,7 @@ Bool dce_init(void)
     params.instance->name = "dce-server";\r
     params.priority = Thread_Priority_ABOVE_NORMAL;\r
        Task_create(dce_main, &params, NULL);\r
-    \r
+\r
     return (TRUE);\r
 }\r
 \r