aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/ti
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2009-08-26 11:35:14 +0200
committerKoen Kooi <koen@openembedded.org>2009-08-26 11:35:14 +0200
commit172cb63ce5e91d489993590ec09e418aba019b4e (patch)
treee10d322895620ec0c96c2ab0efcd296bfc93b6b9 /recipes/ti
parentbac5eef9c8a73672ee114926011addabb36610eb (diff)
downloadopenembedded-172cb63ce5e91d489993590ec09e418aba019b4e.tar.gz
dvsdk: rename to ti now that other things like bitblit live in that dir now
Diffstat (limited to 'recipes/ti')
-rw-r--r--recipes/ti/README30
-rw-r--r--recipes/ti/dsplink.inc112
-rwxr-xr-xrecipes/ti/files/Makefile-dsplink-dsp59
-rwxr-xr-xrecipes/ti/files/Makefile-dsplink-gpp120
-rw-r--r--recipes/ti/files/cmem-class-device-27-and-sched-include-fix.patch23
-rw-r--r--recipes/ti/files/cmem-remove-show-pte-function.patch56
-rw-r--r--recipes/ti/files/config.bld48
-rw-r--r--recipes/ti/files/dm355mm_1_30.patch498
-rw-r--r--recipes/ti/files/dmai-built-with-angstrom.patch48
-rw-r--r--recipes/ti/files/dmai-do-not-panic-on-mixer-failure.patch31
-rw-r--r--recipes/ti/files/dmai-support-32bit-align.patch17
-rw-r--r--recipes/ti/files/dmai-update-cpu-name.patch16
-rw-r--r--recipes/ti/files/dmai-update-fb-display.patch77
-rw-r--r--recipes/ti/files/dmai-update-v4l2-display.patch127
-rw-r--r--recipes/ti/files/dsplink-128M.patch104
-rw-r--r--recipes/ti/files/dsplink-add-class-device-create-support.patch55
-rw-r--r--recipes/ti/files/dsplink-semaphore-27.patch36
-rw-r--r--recipes/ti/files/dvsdk-rules/Makefile284
-rwxr-xr-xrecipes/ti/files/dvsdk-rules/check.sh16
-rwxr-xr-xrecipes/ti/files/dvsdk-rules/info.sh58
-rw-r--r--recipes/ti/files/gstreamer-ti-tracker-824.patch125
-rw-r--r--recipes/ti/files/loadmodules-ti-codec-engine-apps.sh37
-rwxr-xr-xrecipes/ti/files/loadmodules-ti-dmai-apps.sh37
-rwxr-xr-xrecipes/ti/files/loadmodules-ti-dmai-dm355_al.sh23
-rwxr-xr-xrecipes/ti/files/loadmodules-ti-dmai-dm6446_al.sh19
-rwxr-xr-xrecipes/ti/files/loadmodules-ti-dmai-o3530_al.sh42
-rw-r--r--recipes/ti/files/loadmodules-ti-dsplink-apps.sh25
-rw-r--r--recipes/ti/files/lpm-device-create-and-semaphore-include-fix.patch121
-rw-r--r--recipes/ti/files/lpm-make-symbol-warnings-fix.patch117
-rwxr-xr-xrecipes/ti/files/mapdmaqbin0 -> 7680 bytes
-rw-r--r--recipes/ti/files/sdma-class-device-and-includes-fix.patch59
-rw-r--r--recipes/ti/files/unloadmodules-ti-codec-engine-apps.sh12
-rwxr-xr-xrecipes/ti/files/unloadmodules-ti-dmai-apps.sh12
-rw-r--r--recipes/ti/files/unloadmodules-ti-dsplink-apps.sh5
-rw-r--r--recipes/ti/gstreamer-ti/codec_combo_directory_fix.patch52
-rw-r--r--recipes/ti/gstreamer-ti/gst-buffsize.diff113
-rw-r--r--recipes/ti/gstreamer-ti_svn.bb66
-rw-r--r--recipes/ti/ti-cgt6x-native_6.0.21.bb22
-rw-r--r--recipes/ti/ti-cgt6x-native_6.1.9.bb22
-rw-r--r--recipes/ti/ti-cgt6x.inc42
-rw-r--r--recipes/ti/ti-cmem-module_2.23.1.bb68
-rw-r--r--recipes/ti/ti-cmem-module_2.23.bb51
-rw-r--r--recipes/ti/ti-codec-combo-dm355.inc38
-rw-r--r--recipes/ti/ti-codec-combo-dm355_1.13.bb28
-rw-r--r--recipes/ti/ti-codec-combo-dm6446.inc39
-rw-r--r--recipes/ti/ti-codec-combo-dm6446_2.05.bb40
-rw-r--r--recipes/ti/ti-codec-combo-omap3530.inc46
-rw-r--r--recipes/ti/ti-codec-combo-omap3530_3.16.1.bb51
-rw-r--r--recipes/ti/ti-codec-combo-omapl137_1.0.bb23
-rw-r--r--recipes/ti/ti-codec-combos_3.16.bb90
-rw-r--r--recipes/ti/ti-codec-engine_2.21.bb278
-rw-r--r--recipes/ti/ti-codec-engine_2.23.1.bb32
-rw-r--r--recipes/ti/ti-codec-engine_2.24.01.bb94
-rw-r--r--recipes/ti/ti-cs1-omap3530.inc41
-rw-r--r--recipes/ti/ti-cs1-omap3530_1.0.1.bb53
-rw-r--r--recipes/ti/ti-dm355mm-module_1.13.bb57
-rw-r--r--recipes/ti/ti-dmai.inc16
-rw-r--r--recipes/ti/ti-dmai_svn.bb106
-rw-r--r--recipes/ti/ti-dspbios-native_5.33.02.bb21
-rw-r--r--recipes/ti/ti-dspbios-native_5.33.04.bb22
-rw-r--r--recipes/ti/ti-dspbios.inc40
-rw-r--r--recipes/ti/ti-dsplink-module_1.61.3.bb168
-rw-r--r--recipes/ti/ti-lpm-module_2.23.1.bb65
-rw-r--r--recipes/ti/ti-paths.inc80
-rw-r--r--recipes/ti/ti-sdma-module_2.23.1.bb56
-rw-r--r--recipes/ti/ti-xdctools-native_3.10.03.bb21
-rw-r--r--recipes/ti/ti-xdctools-native_3.15.01.59.bb22
-rw-r--r--recipes/ti/ti-xdctools.inc40
68 files changed, 4452 insertions, 0 deletions
diff --git a/recipes/ti/README b/recipes/ti/README
new file mode 100644
index 0000000000..fa1b481f68
--- /dev/null
+++ b/recipes/ti/README
@@ -0,0 +1,30 @@
+Depending on platform you need to download one or more components from the external URL and put in downloads directory.
+
+DM355
+-----
+ - Code Engine 2.24
+
+OMAP3530/DM6446
+------
+ - Code Engine 2.24
+ - DSP/BIOS Link for Linux 1.61.03
+ - DSP/BIOS 5.33.04
+ - C6000 Code Generation Tools v6.1.9 Linux
+
+URL's:
+------
+* CE 2.24 (codec_engine_2_24.tar.gz)
+ http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_sb/targetcontent/CE/ce_2_24/index.html
+
+* DSP/BIOS 5.33.04 (bios_setuplinux_5_33_04.bin)
+ http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_sb/targetcontent/bios/bios_5_33/bios_5_33_04/index_external.html
+
+* DSP/BIOS Link for Linux 1.61.03 (dsplink_1_61_03.tar.gz)
+ http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_sb/targetcontent/link/link_1_60/index.html
+
+* C6000 Code Generation Tools v6.1.9 Linux (ti_cgt_c6000_6.1.9_setup_linux_x86.bin)
+ https://www-a.ti.com/downloads/sds_support/TICodegenerationTools/download.htm
+
+* Generic download URI
+ http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_sb/targetcontent/
+
diff --git a/recipes/ti/dsplink.inc b/recipes/ti/dsplink.inc
new file mode 100644
index 0000000000..1ca01c399c
--- /dev/null
+++ b/recipes/ti/dsplink.inc
@@ -0,0 +1,112 @@
+DESCRIPTION = "DSP Link for TI ARM/DSP processors"
+
+DEPENDS = "virtual/kernel perl-native"
+
+inherit module
+
+do_configure () {
+ # Clean up stale binaries
+ find ${S} -name "*.ko" -exec rm {} \; || true
+ find ${S} -name "*.o" -exec rm {} \; || true
+
+ # Run perl script to create appropriate makefiles (v1.60 and up)
+ (
+ cd ${DSPLINK}
+ perl config/bin/dsplinkcfg.pl --platform=${DSPLINKPLATFORM} --nodsp=1 --dspcfg_0=${DSPCFG} --dspos_0=DSPBIOS5XX --gppos=${GPPOS} --comps=ponslrm
+ )
+}
+
+do_compile () {
+ unset DISPLAY
+ sed -i -e s:armv7a:armv7-a:g ${DSPLINK}/make/Linux/omap3530_2.6.mk
+
+ # export various settings to override the defaults in the makefiles
+ export DSP_BASE_CGTOOLS=${TITOOLSDIR}/${TICGTOOLSDIR}
+ export DSP_BASE_BIOS=${TITOOLSDIR}/${TIBIOSDIR}
+ export DSP_BASE_RTDX=${TITOOLSDIR}/${TIBIOSDIR}/packages/ti/rtdx
+ export GPPTOOL_DIR=${CROSS_DIR}
+ export LINUXKERNEL_INSTALL_DIR=${STAGING_KERNEL_DIR}
+ export LINK_INSTALL_DIR=${DSPLINK}
+ export VARIANT=${DSPLINKSOC}
+ export PLATFORM=${DSPLINKPLATFORM}
+ export BASE_TOOLCHAIN=${CROSS_DIR}
+ export BASE_CGTOOLS=${BASE_TOOLCHAIN}/bin
+ # 'OSINC_PLATFORM' is used in both the dsp and gpp sides...
+ export OSINC_PLATFORM1=${CROSS_DIR}/lib/gcc/${TARGET_SYS}/$(${TARGET_PREFIX}gcc -dumpversion)/include
+ export OSINC_TARGET=${BASE_TOOLCHAIN}/target/usr/include
+
+ # 'ARCHIVER' is being used in the dsp side of the build as well as gpp
+ export ARCHIVER_AR=${TARGET_PREFIX}ar
+ export BASE_SABIOS=${DSP_BASE_BIOS}
+
+ #dsplinkk.ko bits
+ if [ ! -d ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE ] ; then
+ install -d ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE
+ fi
+
+ cp ${WORKDIR}/Makefile-dsplink-gpp ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE/Makefile
+ cd ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE/
+
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+ export KDIR=${STAGING_KERNEL_DIR}
+
+ make -e driver
+ make -e library
+ make -e samples
+
+ make -e -f ${WORKDIR}/Makefile-dsplink-dsp
+ cp -a * ${DSPLINK}/gpp/export/BIN/Linux/${DSPLINKPLATFORM}/RELEASE
+}
+
+do_install () {
+ #driver - kernel module
+ install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp
+ cp ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE/dsplinkk.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/
+
+ #library
+ install -d ${D}/${libdir}
+ install -m 0755 ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE/dsplink.lib ${D}/${libdir}
+
+ #sample apps
+ install -d ${D}/${datadir}/ti-dsplink
+ install ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE/*gpp ${D}/${datadir}/ti-dsplink || true
+ for i in $(find ${DSPLINK}/dsp/BUILD/ -name "*.out") ; do
+ install ${i} ${D}/${datadir}/ti-dsplink
+ done
+}
+
+# Codec Engine and friends need a complete tree, so stage it all
+do_stage() {
+ install -d ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/${PN}
+ cp -pPrf ${S}/* ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/${PN}/
+}
+
+PACKAGES =+ "ti-dsplink-module ti-dsplink-apps"
+FILES_ti-dsplink-module = "/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/dsplinkk.ko"
+FILES_ti-dsplink-apps = "${datadir}/ti-dsplink/* ${libdir}/dsplink.lib"
+
+pkg_postinst_ti-dsplink-module () {
+ if [ -n "$D" ]; then
+ exit 1
+ fi
+ depmod -a
+ update-modules || true
+}
+
+pkg_postrm_ti-dsplink-module () {
+ update-modules || true
+}
+
+INHIBIT_PACKAGE_STRIP = "1"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+#legacy upgrade helpers
+RPROVIDES_ti-dsplink-module += "dsplink-module"
+RREPLACES_ti-dsplink-module += "dsplink-module"
+RPROVIDES_ti-dsplink-apps += "dsplink-apps"
+RREPLACES_ti_dsplink-apps += "dsplink-apps"
+
+#add run-time dependencies - note for kernel module we can only use RRECOMMENDS, since modules might be built into the kernel
+RRECOMMENDS_ti-dsplink-apps += "ti-dsplink-module"
+
diff --git a/recipes/ti/files/Makefile-dsplink-dsp b/recipes/ti/files/Makefile-dsplink-dsp
new file mode 100755
index 0000000000..0861f1ee21
--- /dev/null
+++ b/recipes/ti/files/Makefile-dsplink-dsp
@@ -0,0 +1,59 @@
+#
+# ======== makeunix ========
+#
+
+# Import Tools Path from Rules.make
+#include Rules.make
+
+PROJECT_BASE_DIR = $(shell pwd)
+LINUXKERNEL_INSTALL_DIR:=some-path/kernel
+LINK_INSTALL_DIR := some-path/dsplink_1_51/dsplink
+
+# The prefix to be added before the GNU compiler tools (optionally including
+# path), i.e. "arm_v5t_le-" or "/opt/bin/arm_v5t_le-".
+GPPTOOL_DIR:=some-path/cross
+
+# ---- DSP tools ----
+DSP_BASE_CGTOOLS := some-path/cg6x_6_0_19
+DSP_BASE_BIOS := some-path/bios_5_32_03
+DSP_BASE_RTDX := some-path/bios_5_32_03/packages/ti/rtdx
+OSINC_PLATFORM1 := something
+ARCHIVER_AR := something
+
+
+# ---- construct Link build make vars ----
+GPP_MAKE_OPTS := COMPILER=$(GPPTOOL_DIR)/bin/arm-angstrom-linux-gnueabi-gcc \
+ LINKER=$(GPPTOOL_DIR)/bin/arm-angstrom-linux-gnueabi-gcc \
+ LD=$(GPPTOOL_DIR)/bin/arm-angstrom-linux-gnueabi-ld \
+ ARCHIVER1=$(GPPTOOL_DIR)/bin/arm-angstrom-linux-gnueabi-ld \
+ ARCHIVER2=$(GPPTOOL_DIR)/bin/arm-angstrom-linux-gnueabi-ld \
+ CROSS_COMPILE=arm-angstrom-linux-gnueabi- \
+ DSPLINK=$(LINK_INSTALL_DIR) \
+ BASE_TOOLCHAIN=$(GPPTOOL_DIR) \
+ BASE_BUILDOS=$(LINUXKERNEL_INSTALL_DIR) \
+ ARCHIVER=$(ARCHIVER_AR) OSINC_PLATFORM=$(OSINC_PLATFORM1) \
+
+DSP_MAKE_OPTS := DSPLINK=$(DSPLINK) \
+ DPPROOT=$(DSPLINK)/dsp \
+ BASE_SABIOS=$(DSP_BASE_BIOS) \
+ BASE_CGTOOLS=$(DSP_BASE_CGTOOLS) \
+ BASE_RTDX=$(DSP_BASE_RTDX)
+
+
+# ======== all ========
+all: $(LINK_INSTALL_DIR)/packages/dsplink/gpp/export/BIN/Linux/Davinci/RELEASE/dsplinkk.ko
+
+$(LINK_INSTALL_DIR)/packages/dsplink/gpp/export/BIN/Linux/Davinci/RELEASE/dsplinkk.ko:
+ #@echo Building DSPLINK GPP driver, libs
+ #make -s -C $(LINK_INSTALL_DIR)/gpp/src $(GPP_MAKE_OPTS)
+ #make -s -C $(DSPLINK)/gpp/src/samples $(GPP_MAKE_OPTS)
+ @echo Building DSPLINK DSP libs and message sample for DaVinci...
+ make -C $(DSPLINK)/dsp/src $(DSP_MAKE_OPTS)
+ make -C $(DSPLINK)/dsp/src/samples $(DSP_MAKE_OPTS)
+
+# clean rules
+clean:
+ @echo Cleaning DSPLINK GPP driver, libs
+ make -s -C $(LINK_INSTALL_DIR)/gpp/src $(GPP_MAKE_OPTS) clean
+ @rm -rf $(LINK_INSTALL_DIR)/gpp/export/BIN/*
+ @rm -rf $(LINK_INSTALL_DIR)/gpp/export/INCLUDE/*
diff --git a/recipes/ti/files/Makefile-dsplink-gpp b/recipes/ti/files/Makefile-dsplink-gpp
new file mode 100755
index 0000000000..d9f2f6209a
--- /dev/null
+++ b/recipes/ti/files/Makefile-dsplink-gpp
@@ -0,0 +1,120 @@
+# Composite Makefile
+DIRSEP=/
+
+TI_DSPLINK_RELATIVE_PATH :=../../../../
+
+# include the CURRENTCFG.mk
+include $(DSPLINK)$(DIRSEP)config$(DIRSEP)BUILD$(DIRSEP)CURRENTCFG.MK
+
+# Generate the list of sources
+SOURCES :=
+include $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)arch$(DIRSEP)SOURCES
+ARCH_SOURCES := $(addprefix $(TI_DSPLINK_RELATIVE_PATH)gpp$(DIRSEP)src$(DIRSEP)arch$(DIRSEP),$(SOURCES))
+SOURCES :=
+include $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)ldrv$(DIRSEP)SOURCES
+LDRV_SOURCES := $(addprefix $(TI_DSPLINK_RELATIVE_PATH)gpp$(DIRSEP)src$(DIRSEP)ldrv$(DIRSEP),$(SOURCES))
+SOURCES :=
+include $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)ldrv$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP)SOURCES
+LDRV_SOURCES += $(addprefix $(TI_DSPLINK_RELATIVE_PATH)gpp$(DIRSEP)src$(DIRSEP)ldrv$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP),$(SOURCES))
+SOURCES :=
+include $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)gen$(DIRSEP)SOURCES
+GEN_SOURCES := $(addprefix $(TI_DSPLINK_RELATIVE_PATH)gpp$(DIRSEP)src$(DIRSEP)gen$(DIRSEP),$(SOURCES))
+SOURCES :=
+include $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)pmgr$(DIRSEP)SOURCES
+PMGR_SOURCES := $(addprefix $(TI_DSPLINK_RELATIVE_PATH)gpp$(DIRSEP)src$(DIRSEP)pmgr$(DIRSEP),$(SOURCES))
+SOURCES :=
+include $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)pmgr$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP)SOURCES
+PMGR_SOURCES += $(addpreifx $(TI_DSPLINK_RELATIVE_PATH)gpp$(DIRSEP)src$(DIRSEP)pmgr$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP),$(SOURCES))
+SOURCES :=
+include $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)pmgr$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP)$(TI_DSPLINK_GPPOSVERSION)$(DIRSEP)SOURCES
+PMGR_SOURCES += $(addprefix $(TI_DSPLINK_RELATIVE_PATH)gpp$(DIRSEP)src$(DIRSEP)pmgr$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP)$(TI_DSPLINK_GPPOSVERSION)$(DIRSEP),$(SOURCES))
+SOURCES :=
+include $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)osal$(DIRSEP)SOURCES
+OSAL_SOURCES := $(addprefix $(TI_DSPLINK_RELATIVE_PATH)gpp$(DIRSEP)src$(DIRSEP)osal$(DIRSEP)$(DIRSEP),$(SOURCES))
+SOURCES :=
+include $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)osal$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP)SOURCES
+OSAL_SOURCES += $(addprefix $(TI_DSPLINK_RELATIVE_PATH)gpp$(DIRSEP)src$(DIRSEP)osal$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP),$(SOURCES))
+SOURCES :=
+include $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)osal$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP)$(TI_DSPLINK_GPPOSVERSION)$(DIRSEP)SOURCES
+OSAL_SOURCES += $(addprefix $(TI_DSPLINK_RELATIVE_PATH)gpp$(DIRSEP)src$(DIRSEP)osal$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP)$(TI_DSPLINK_GPPOSVERSION)$(DIRSEP),$(SOURCES))
+
+DSPLINK_SOURCES := $(ARCH_SOURCES) $(LDRV_SOURCES) $(GEN_SOURCES) $(OSAL_SOURCES) $(PMGR_SOURCES)
+DSPLINK_OBJS := $(foreach srcFile, $(DSPLINK_SOURCES),$(basename $(srcFile)).o)
+
+# EXTRA_CFLAGS
+EXTRA_CFLAGS += $(addprefix -D, $(TI_DSPLINK_GPP_DEFINES))
+EXTRA_CFLAGS += $(addprefix -I, $(TI_DSPLINK_GPP_INC_PATH))
+EXTRA_CFLAGS += -DEXPORT_SYMTAB
+EXTRA_CFLAGS += -DTRACE_KERNEL
+
+ifneq ($(KERNELRELEASE),)
+obj-m := dsplinkk.o
+dsplinkk-objs := $(DSPLINK_OBJS)
+else
+KDIR := /path/to/kernel/
+PWD := $(shell pwd)
+driver:
+ $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
+endif
+
+clean:
+ @echo DSPLINK - cleaning driver, library and samples
+ find $(DSPLINK) -name "*.o" -exec rm {} \;
+ rm -fr dsplinkk.ko dsplinkk.mod.c Module.symvers *gpp *.a *.lib
+
+################################################################################################
+# USER SIDE
+BUILD_CONFIG := ..$(DIRSEP)..$(DIRSEP)..$(DIRSEP)config$(DIRSEP)BUILD
+# Generate the list of sources
+SOURCES :=
+include $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)api$(DIRSEP)SOURCES
+API_SOURCES := $(addprefix $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)api$(DIRSEP),$(SOURCES))
+SOURCES :=
+include $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)api$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP)SOURCES
+API_SOURCES += $(addprefix $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)api$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP),$(SOURCES))
+
+# Update the CFLAG
+#CC = arm-none-linux-gnueabi-gcc
+#AR = arm-none-linux-gnueabi-ar
+#LD = arm-none-linux-gnueabi-ld
+ARFLAGS = -rs
+LDFLAGS = -r
+EXTRA_CFLAGS += $(addprefix -D, $(TI_DSPLINK_GPP_DEFINES)) $(addprefix -I, $(TI_DSPLINK_GPP_INC_PATH))
+
+define CONFIG_template
+$(shell cp $(DSPLINK)$(DIRSEP)config$(DIRSEP)all$(DIRSEP)$(1) $(DSPLINK)$(DIRSEP)config$(DIRSEP)BUILD$(DIRSEP))
+endef
+
+define PROGRAM_template
+$(basename $(1)).o: $(1)
+ $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $(1) -o $(basename $(1)).o
+endef
+$(foreach prog,$(API_SOURCES),$(eval $(call PROGRAM_template,$(prog))))
+$(foreach prog,$(CONFIG),$(eval $(call CONFIG_template,$(prog))))
+
+DSPLINK_API_OBJS := $(foreach srcFile, $(API_SOURCES),$(basename $(srcFile)).o)
+
+library: $(DSPLINK_API_OBJS)
+ @echo DSPLINK - building user library - dsplink.lib
+ $(LD) $(LDFLAGS) -o dsplink.lib $(DSPLINK_API_OBJS)
+ $(AR) $(ARFLAGS) dsplink.a $(DSPLINK_API_OBJS)
+
+
+######################################### SAMPLES ###################################
+SOURCES :=
+define SAMPLES_template
+ifneq ($(1),message_multi)
+$(1): $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)samples$(DIRSEP)$(1)$(DIRSEP)$(1).c $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)samples$(DIRSEP)$(1)$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP)$(1)_os.c
+ $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -I$(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)samples$(DIRSEP)$(1) -I$(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)samples$(DIRSEP)$(1)$(DIRSEP)$(TI_DSPLINK_GPPOS) -o $(1)gpp $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)samples$(DIRSEP)$(1)$(DIRSEP)$(1).c $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)samples$(DIRSEP)$(1)$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP)$(1)_os.c $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)samples$(DIRSEP)$(1)$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP)main.c dsplink.lib -lpthread
+else
+$(1): $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)samples$(DIRSEP)$(1)$(DIRSEP)message.c $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)samples$(DIRSEP)$(1)$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP)message_os.c
+ $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -I$(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)samples$(DIRSEP)$(1) -I$(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)samples$(DIRSEP)$(1)$(DIRSEP)$(TI_DSPLINK_GPPOS) -o $(1)gpp $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)samples$(DIRSEP)$(1)$(DIRSEP)message.c $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)samples$(DIRSEP)$(1)$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP)message_os.c $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)samples$(DIRSEP)$(1)$(DIRSEP)$(TI_DSPLINK_GPPOS)$(DIRSEP)main.c dsplink.lib -lpthread
+endif
+endef
+
+include $(TI_DSPLINK_GPPROOT)$(DIRSEP)src$(DIRSEP)samples$(DIRSEP)DIRS
+$(foreach prog,$(DIRS),$(eval $(call SAMPLES_template,$(prog))))
+
+samples: $(foreach prog,$(DIRS),$(prog))
+
+all: driver library samples
diff --git a/recipes/ti/files/cmem-class-device-27-and-sched-include-fix.patch b/recipes/ti/files/cmem-class-device-27-and-sched-include-fix.patch
new file mode 100644
index 0000000000..8eb3210bb1
--- /dev/null
+++ b/recipes/ti/files/cmem-class-device-27-and-sched-include-fix.patch
@@ -0,0 +1,23 @@
+diff -uNr codec_engine_2_21/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c codec_engine_2_21_fix/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c
+--- codec_engine_2_21/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c 2009-02-12 22:02:15.000000000 +0000
++++ codec_engine_2_21_fix/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c 2009-02-12 22:08:49.000000000 +0000
+@@ -29,6 +29,7 @@
+ #include <linux/mm.h>
+ #include <linux/seq_file.h>
+ #include <linux/vmalloc.h>
++#include <linux/sched.h>
+ #include <asm/cacheflush.h>
+ #include <asm/uaccess.h>
+ #include <asm/pgtable.h>
+@@ -1710,7 +1711,11 @@
+ #ifdef USE_CLASS_DEVICE
+ class_device_create(cmem_class, NULL, MKDEV(cmem_major, 0), NULL, "cmem");
+ #else
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
++ device_create(cmem_class, NULL, MKDEV(cmem_major, 0), NULL, "cmem");
++#else
+ device_create(cmem_class, NULL, MKDEV(cmem_major, 0), "cmem");
++#endif // LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
+ #endif // USE_CLASS_DEVICE
+ #endif // USE_CLASS_SIMPLE
+ #endif // USE_UDEV
diff --git a/recipes/ti/files/cmem-remove-show-pte-function.patch b/recipes/ti/files/cmem-remove-show-pte-function.patch
new file mode 100644
index 0000000000..2d0fe672ef
--- /dev/null
+++ b/recipes/ti/files/cmem-remove-show-pte-function.patch
@@ -0,0 +1,56 @@
+--- codec_engine_2_23_01/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c 2009-04-20 14:43:31.000000000 -0400
++++ codec_engine_2_23_01.new/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c 2009-07-28 10:48:38.000000000 -0400
+@@ -1018,53 +1018,6 @@
+ }
+
+
+-/*
+- * This is useful to dump out the page tables associated with
+- * 'addr' in mm 'mm'.
+- */
+-void show_pte(struct mm_struct *mm, unsigned long addr)
+-{
+- pgd_t *pgd;
+-
+- if (!mm)
+- mm = &init_mm;
+-
+- printk(KERN_ALERT "pgd = %p\n", mm->pgd);
+- pgd = pgd_offset(mm, addr);
+- printk(KERN_ALERT "[%08lx] *pgd=%08lx", addr, pgd_val(*pgd));
+-
+- do {
+- pmd_t *pmd;
+- pte_t *pte;
+-
+- if (pgd_none(*pgd))
+- break;
+-
+- if (pgd_bad(*pgd)) {
+- printk("(bad)");
+- break;
+- }
+-
+- pmd = pmd_offset(pgd, addr);
+-
+- if (pmd_none(*pmd))
+- break;
+-
+- if (pmd_bad(*pmd)) {
+- printk("(bad)");
+- break;
+- }
+-
+- /* We must not map this if we have highmem enabled */
+- pte = pte_offset_map(pmd, addr);
+- printk(", *pte=%08lx", pte_val(*pte));
+- printk(", *ppte=%08lx", pte_val(pte[-PTRS_PER_PTE]));
+- pte_unmap(pte);
+- } while(0);
+-
+- printk("\n");
+-}
+-
+ static int set_noncached(struct vm_area_struct *vma)
+ {
+ vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
diff --git a/recipes/ti/files/config.bld b/recipes/ti/files/config.bld
new file mode 100644
index 0000000000..2e99cab0b0
--- /dev/null
+++ b/recipes/ti/files/config.bld
@@ -0,0 +1,48 @@
+/*
+ * CROSS_DIR - toolchain installation location
+ * PLATFORM - platform to be build
+ * doBuildArm - true (to build arm)
+ * doBuildDsp - true (to build dsp)
+ * buildDualCpu - build example for dual cpu
+ */
+
+var buildTable = {
+ "Arm": [{doBuild: doBuildArm,
+ target: "gnu.targets.arm.GCArmv5T",
+ cgtoolsRootDir: "CROSS_DIR",
+ platforms: [
+ {platform: "PLATFORM", dualCpu: buildDualCpu, outDir: "bin/PLATFORM"},
+ ],
+ }],
+ "DSP": [{doBuild: doBuildDsp,
+ target: "ti.targets.C64P",
+ cgtoolsRootDir: "TICGTOOLSDIR",
+ platforms: [
+ {platform: "PLATFORM", outDir: "bin/PLATFORM"},
+ ],
+ }]
+
+};
+
+var targets = [];
+var userbldBuildPlatforms = {};
+for each (var cpu in buildTable) {
+ for (var t = 0; t < cpu.length; t++) {
+ if (cpu[t].doBuild) {
+ var targ = xdc.useModule(cpu[t].target);
+ targets.push(targ);
+ targ.rootDir = cpu[t].cgtoolsRootDir;
+ userbldBuildPlatforms[targ.name] = cpu[t].platforms;
+ }
+ }
+}
+
+Build.targets = targets;
+for (var i = 0; i < Build.targets.length; i++) {
+ var t = targets[i];
+
+ if (t.name == "GCArmv5T") {
+ t.LONGNAME = "bin/CROSS_PREFIX";
+ }
+}
+
diff --git a/recipes/ti/files/dm355mm_1_30.patch b/recipes/ti/files/dm355mm_1_30.patch
new file mode 100644
index 0000000000..6ee6064f5a
--- /dev/null
+++ b/recipes/ti/files/dm355mm_1_30.patch
@@ -0,0 +1,498 @@
+diff -uNr dm355_codecs_1_13_000/dm355mm/module/dm350mmap.c dm355_codecs_1_13_000.new/dm355mm/module/dm350mmap.c
+--- dm355_codecs_1_13_000/dm355mm/module/dm350mmap.c 2009-05-20 11:22:57.000000000 -0500
++++ dm355_codecs_1_13_000.new/dm355mm/module/dm350mmap.c 2009-06-09 10:43:25.000000000 -0500
+@@ -7,7 +7,7 @@
+ * Use of this software is controlled by the terms and conditions found in the
+ * license agreement under which this software has been supplied or provided.
+ * ============================================================================
+- */
++ */
+ #include <linux/module.h>
+ #include <linux/init.h>
+ #include <linux/moduleparam.h>
+@@ -20,274 +20,283 @@
+ #include <linux/proc_fs.h>
+ #include <linux/kernel.h>
+ #include <linux/device.h>
+-
++#include <linux/clk.h>
++
+ #include <asm/page.h>
+ #include <asm/uaccess.h>
+ #include <asm/pgtable.h>
+ #include <asm/io.h>
+-#include<asm/system.h>
+-#include<asm-arm/memory.h>
++#include <asm/system.h>
++#include <asm/memory.h>
++
+ #include <asm/irq.h>
+-
++
++#include <linux/version.h>
+ #include <linux/completion.h>
+-#include <asm/arch/edma.h>
+-
++#include <mach/edma.h>
++
+ #define ASQINT_ENABLE
+- typedef struct _edma_params
+-{
+- unsigned long src;
+- unsigned long dst;
+- unsigned int srcmode;
+- unsigned int srcfifowidth;
+- int srcbidx;
+- int srccidx;
+- unsigned int dstmode;
+- unsigned int dstfifowidth;
+- int dstbidx;
+- int dstcidx;
+- int acnt;
+- int bcnt;
+- int ccnt;
+- int bcntrld;
+- int syncmode;
+- } edma_params;
++typedef struct _edma_params {
++ unsigned long src;
++ unsigned long dst;
++ unsigned int srcmode;
++ unsigned int srcfifowidth;
++ int srcbidx;
++ int srccidx;
++ unsigned int dstmode;
++ unsigned int dstfifowidth;
++ int dstbidx;
++ int dstcidx;
++ int acnt;
++ int bcnt;
++ int ccnt;
++ int bcntrld;
++ int syncmode;
++} edma_params;
+
+ #define DM350MMAP_IOCMEMCPY 0x7
+ #define DM350MMAP_IOCWAIT 0x8
+ #define DM350MMAP_IOCCLEAR_PENDING 0x9
+-
++
+ #ifdef __DEBUG
+-#define __D(fmt, args...) printk(KERN_DEBUG "DM350MMAP Debug: " fmt, ## args)
++# define __D(fmt, args...) printk(KERN_DEBUG "DM350MMAP Debug: " fmt, ## args)
+ #else /* */
+-#define __D(fmt, args...)
++# define __D(fmt, args...)
+ #endif /* */
+-
++
+ #define __E(fmt, args...) printk(KERN_ERR "DM350MMAP Error: " fmt, ## args)
+-
++
+ #define MAXTYPE(T) ((T) (((T)1 << ((sizeof(T) * 8) - 1) ^ ((T) -1))))
+-
++
+ static int major = 0;
+
+ #if (USE_UDEV==1)
+ static struct class *dm350mmap_class;
+-
+ #endif // USE_UDEV
+-static DECLARE_MUTEX_LOCKED (dm350mmap_reply_mutex);
+-int master_ch;
+-struct completion edmacompletion;
+-
+-/* Forward declaration of system calls */
+-static int ioctl (struct inode *inode, struct file *filp, unsigned int cmd,
+- unsigned long args);
+-static int mmap (struct file *filp, struct vm_area_struct *vma);
+-static int open (struct inode *inode, struct file *filp);
+-static int release (struct inode *inode, struct file *filp);
++
++static DECLARE_MUTEX(dm350mmap_reply_mutex);
++static struct completion edmacompletion;
++
++/* Forward declaration of system calls */
++static int ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
++ unsigned long args);
++static int mmap(struct file *filp, struct vm_area_struct *vma);
++static int open(struct inode *inode, struct file *filp);
++static int release(struct inode *inode, struct file *filp);
+ static struct file_operations dm350mmap_fxns = { ioctl: ioctl, mmap: mmap, open: open, release:release
+-
+ };
+
+-static irqreturn_t irq_handler (int irq, void *dev_id, struct pt_regs *regs)
++/* Structure to hold mjcp clock info */
++static struct clk *mjcp = NULL;
++
++//static irqreturn_t irq_handler (int irq, void *dev_id, struct pt_regs *regs)
++static irqreturn_t irq_handler(int irq, void *dev_id)
+ {
+-
+- /* Release the mutex, suggesting sequencer processing complete */
+- up (&dm350mmap_reply_mutex);
+- return IRQ_HANDLED;
++ /* Release the mutex, suggesting sequencer processing complete */
++ up(&dm350mmap_reply_mutex);
++ return IRQ_HANDLED;
+ }
+
+-static void memcpy_dma_irq_handler (int lch, u16 ch_status, void *data)
++static void memcpy_dma_irq_handler(unsigned lch, u16 ch_status, void *data)
+ {
+- complete_all (&edmacompletion);
+-}
++ complete_all(&edmacompletion);
++}
+
+-static int mmap (struct file *filp, struct vm_area_struct *vma)
++static int mmap(struct file *filp, struct vm_area_struct *vma)
+ {
+- __D ("mmap: vma->vm_start = %#lx\n", vma->vm_start);
+- __D ("mmap: vma->vm_pgoff = %#lx\n", vma->vm_pgoff);
+- __D ("mmap: vma->vm_end = %#lx\n", vma->vm_end);
+- __D ("mmap: size = %#lx\n", vma->vm_end - vma->vm_start);
+- vma->vm_page_prot = pgprot_noncached (vma->vm_page_prot);
+- if (remap_pfn_range (vma, vma->vm_start,
+-
+-#ifdef LINUX_2_6_18
+- (vma->vm_pgoff >> PAGE_SHIFT),
++ __D("mmap: vma->vm_start = %#lx\n", vma->vm_start);
++ __D("mmap: vma->vm_pgoff = %#lx\n", vma->vm_pgoff);
++ __D("mmap: vma->vm_end = %#lx\n", vma->vm_end);
++ __D("mmap: size = %#lx\n", vma->vm_end - vma->vm_start);
++ vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
++ if (remap_pfn_range(vma, vma->vm_start,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
++ (vma->vm_pgoff >> PAGE_SHIFT),
+ #else /* */
+- vma->vm_pgoff,
++ vma->vm_pgoff,
+ #endif /* */
+-
+- vma->vm_end - vma->vm_start, vma->vm_page_prot))
+- {
+- __E ("mmap: failed remap_pfn_range\n");
+- return -EAGAIN;
++ vma->vm_end - vma->vm_start, vma->vm_page_prot)) {
++ __E("mmap: failed remap_pfn_range\n");
++ return -EAGAIN;
+ }
+- return 0;
++ return 0;
+ }
+
+
+-static int ioctl (struct inode *inode, struct file *filp, unsigned int cmd,
+- unsigned long args)
++static int ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
++ unsigned long args)
+ {
+- unsigned int __user *argp = (unsigned int __user *) args;
+- edma_params edmaparams;
+- int err = 0, tcc = EDMA_TCC_ANY;
+- struct paramentry_descriptor paramentry;
+- switch (cmd)
+- {
+-
+- /*
+- * Tries to clear any previously unaccounted interrupt.
+- */
+- case DM350MMAP_IOCCLEAR_PENDING:
+-
+- {
+- int retval;
+- __D ("Clear Pending Call received.\n");
+- init_MUTEX_LOCKED(&dm350mmap_reply_mutex);
+- return 0;
+- }
+- break;
+-
+- /*
+- * Blocks till the sequencer completion interrupt arrives.
+- */
+- case DM350MMAP_IOCWAIT:
+-
+- {
+- int retval;
+- __D ("WAIT Call received.\n");
+- retval = down_interruptible (&dm350mmap_reply_mutex);
+- return retval;
+- }
+- break;
+- case DM350MMAP_IOCMEMCPY:
+- __D ("MEMCPY ioctl received.\n");
+- if (copy_from_user (&edmaparams, argp, sizeof (edmaparams)))
+- {
+- return -EFAULT;
+- }
+- err =
+- davinci_request_dma (EDMA_DMA_CHANNEL_ANY, "EDMA memcpy",
+- memcpy_dma_irq_handler, NULL, &master_ch, &tcc,
+- EVENTQ_1);
+-
+- /* Handle Failure condition here */
+- if (err < 0)
+- {
+- __E ("Error in requesting Master channel %d = 0x%x\n", master_ch,
+- err);
+- return err;
+- }
+- davinci_stop_dma (master_ch);
+- init_completion (&edmacompletion);
+- davinci_set_dma_src_params (master_ch,
+- (unsigned long) edmaparams.src,
+- edmaparams.srcmode,
+- edmaparams.srcfifowidth);
+- davinci_set_dma_dest_params (master_ch,
+- (unsigned long) edmaparams.dst,
+- edmaparams.dstmode,
+- edmaparams.dstfifowidth);
+- davinci_set_dma_src_index (master_ch, edmaparams.srcbidx,
+- edmaparams.srccidx);
+- davinci_set_dma_dest_index (master_ch, edmaparams.dstbidx,
+- edmaparams.dstcidx);
+- davinci_set_dma_transfer_params (master_ch, edmaparams.acnt,
+- edmaparams.bcnt, edmaparams.ccnt,
+- edmaparams.bcntrld,
+- edmaparams.syncmode);
+- davinci_get_dma_params (master_ch, &paramentry);
+-
+- /*printk("%x : %x : %x : %x : %x : %x : %x\n", paramentry.opt,
+- paramentry.a_b_cnt, paramentry.src_dst_bidx,
+- paramentry.src_dst_cidx, paramentry.ccnt, paramentry.src,
+- paramentry.dst); */
+- davinci_set_dma_params (master_ch, &paramentry);
+- davinci_start_dma (master_ch);
+- wait_for_completion (&edmacompletion);
+-
+- //printk("Dma completed... \n");
+- davinci_stop_dma (master_ch);
+- davinci_free_dma (master_ch);
+- break;
+- default:
+- __E ("Unknown ioctl received = %d.\n", cmd);
+- return -EINVAL;
++ unsigned int __user *argp = (unsigned int __user *) args;
++ edma_params edmaparams;
++ int edma_channel;
++ int retval = 0;
++ struct edmacc_param p_ram;
++
++ switch (cmd) {
++
++ /*
++ * Tries to clear any previously unaccounted interrupt.
++ */
++ case DM350MMAP_IOCCLEAR_PENDING:
++ __D("Clear Pending Call received.\n");
++ init_MUTEX_LOCKED(&dm350mmap_reply_mutex);
++ break;
++
++ /*
++ * Blocks till the sequencer completion interrupt arrives.
++ */
++ case DM350MMAP_IOCWAIT:
++ __D("WAIT Call received.\n");
++ retval = down_interruptible(&dm350mmap_reply_mutex);
++ break;
++
++ case DM350MMAP_IOCMEMCPY:
++ __D("MEMCPY ioctl received.\n");
++ if (copy_from_user(&edmaparams, argp, sizeof(edmaparams))) {
++ retval = -EFAULT;
++ break;
++ }
++
++ edma_channel =
++ edma_alloc_channel(EDMA_CHANNEL_ANY, &memcpy_dma_irq_handler,
++ NULL, EVENTQ_1);
++
++ /* Handle Failure condition here */
++ if (edma_channel < 0) {
++ __E("Error in requesting Master channel = 0x%x\n",
++ edma_channel);
++ retval = edma_channel;
++ break;
++ }
++
++ edma_stop(edma_channel);
++
++ init_completion(&edmacompletion);
++
++ edma_set_src(edma_channel,
++ (dma_addr_t) edmaparams.src,
++ edmaparams.srcmode, edmaparams.srcfifowidth);
++
++ edma_set_dest(edma_channel,
++ (dma_addr_t) edmaparams.dst,
++ edmaparams.dstmode, edmaparams.dstfifowidth);
++
++ edma_set_src_index(edma_channel, edmaparams.srcbidx,
++ edmaparams.srccidx);
++ edma_set_dest_index(edma_channel, edmaparams.dstbidx,
++ edmaparams.dstcidx);
++
++ edma_set_transfer_params(edma_channel,
++ edmaparams.acnt,
++ edmaparams.bcnt,
++ edmaparams.ccnt,
++ edmaparams.bcntrld, edmaparams.syncmode);
++
++ edma_read_slot(edma_channel, &p_ram);
++ p_ram.opt |= TCINTEN | EDMA_TCC(edma_channel);
++ edma_write_slot(edma_channel, &p_ram);
++
++ edma_start(edma_channel);
++ wait_for_completion(&edmacompletion);
++ edma_stop(edma_channel);
++ edma_free_channel(edma_channel);
++ break;
++
++ default:
++ __E("Unknown ioctl received = %d.\n", cmd);
++ retval = -EINVAL;
++ break;
+ }
+- return 0;
++
++ return retval;
+ }
+
+
+-static int open (struct inode *inode, struct file *filp)
++static int open(struct inode *inode, struct file *filp)
+ {
+- __D ("open: called.\n");
+- return 0;
++ __D("open: called.\n");
++ return 0;
+ }
+
+
+-static int release (struct inode *inode, struct file *filp)
++static int release(struct inode *inode, struct file *filp)
+ {
+- __D ("close: called.");
+- return 0;
++ __D("close: called.");
++ return 0;
+ }
+
+
+-int __init dm350mmap_init (void)
++int __init dm350mmap_init(void)
+ {
+- __D ("** DM350MMAP kernel module built: " __DATE__ " " __TIME__ "\n");
+- major = register_chrdev (0, "dm350mmap", &dm350mmap_fxns);
+- if (major < 0)
+- {
+- __E ("Failed to allocate major number.\n");
+- return -ENODEV;
++ /* In the GIT kernel unused clocks are disabled. To run codec we need to
++ * enable mjcp clock.
++ */
++ mjcp = clk_get(NULL, "mjcp");
++ if (IS_ERR(mjcp))
++ printk(KERN_WARNING "unable to get MJCP clock\n");
++ else
++ clk_enable(mjcp);
++
++ __D("** DM350MMAP kernel module built: " __DATE__ " " __TIME__ "\n");
++ major = register_chrdev(0, "dm350mmap", &dm350mmap_fxns);
++ if (major < 0) {
++ __E("Failed to allocate major number.\n");
++ return -ENODEV;
+ }
+- __D ("Allocated major number: %d\n", major);
+-
++ __D("Allocated major number: %d\n", major);
++
+ #if (USE_UDEV==1)
+- dm350mmap_class = class_create (THIS_MODULE, "dm350mmap");
+- if (IS_ERR (dm350mmap_class))
+- {
+- __E ("Error creating dm350mmap device class.\n");
+- return -EIO;
++ dm350mmap_class = class_create(THIS_MODULE, "dm350mmap");
++ if (IS_ERR(dm350mmap_class)) {
++ __E("Error creating dm350mmap device class.\n");
++ return -EIO;
+ }
+- class_device_create (dm350mmap_class, NULL, MKDEV (major, 0), NULL,
+- "dm350mmap");
+-
++ class_device_create(dm350mmap_class, NULL, MKDEV(major, 0), NULL,
++ "dm350mmap");
++
+ #endif // USE_UDEV
+- __D ("Successfully initialized module\n");
+-
++ __D("Successfully initialized module\n");
++
+ #ifdef ASQINT_ENABLE
+- if (request_irq (IRQ_ASQINT, irq_handler, 0, "seq_arm_interrupt", NULL))
+- {
+- __D ("Could not install ISR\n");
++ if (request_irq(IRQ_ASQINT, irq_handler, 0, "seq_arm_interrupt", NULL)) {
++ __D("Could not install ISR\n");
+ }
+-
++
+ #endif /* */
++ init_MUTEX_LOCKED(&dm350mmap_reply_mutex);
+ return 0;
+ }
+
+
+-void __exit dm350mmap_exit (void)
++void __exit dm350mmap_exit(void)
+ {
+- __D ("In dm350mmap_exit()\n");
+-
++ /* if mjcp clock is enabled then free it */
++ if (mjcp) {
++ clk_disable(mjcp);
++ clk_put(mjcp);
++ }
++
++ __D("In dm350mmap_exit()\n");
++
+ #if (USE_UDEV==1)
+- class_device_destroy (dm350mmap_class, MKDEV (major, 0));
+- class_destroy (dm350mmap_class);
+-
++ class_device_destroy(dm350mmap_class, MKDEV(major, 0));
++ class_destroy(dm350mmap_class);
++
+ #endif // USE_UDEV
+- __D ("Unregistering character device dm350mmap\n");
+- unregister_chrdev (major, "dm350mmap");
+-
++ __D("Unregistering character device dm350mmap\n");
++ unregister_chrdev(major, "dm350mmap");
++
+ #ifdef ASQINT_ENABLE
+- free_irq (IRQ_ASQINT, NULL);
+-
++ free_irq(IRQ_ASQINT, NULL);
++
+ #endif /* */
+- __D ("dm350mmap unregistered\n");
+-}
++ __D("dm350mmap unregistered\n");
++}
+
+-module_init (dm350mmap_init);
++module_init(dm350mmap_init);
+
+-module_exit (dm350mmap_exit);
+-MODULE_LICENSE ("GPL");
+-MODULE_AUTHOR ("Texas Instruments");
+-MODULE_DESCRIPTION ("DM350 mmap export to userland");
++module_exit(dm350mmap_exit);
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Texas Instruments");
++MODULE_DESCRIPTION("DM350 mmap export to userland");
+
diff --git a/recipes/ti/files/dmai-built-with-angstrom.patch b/recipes/ti/files/dmai-built-with-angstrom.patch
new file mode 100644
index 0000000000..fc49789718
--- /dev/null
+++ b/recipes/ti/files/dmai-built-with-angstrom.patch
@@ -0,0 +1,48 @@
+Index: dmai_1_20_00_06/packages/config.bld
+===================================================================
+--- dmai_1_20_00_06.orig/packages/config.bld 2009-02-11 19:38:51.000000000 -0600
++++ dmai_1_20_00_06/packages/config.bld 2009-02-11 19:39:23.000000000 -0600
+@@ -42,7 +42,7 @@
+
+ /* location of the Codec Sourcery Arm9 tools */
+ var GCArmv5T = xdc.useModule('gnu.targets.arm.GCArmv5T');
+-GCArmv5T.LONGNAME = 'bin/arm-none-linux-gnueabi-gcc';
++GCArmv5T.LONGNAME = 'bin/arm-angstrom-linux-gnueabi-gcc';
+ GCArmv5T.platform = "ti.platforms.evm3530";
+ GCArmv5T.rootDir = java.lang.System.getenv("CSTOOL_DIR");
+
+Index: dmai_1_20_00_06/packages/ti/sdo/dmai/Makefile
+===================================================================
+--- dmai_1_20_00_06.orig/packages/ti/sdo/dmai/Makefile 2009-02-11 19:39:57.000000000 -0600
++++ dmai_1_20_00_06/packages/ti/sdo/dmai/Makefile 2009-02-11 19:58:05.000000000 -0600
+@@ -33,7 +33,7 @@
+ DMAI_INSTALL_DIR = ../../../..
+ TARGET = dmai
+
+-include $(DMAI_INSTALL_DIR)/Rules.make
++#include $(DMAI_INSTALL_DIR)/Rules.make
+
+ # Should the full command be echoed to the console during build?
+ VERBOSE=false
+@@ -64,7 +64,7 @@
+ MVL_CPP_FLAGS = $(GNU_CPP_FLAGS) -Dxdc_target_name__=MVArm9
+ CS_CPP_FLAGS = $(GNU_CPP_FLAGS) -Dxdc_target_name__=codesourcery/GCArmv5T
+
+-GNU_C_FLAGS = $(C_FLAGS) -Wall -Werror
++GNU_C_FLAGS = $(C_FLAGS) -Wall
+ C64P_C_FLAGS = $(C_FLAGS)
+
+ GNU_AR_FLAGS = $(AR_FLAGS)
+Index: dmai_1_20_00_06/packages/ti/sdo/dmai/apps/Makefile.app
+===================================================================
+--- dmai_1_20_00_06.orig/packages/ti/sdo/dmai/apps/Makefile.app 2009-02-11 19:58:44.000000000 -0600
++++ dmai_1_20_00_06/packages/ti/sdo/dmai/apps/Makefile.app 2009-02-11 19:59:01.000000000 -0600
+@@ -34,7 +34,7 @@
+ ifndef DMAI_INSTALL_DIR
+ DMAI_INSTALL_DIR = ../../../../../..
+ endif
+-include $(DMAI_INSTALL_DIR)/Rules.make
++#include $(DMAI_INSTALL_DIR)/Rules.make
+
+ # Should the full command be echoed to the console during build?
+ VERBOSE=false
diff --git a/recipes/ti/files/dmai-do-not-panic-on-mixer-failure.patch b/recipes/ti/files/dmai-do-not-panic-on-mixer-failure.patch
new file mode 100644
index 0000000000..20e1aece72
--- /dev/null
+++ b/recipes/ti/files/dmai-do-not-panic-on-mixer-failure.patch
@@ -0,0 +1,31 @@
+Index: dmai_1_20_00_06/packages/ti/sdo/dmai/linux/Sound_alsa.c
+===================================================================
+--- dmai_1_20_00_06.orig/packages/ti/sdo/dmai/linux/Sound_alsa.c 2009-02-11 19:19:23.000000000 -0600
++++ dmai_1_20_00_06/packages/ti/sdo/dmai/linux/Sound_alsa.c 2009-02-11 19:19:25.000000000 -0600
+@@ -139,7 +139,7 @@
+
+ snd_mixer_selem_id_free (sid);
+ snd_mixer_close (rcMixer);
+-
++
+ return Dmai_EOK;
+ }
+
+@@ -431,14 +431,13 @@
+ Sound_alsa_delete(hSound);
+ return NULL;
+ }
+-
++
+ if (setMixerVolume (attrs) <0) {
+- Sound_alsa_delete (hSound);
+- return NULL;
++ Dmai_dbg2("Failed to set the mixer volume on %s (%s)\n",
++ AUDIO_DEVICE, snd_strerror(status));
+ }
+ }
+
+-
+ return hSound;
+ }
+
diff --git a/recipes/ti/files/dmai-support-32bit-align.patch b/recipes/ti/files/dmai-support-32bit-align.patch
new file mode 100644
index 0000000000..0ee817d9d9
--- /dev/null
+++ b/recipes/ti/files/dmai-support-32bit-align.patch
@@ -0,0 +1,17 @@
+Index: dmai_1_20_00_06/packages/ti/sdo/dmai/linux/omap3530/Resize.c
+===================================================================
+--- dmai_1_20_00_06.orig/packages/ti/sdo/dmai/linux/omap3530/Resize.c 2009-02-11 19:20:45.000000000 -0600
++++ dmai_1_20_00_06/packages/ti/sdo/dmai/linux/omap3530/Resize.c 2009-02-11 19:21:09.000000000 -0600
+@@ -557,9 +557,9 @@
+ srcOffset = srcDim.y * srcDim.lineLength + srcDim.x * 2;
+ dstOffset = dstDim.y * dstDim.lineLength + dstDim.x * 2;
+
+- /* Input and output buffers must be 4096 bytes aligned */
+- assert(((Buffer_getPhysicalPtr(hDstBuf) + srcOffset) & 0xFFF) == 0);
+- assert(((Buffer_getPhysicalPtr(hSrcBuf) + dstOffset) & 0xFFF) == 0);
++ /* Pointers must be a multiple of 32 bytes */
++ assert((Buffer_getPhysicalPtr(hDstBuf) & 0x1F) == 0);
++ assert((Buffer_getPhysicalPtr(hSrcBuf) & 0x1F) == 0);
+
+ /* Queue the resizer buffers */
+ for (i=0; i < 2; i++) {
diff --git a/recipes/ti/files/dmai-update-cpu-name.patch b/recipes/ti/files/dmai-update-cpu-name.patch
new file mode 100644
index 0000000000..052a8e3236
--- /dev/null
+++ b/recipes/ti/files/dmai-update-cpu-name.patch
@@ -0,0 +1,16 @@
+Index: dmai_1_20_00_06/packages/ti/sdo/dmai/linux/Cpu.c
+===================================================================
+--- dmai_1_20_00_06.orig/packages/ti/sdo/dmai/linux/Cpu.c 2009-02-12 09:34:22.000000000 -0600
++++ dmai_1_20_00_06/packages/ti/sdo/dmai/linux/Cpu.c 2009-02-12 09:34:51.000000000 -0600
+@@ -103,7 +103,10 @@
+ else if (strcmp(valBuf, "DM357 EVM") == 0) {
+ *device = Cpu_Device_DM6446;
+ }
+- else if (strcmp(valBuf, "OMAP3EVM Board") == 0) {
++ else if ((strcmp(valBuf, "OMAP3EVM Board") == 0) ||
++ (strcmp(valBuf, "OMAP3 EVM") == 0) ||
++ (strcmp(valBuf, "OMAP3 Beagle Board") == 0)
++ ){
+ *device = Cpu_Device_OMAP3530;
+ }
+ else {
diff --git a/recipes/ti/files/dmai-update-fb-display.patch b/recipes/ti/files/dmai-update-fb-display.patch
new file mode 100644
index 0000000000..91c1dd15aa
--- /dev/null
+++ b/recipes/ti/files/dmai-update-fb-display.patch
@@ -0,0 +1,77 @@
+Index: dmai_1_20_00_06/packages/ti/sdo/dmai/linux/Display_fbdev.c
+===================================================================
+--- dmai_1_20_00_06.orig/packages/ti/sdo/dmai/linux/Display_fbdev.c 2009-02-11 19:59:57.000000000 -0600
++++ dmai_1_20_00_06/packages/ti/sdo/dmai/linux/Display_fbdev.c 2009-02-11 20:02:46.000000000 -0600
+@@ -41,10 +41,7 @@
+ #include <sys/ioctl.h>
+ #include <linux/fb.h>
+
+-#ifdef Dmai_Device_omap3530
+-/* OMAP specific kernel headers */
+-#include <video/omapfbdev.h>
+-#else
++#ifndef Dmai_Device_omap3530
+ /* Davinci specific kernel headers */
+ #include <video/davincifb_ioctl.h>
+ #endif
+@@ -184,11 +181,13 @@
+ }
+ #endif
+
++#if 0
+ /* Set up the sysfs variables before opening the display device */
+ if (_Display_sysfsSetup(attrs, channel) < 0) {
+ cleanup(hDisplay);
+ return NULL;
+ }
++#endif
+
+ /* Open video display device */
+ hDisplay->fd = open(attrs->displayDevice, O_RDWR);
+@@ -423,6 +422,7 @@
+ ******************************************************************************/
+ Int Display_fbdev_get(Display_Handle hDisplay, Buffer_Handle *hBufPtr)
+ {
++#if defined (FBIO_WAITFORVSYNC)
+ BufTab_Handle hBufTab = hDisplay->hBufTab;
+ int dummy;
+
+@@ -436,7 +436,8 @@
+ }
+
+ *hBufPtr = BufTab_getBuf(hBufTab, hDisplay->workingIdx);
+-
++
++#endif
+ return Dmai_EOK;
+ }
+
+Index: dmai_1_20_00_06/packages/ti/sdo/dmai/linux/Display.c
+===================================================================
+--- dmai_1_20_00_06.orig/packages/ti/sdo/dmai/linux/Display.c 2009-02-11 20:00:10.000000000 -0600
++++ dmai_1_20_00_06/packages/ti/sdo/dmai/linux/Display.c 2009-02-11 20:02:07.000000000 -0600
+@@ -80,18 +80,18 @@
+
+ const Display_Attrs Display_Attrs_O3530_VID_DEFAULT = {
+ 3,
+- Display_Std_V4L2,
+- VideoStd_VGA,
+- Display_Output_LCD,
+- "/dev/video1",
++ Display_Std_FBDEV,
++ VideoStd_D1_NTSC,
++ Display_Output_DVI,
++ "/dev/fb2",
+ 0
+ };
+
+ const Display_Attrs Display_Attrs_O3530_OSD_DEFAULT = {
+ 1,
+ Display_Std_FBDEV,
+- VideoStd_VGA,
+- Display_Output_LCD,
++ VideoStd_D1_NTSC,
++ Display_Output_DVI,
+ "/dev/fb0",
+ 0
+ };
diff --git a/recipes/ti/files/dmai-update-v4l2-display.patch b/recipes/ti/files/dmai-update-v4l2-display.patch
new file mode 100644
index 0000000000..8bb77d8473
--- /dev/null
+++ b/recipes/ti/files/dmai-update-v4l2-display.patch
@@ -0,0 +1,127 @@
+Index: dmai_1_20_00_06/packages/ti/sdo/dmai/linux/Display_v4l2.c
+===================================================================
+--- dmai_1_20_00_06.orig/packages/ti/sdo/dmai/linux/Display_v4l2.c 2009-02-11 19:22:51.000000000 -0600
++++ dmai_1_20_00_06/packages/ti/sdo/dmai/linux/Display_v4l2.c 2009-02-11 19:27:02.000000000 -0600
+@@ -120,7 +120,9 @@
+ struct v4l2_format fmt;
+ enum v4l2_buf_type type;
+ Display_Handle hDisplay;
+- Int channel;
++#if defined(Dmai_Device_omap3530) && defined(V4L2_CID_ROTATION)
++ struct v4l2_control control;
++#endif
+
+ assert(attrs);
+
+@@ -134,44 +136,6 @@
+
+ hDisplay->userAlloc = TRUE;
+
+-#ifdef Dmai_Device_omap3530
+- /* channel = 0 - digital video path
+- * channel = 1 - analog video path
+- */
+- switch (attrs->videoOutput) {
+- case Display_Output_SVIDEO:
+- case Display_Output_COMPOSITE:
+- channel = 1;
+- break;
+- case Display_Output_DVI:
+- case Display_Output_LCD:
+- case Display_Output_SYSTEM:
+- channel = 0;
+- break;
+- default:
+- /* do nothing */
+- break;
+- }
+-#else
+- if (strcmp(attrs->displayDevice, "/dev/video2") == 0) {
+- channel = 0;
+- }
+- else if (strcmp(attrs->displayDevice, "/dev/video3") == 0) {
+- channel = 1;
+- }
+- else {
+- Dmai_err1("%s not a display device\n", attrs->displayDevice);
+- cleanup(hDisplay);
+- return NULL;
+- }
+-#endif
+-
+- /* Set up the sysfs variables before opening the display device */
+- if (_Display_sysfsSetup(attrs, channel) < 0) {
+- cleanup(hDisplay);
+- return NULL;
+- }
+-
+ /* Open video capture device */
+ hDisplay->fd = open(attrs->displayDevice, O_RDWR, 0);
+
+@@ -182,9 +146,8 @@
+ return NULL;
+ }
+
+-#ifdef Dmai_Device_omap3530
+-#define VIDIOC_S_OMAP2_ROTATION _IOW ('V', 3, int)
+-
++
++#if defined(Dmai_Device_omap3530) && defined(V4L2_CID_ROTATION)
+ if (attrs->rotation != 0 && attrs->rotation != 90 &&
+ attrs->rotation != 180 && attrs->rotation != 270) {
+
+@@ -193,49 +156,16 @@
+ return NULL;
+ }
+
+- if (ioctl(hDisplay->fd, VIDIOC_S_OMAP2_ROTATION, &attrs->rotation) < 0) {
+- Dmai_err2("Failed VIDIOC_S_OMAP2_ROTATION on %s (%s)\n",
++ control.id = V4L2_CID_ROTATION;
++ control.value = attrs->rotation;
++
++ if (ioctl(hDisplay->fd, VIDIOC_S_CTRL, &control) < 0) {
++ Dmai_err2("Failed VIDIOC_S_CTRL on %s (%s)\n",
+ attrs->displayDevice, strerror(errno));
+ cleanup(hDisplay);
+ return NULL;
+ }
+
+- switch (attrs->videoStd) {
+- case VideoStd_D1_NTSC:
+- fmt.fmt.pix.width = VideoStd_D1_WIDTH;
+- fmt.fmt.pix.height = VideoStd_D1_NTSC_HEIGHT;
+- break;
+- case VideoStd_D1_PAL:
+- fmt.fmt.pix.width = VideoStd_D1_WIDTH;
+- fmt.fmt.pix.height = VideoStd_D1_PAL_HEIGHT;
+- break;
+- case VideoStd_VGA:
+- fmt.fmt.pix.width = VideoStd_VGA_WIDTH;
+- fmt.fmt.pix.height = VideoStd_VGA_HEIGHT;
+- break;
+- case VideoStd_480P:
+- fmt.fmt.pix.width = VideoStd_480P_WIDTH;
+- fmt.fmt.pix.height = VideoStd_480P_HEIGHT;
+- break;
+- case VideoStd_720P_60:
+- fmt.fmt.pix.width = VideoStd_480P_WIDTH;
+- fmt.fmt.pix.height = VideoStd_480P_HEIGHT;
+- break;
+- default:
+- Dmai_err1("Unknown video standard %d\n", attrs->videoStd);
+- cleanup(hDisplay);
+- return NULL;
+- }
+-
+- fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_UYVY;
+- fmt.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
+-
+- if (ioctl(hDisplay->fd, VIDIOC_S_FMT, &fmt) == -1) {
+- Dmai_err2("Failed VIDIOC_S_FMT on %s (%s)\n", attrs->displayDevice,
+- strerror(errno));
+- cleanup(hDisplay);
+- return NULL;
+- }
+ #endif /* Dmai_Device_omap3530 */
+
+ /* Determine the video image dimensions */
diff --git a/recipes/ti/files/dsplink-128M.patch b/recipes/ti/files/dsplink-128M.patch
new file mode 100644
index 0000000000..ff5902bf50
--- /dev/null
+++ b/recipes/ti/files/dsplink-128M.patch
@@ -0,0 +1,104 @@
+diff -Nurd dsplink_1_50/dsplink/config/all/CFG_Davinci_DM6446.c dsplink_1_50.work/dsplink/config/all/CFG_Davinci_DM6446.c
+--- dsplink_1_50/dsplink/config/all/CFG_Davinci_DM6446.c 2007-12-03 08:11:41.000000000 -0500
++++ dsplink_1_50.work/dsplink/config/all/CFG_Davinci_DM6446.c 2008-07-29 16:52:28.000000000 -0400
+@@ -69,8 +69,8 @@
+ FALSE, /* AUTOSTART : Autostart the DSP (Not supported) */
+ "DEFAULT.OUT", /* EXECUTABLE : Executable for autostart */
+ TRUE, /* DOPOWERCTRL : Link does the Power Ctrl of DSP. */
+- 0x8FF00020, /* RESUMEADDR : Resume address */
+- 0x8FF00000, /* RESETVECTOR : Reset Vector for the DSP */
++ 0x87000020, /* RESUMEADDR : Resume address */
++ 0x87000000, /* RESETVECTOR : Reset Vector for the DSP */
+ 0x80, /* RESETCODESIZE : Size of code at DSP Reset Vector */
+ 1, /* MADUSIZE : DSP Minimum Addressable Data Unit */
+ (Uint32) -1, /* CPUFREQ : DSP Frequency (in KHz), -1 if default setting is to be used */
+@@ -93,8 +93,8 @@
+ {
+ 0, /* ENTRY : Entry number */
+ "DSPLINKMEM", /* NAME : Name of the memory region */
+- 0x8FE00000, /* ADDRPHYS : Physical address */
+- 0x8FE00000, /* ADDRDSPVIRT : DSP virtual address */
++ 0x87000000, /* ADDRPHYS : Physical address */
++ 0x87000000, /* ADDRDSPVIRT : DSP virtual address */
+ (Uint32) -1, /* ADDRGPPVIRT : GPP virtual address (if known) */
+ 0x5000, /* SIZE : Size of the memory region */
+ TRUE /* SHARED : Shared access memory? */
+@@ -102,8 +102,8 @@
+ {
+ 1, /* ENTRY : Entry number */
+ "DSPLINKMEM1", /* NAME : Name of the memory region */
+- 0x8FE05000, /* ADDRPHYS : Physical address */
+- 0x8FE05000, /* ADDRDSPVIRT : DSP virtual address */
++ 0x87005000, /* ADDRPHYS : Physical address */
++ 0x87005000, /* ADDRDSPVIRT : DSP virtual address */
+ (Uint32) -1, /* ADDRGPPVIRT : GPP virtual address (if known) */
+ 0xFB000, /* SIZE : Size of the memory region */
+ TRUE /* SHARED : Shared access memory? */
+@@ -111,8 +111,8 @@
+ {
+ 2, /* ENTRY : Entry number */
+ "RESETCTRL", /* NAME : Name of the memory region */
+- 0x8FF00000, /* ADDRPHYS : Physical address */
+- 0x8FF00000, /* ADDRDSPVIRT : DSP virtual address */
++ 0x87100000, /* ADDRPHYS : Physical address */
++ 0x87100000, /* ADDRDSPVIRT : DSP virtual address */
+ (Uint32) -1, /* ADDRGPPVIRT : GPP virtual address (if known) */
+ 0x00000080, /* SIZE : Size of the memory region */
+ FALSE /* SHARED : Shared access memory? */
+@@ -120,10 +120,10 @@
+ {
+ 3, /* ENTRY : Entry number */
+ "DDR", /* NAME : Name of the memory region */
+- 0x8FF00080, /* ADDRPHYS : Physical address */
+- 0x8FF00080, /* ADDRDSPVIRT : DSP virtual address */
++ 0x87100080, /* ADDRPHYS : Physical address */
++ 0x87100080, /* ADDRDSPVIRT : DSP virtual address */
+ (Uint32) -1, /* ADDRGPPVIRT : GPP virtual address (if known) */
+- 0xFFF80, /* SIZE : Size of the memory region */
++ 0xEFFF80, /* SIZE : Size of the memory region */
+ FALSE /* SHARED : Shared access memory? */
+ },
+ {
+diff -Nurd dsplink_1_50/dsplink/dsp/inc/DspBios/Davinci/DM6446/dsplink-davinci-base.tci dsplink_1_50.work/dsplink/dsp/inc/DspBios/Davinci/DM6446/dsplink-davinci-base.tci
+--- dsplink_1_50/dsplink/dsp/inc/DspBios/Davinci/DM6446/dsplink-davinci-base.tci 2007-12-03 08:11:55.000000000 -0500
++++ dsplink_1_50.work/dsplink/dsp/inc/DspBios/Davinci/DM6446/dsplink-davinci-base.tci 2008-07-29 16:56:03.000000000 -0400
+@@ -54,7 +54,10 @@
+ prog.module("GBL").C64PLUSCONFIGURE = true ;
+ prog.module("GBL").C64PLUSL2CFG = "32k" ;
+ prog.module("GBL").C64PLUSL1DCFG = "32k" ;
++prog.module("GBL").C64PLUSMAR128to159 = 0xFFFFFFFF ;
++/*
+ prog.module("GBL").C64PLUSMAR128to159 = 0x00008000 ;
++*/
+
+ /* ============================================================================
+ * MEM
+@@ -67,7 +70,7 @@
+ * ============================================================================
+ */
+ var DSPLINKMEM = prog.module("MEM").create("DSPLINKMEM");
+-DSPLINKMEM.base = 0x8FE00000;
++DSPLINKMEM.base = 0x87000000;
+ DSPLINKMEM.len = 0x100000;
+ DSPLINKMEM.createHeap = false;
+ DSPLINKMEM.comment = "DSPLINKMEM";
+@@ -77,7 +80,7 @@
+ * ============================================================================
+ */
+ var RESET_VECTOR = prog.module("MEM").create("RESET_VECTOR");
+-RESET_VECTOR.base = 0x8FF00000;
++RESET_VECTOR.base = 0x87100000;
+ RESET_VECTOR.len = 0x00000080;
+ RESET_VECTOR.space = "code/data";
+ RESET_VECTOR.createHeap = false;
+@@ -88,8 +91,8 @@
+ * ============================================================================
+ */
+ var DDR = prog.module("MEM").create("DDR");
+-DDR.base = 0x8FF00080;
+-DDR.len = 0x000FFF80;
++DDR.base = 0x87100080;
++DDR.len = 0xEFFF80;
+ DDR.space = "code/data";
+ DDR.createHeap = true;
+ DDR.heapSize = 0x10000;
diff --git a/recipes/ti/files/dsplink-add-class-device-create-support.patch b/recipes/ti/files/dsplink-add-class-device-create-support.patch
new file mode 100644
index 0000000000..b43c3481e1
--- /dev/null
+++ b/recipes/ti/files/dsplink-add-class-device-create-support.patch
@@ -0,0 +1,55 @@
+diff -uNr codec_engine_2_21/cetools/packages/dsplink/gpp/src/pmgr/Linux/2.6.18/drv_pmgr.c codec_engine_2_21_fix/cetools/packages/dsplink/gpp/src/pmgr/Linux/2.6.18/drv_pmgr.c
+--- codec_engine_2_21/cetools/packages/dsplink/gpp/src/pmgr/Linux/2.6.18/drv_pmgr.c 2008-10-24 20:58:01.000000000 +0100
++++ codec_engine_2_21_fix/cetools/packages/dsplink/gpp/src/pmgr/Linux/2.6.18/drv_pmgr.c 2009-02-20 23:46:42.000000000 +0000
+@@ -37,6 +37,10 @@
+ #endif
+
+ /* ----------------------------------- OS Specific Headers */
++#include <linux/version.h>
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
++#include <linux/device.h>
++#endif
+ #include <linux/autoconf.h>
+ #include <linux/spinlock.h>
+ #include <linux/module.h>
+@@ -190,6 +194,16 @@
+ */
+ STATIC Int32 major = 230 ;
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
++/** ----------------------------------------------------------------------------
++ * @name dsplink_class
++ *
++ * @desc class struct for device create.
++ * ----------------------------------------------------------------------------
++ */
++STATIC struct class *dsplink_class;
++#endif
++
+ /** ----------------------------------------------------------------------------
+ * @name DRV_IsInitialized
+ *
+@@ -673,6 +687,11 @@
+ }
+ #endif /* if defined (CHNL_COMPONENT) */
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
++ dsplink_class = class_create(THIS_MODULE, "dsplink");
++ device_create(dsplink_class, NULL, MKDEV(major, 0), NULL, "dsplink");
++#endif
++
+ if (DSP_SUCCEEDED (status)) {
+ DRV_IsInitialized = TRUE ;
+ }
+@@ -717,6 +736,11 @@
+ }
+ #endif /* if defined (CHNL_COMPONENT) */
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
++ device_destroy(dsplink_class, MKDEV(major, 0));
++ class_destroy(dsplink_class);
++#endif
++
+ unregister_chrdev (major, "dsplink") ;
+
+ DRV_IsInitialized = FALSE ;
diff --git a/recipes/ti/files/dsplink-semaphore-27.patch b/recipes/ti/files/dsplink-semaphore-27.patch
new file mode 100644
index 0000000000..b2f71169fd
--- /dev/null
+++ b/recipes/ti/files/dsplink-semaphore-27.patch
@@ -0,0 +1,36 @@
+diff -uNr codec_engine_2_21/cetools/packages/dsplink/gpp/src/osal/Linux/2.6.18/sync.c codec_engine_2_21_fix/cetools/packages/dsplink/gpp/src/osal/Linux/2.6.18/sync.c
+--- codec_engine_2_21/cetools/packages/dsplink/gpp/src/osal/Linux/2.6.18/sync.c 2008-12-19 16:27:19.000000000 +0530
++++ codec_engine_2_21_mod/cetools/packages/dsplink/gpp/src/osal/Linux/2.6.18/sync.c 2009-02-12 10:08:48.000000000 +0530
+@@ -30,9 +30,14 @@
+
+
+ /* ----------------------------------- OS Specific Headers */
++#include <linux/version.h>
+ #include <linux/autoconf.h>
+ #include <linux/spinlock.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
+ #include <asm/semaphore.h>
++#else
++#include <linux/semaphore.h>
++#endif
+ #include <linux/timer.h>
+ #include <linux/sched.h>
+ #include <linux/delay.h>
+diff -uNr codec_engine_2_21/cetools/packages/dsplink/gpp/src/osal/Linux/user.c codec_engine_2_21_fix/cetools/packages/dsplink_mod/gpp/src/osal/Linux/user.c
+--- codec_engine_2_21/cetools/packages/dsplink/gpp/src/osal/Linux/user.c 2008-12-19 16:27:19.000000000 +0530
++++ codec_engine_2_21_fix/cetools/packages/dsplink_mod/gpp/src/osal/Linux/user.c 2009-02-12 10:08:05.000000000 +0530
+@@ -30,9 +30,14 @@
+
+
+ /* ----------------------------------- OS Specific Headers */
++#include <linux/version.h>
+ #include <linux/autoconf.h>
+ #include <linux/spinlock.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
+ #include <asm/semaphore.h>
++#else
++#include <linux/semaphore.h>
++#endif
+ #include <linux/timer.h>
+ #include <linux/sched.h>
+ #include <linux/delay.h>
diff --git a/recipes/ti/files/dvsdk-rules/Makefile b/recipes/ti/files/dvsdk-rules/Makefile
new file mode 100644
index 0000000000..bc1eabf249
--- /dev/null
+++ b/recipes/ti/files/dvsdk-rules/Makefile
@@ -0,0 +1,284 @@
+include Rules.make
+
+COMPONENTS:=$(DMAI_INSTALL_DIR) $(LINK_INSTALL_DIR) $(XDAIS_INSTALL_DIR) $(CMEM_INSTALL_DIR) $(EDMA3_LLD_INSTALL_DIR) $(FC_INSTALL_DIR) $(CE_INSTALL_DIR) $(XDC_INSTALL_DIR) $(BIOSUTILS_INSTALL_DIR) $(BIOS_INSTALL_DIR) $(DVTB_INSTALL_DIR) $(CODEC_INSTALL_DIR)
+
+REPOSITORIES:=$(addsuffix /packages, $(COMPONENTS))
+
+CHECKLIST:=$(REPOSITORIES) $(CODEGEN_INSTALL_DIR)/bin/cl6x $(MVTOOL_PREFIX)gcc $(LINUXKERNEL_INSTALL_DIR)/Documentation $(DEMO_INSTALL_DIR)/$(PLATFORM) $(PSP_INSTALL_DIR)/docs
+
+.PHONY: all clean everything clobber help cmem cmem_clean dmai dmai_clean dm355mm dm355mm_clean dsplink dsplink_arm dsplink_dsp dsplink_samples dsplink_clean codecs codecs_clean linux linux_clean info check install
+
+#==============================================================================
+# Set up platform dependent variables.
+#==============================================================================
+ifeq ($(PLATFORM),dm6446)
+LINUXKERNEL_CONFIG=davinci_all_defconfig
+LINUXSAMPLES_PLATFORM=dm644x
+DSPLINK_CONFIG=--platform=DAVINCI --nodsp=1 --dspcfg_0=DM6446GEMSHMEM --dspos_0=DSPBIOS5XX --gppos=MVL5G --comps=ponslrm
+DSPLINK_MODULE=$(LINK_INSTALL_DIR)/packages/dsplink/gpp/export/BIN/Linux/DAVINCI/RELEASE/dsplinkk.ko
+DMAI_PLATFORM=dm6446_al
+else
+ifeq ($(PLATFORM),dm6467)
+LINUXKERNEL_CONFIG=davinci_all_defconfig
+LINUXSAMPLES_PLATFORM=dm646x
+DSPLINK_CONFIG=--platform=DAVINCIHD --nodsp=1 --dspcfg_0=DM6467GEMSHMEM --dspos_0=DSPBIOS5XX --gppos=MVL5G --comps=ponslrm
+DSPLINK_MODULE=$(LINK_INSTALL_DIR)/packages/dsplink/gpp/export/BIN/Linux/DAVINCIHD/RELEASE/dsplinkk.ko
+DMAI_PLATFORM=dm6467_al
+else
+ifeq ($(PLATFORM),dm355)
+LINUXKERNEL_CONFIG=davinci_dm355_defconfig
+LINUXSAMPLES_PLATFORM=dm355
+DMAI_PLATFORM=dm355_al
+else
+ $(error PLATFORM not set correctly: $(PLATFORM))
+endif
+endif
+endif
+
+#==============================================================================
+# The default build target.
+#==============================================================================
+all: check cmem dm355mm dmai
+
+#==============================================================================
+# Clean up the targets built by 'make all'.
+#==============================================================================
+clean: cmem_clean dm355mm_clean dmai_clean
+
+#==============================================================================
+# Build everything rebuildable.
+#==============================================================================
+everything: check codecs linux dsplink all
+
+#==============================================================================
+# Clean up all targets.
+#==============================================================================
+clobber: clean dsplink_clean linux_clean codecs_clean
+
+#==============================================================================
+# A help message target.
+#==============================================================================
+help:
+ @echo
+ @echo "Available build targets are:"
+ @echo
+ @echo " check : Make sure Rules.make is set up properly"
+ @echo " info : List versions of DVSDK components"
+ @echo
+ @echo " all : Build the components below"
+ @echo " clean : Remove files generated by the 'all' target"
+ @echo
+ @echo " cmem : Build the CMEM kernel module for $(PLATFORM)"
+ @echo " cmem_clean : Remove generated cmem files."
+ @echo
+ @echo " dmai : Build DMAI for $(PLATFORM)_al"
+ @echo " dmai_clean : Remove generated DMAI files."
+ @echo
+ @echo " dm355mm : Build the dm355mm kernel module"
+ @echo " dm355mm_clean : Remove generated dm355mm files"
+ @echo
+ @echo "The following targets have to be explicitly built and cleaned:"
+ @echo
+ @echo " everything : Rebuild everything including below targets"
+ @echo " clobber : Remove all generated files"
+ @echo
+ @echo " dsplink : Configure and build DSP Link for $(PLATFORM) ARM and DSP"
+ @echo " dsplink_arm : Configure and build DSP Link for $(PLATFORM) ARM"
+ @echo " dsplink_dsp : Configure and build DSP Link for $(PLATFORM) DSP"
+ @echo " dsplink_samples : Build DSP Link ARM and DSP sample applications "
+ @echo " dsplink_clean : Remove generated DSP Link files"
+ @echo
+ @echo " codecs : Build codec servers for $(PLATFORM)"
+ @echo " codecs_clean : Remove generated codec server files"
+ @echo
+ @echo " linux : Build Linux kernel uImage for $(PLATFORM)"
+ @echo " linux_clean : Remove generated Linux kernel files"
+ @echo
+ @echo " install : Install binaries to $(EXEC_DIR)"
+ @echo
+
+#==============================================================================
+# Target for listing information about the DVSDK components.
+#==============================================================================
+info: check
+ @LINUXKERNEL_INSTALL_DIR="$(LINUXKERNEL_INSTALL_DIR)" CODEGEN_INSTALL_DIR="$(CODEGEN_INSTALL_DIR)" GCC_PREFIX="$(MVTOOL_PREFIX)" XDC_INSTALL_DIR="$(XDC_INSTALL_DIR)" REPOSITORIES="$(REPOSITORIES)" $(DVSDK_INSTALL_DIR)/bin/info.sh
+
+#==============================================================================
+# Target for checking that the Rules.make file is set up properly.
+#==============================================================================
+check:
+ @CHECKLIST="$(CHECKLIST)" $(DVSDK_INSTALL_DIR)/bin/check.sh
+
+#==============================================================================
+# Build the Linux kernel. Also, an explicit cleanup target is defined.
+#==============================================================================
+linux:
+ $(MAKE) -C $(LINUXKERNEL_INSTALL_DIR) CROSS_COMPILE=$(MVTOOL_PREFIX) $(LINUXKERNEL_CONFIG)
+ $(MAKE) -C $(LINUXKERNEL_INSTALL_DIR) CROSS_COMPILE=$(MVTOOL_PREFIX) uImage
+ @echo
+ @echo "Your kernel image can be found at $(LINUXKERNEL_INSTALL_DIR)/arch/arm/boot/uImage"
+
+linux_clean:
+ $(MAKE) -C $(LINUXKERNEL_INSTALL_DIR) CROSS_COMPILE=$(MVTOOL_PREFIX) clean
+
+#==============================================================================
+# Build the CMEM kernel module for the configured platform, and make sure the
+# kernel_binaries directory is kept in sync. Also, an explicit cleanup target
+# is defined.
+#==============================================================================
+cmem:
+ $(MAKE) -C $(CMEM_INSTALL_DIR)/packages/ti/sdo/linuxutils/cmem/src/interface ../../lib/cmem.a470MV
+ $(MAKE) -C $(CMEM_INSTALL_DIR)/packages/ti/sdo/linuxutils/cmem/src/module
+ @mkdir -p $(DVSDK_INSTALL_DIR)/kernel_binaries/$(PLATFORM)
+ @cp $(CMEM_INSTALL_DIR)/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.ko $(DVSDK_INSTALL_DIR)/kernel_binaries/$(PLATFORM)/
+ @echo
+ @echo "cmemk.ko kernel module can be found under $(DVSDK_INSTALL_DIR)/kernel_binaries/$(PLATFORM)"
+
+cmem_clean:
+ $(MAKE) -C $(CMEM_INSTALL_DIR)/packages/ti/sdo/linuxutils/cmem/src/module clean
+ $(MAKE) -C $(CMEM_INSTALL_DIR)/packages/ti/sdo/linuxutils/cmem/src/interface clean
+
+#==============================================================================
+# Build the *evaluation* codec servers for the configured platform. Also, an
+# explicit cleanup target is defined.
+#==============================================================================
+codecs:
+ifneq ($(PLATFORM),dm355)
+ $(MAKE) -C $(CODEC_INSTALL_DIR) DVSDK_INSTALL_DIR=$(DVSDK_INSTALL_DIR) BIOS_INSTALL_DIR=$(BIOS_INSTALL_DIR) XDC_INSTALL_DIR=$(XDC_INSTALL_DIR) CE_INSTALL_DIR=$(CE_INSTALL_DIR) FC_INSTALL_DIR=$(FC_INSTALL_DIR) CMEM_INSTALL_DIR=$(CMEM_INSTALL_DIR) CODECS_INSTALL_DIR=$(CODEC_INSTALL_DIR) BIOSUTILS_INSTALL_DIR=$(BIOSUTILS_INSTALL_DIR) XDAIS_INSTALL_DIR=$(XDAIS_INSTALL_DIR) LINK_INSTALL_DIR=$(LINK_INSTALL_DIR) XDCARGS=\"eval\"
+endif
+
+codecs_clean:
+ifneq ($(PLATFORM),dm355)
+ $(MAKE) -C $(CODEC_INSTALL_DIR) DVSDK_INSTALL_DIR=$(DVSDK_INSTALL_DIR) BIOS_INSTALL_DIR=$(BIOS_INSTALL_DIR) XDC_INSTALL_DIR=$(XDC_INSTALL_DIR) CE_INSTALL_DIR=$(CE_INSTALL_DIR) FC_INSTALL_DIR=$(FC_INSTALL_DIR) CMEM_INSTALL_DIR=$(CMEM_INSTALL_DIR) CODECS_INSTALL_DIR=$(CODEC_INSTALL_DIR) BIOSUTILS_INSTALL_DIR=$(BIOSUTILS_INSTALL_DIR) XDAIS_INSTALL_DIR=$(XDAIS_INSTALL_DIR) LINK_INSTALL_DIR=$(LINK_INSTALL_DIR) XDCARGS=\"eval\" clean
+endif
+
+#==============================================================================
+# Build the dm355mm kernel module (if the configured platform is dm355). Also,
+# an explicit cleanup target is defined.
+#==============================================================================
+dm355mm:
+ifeq ($(PLATFORM),dm355)
+ $(MAKE) -C $(CODEC_INSTALL_DIR)/dm355mm/module KERNEL_DIR=$(LINUXKERNEL_INSTALL_DIR)
+ @mkdir -p $(DVSDK_INSTALL_DIR)/kernel_binaries/$(PLATFORM)
+ @cp $(CODEC_INSTALL_DIR)/dm355mm/module/dm350mmap.ko $(DVSDK_INSTALL_DIR)/kernel_binaries/$(PLATFORM)/
+ @echo
+ @echo "dm350mmap.ko kernel module can be found under $(DVSDK_INSTALL_DIR)/kernel_binaries/$(PLATFORM)"
+endif
+
+dm355mm_clean:
+ifeq ($(PLATFORM),dm355)
+ $(MAKE) -C $(CODEC_INSTALL_DIR)/dm355mm/module KERNEL_DIR=$(LINUXKERNEL_INSTALL_DIR) clean
+endif
+
+#==============================================================================
+# Build the Davinci Multimedia Application Interface for the configured
+# platform. Also, an explicit cleanup target is defined.
+#==============================================================================
+dmai:
+ @$(MAKE) -C $(DMAI_INSTALL_DIR) PLATFORM=${DMAI_PLATFORM} \
+ CE_INSTALL_DIR_${DMAI_PLATFORM}=$(CE_INSTALL_DIR) \
+ CODEC_INSTALL_DIR_${DMAI_PLATFORM}=$(CODEC_INSTALL_DIR) \
+ LINK_INSTALL_DIR_${DMAI_PLATFORM}=$(LINK_INSTALL_DIR) \
+ CMEM_INSTALL_DIR_${DMAI_PLATFORM}=$(CMEM_INSTALL_DIR) \
+ FC_INSTALL_DIR_${DMAI_PLATFORM}=$(FC_INSTALL_DIR) \
+ LPM_INSTALL_DIR_${DMAI_PLATFORM}=$(LPM_INSTALL_DIR) \
+ XDAIS_INSTALL_DIR_${DMAI_PLATFORM}=$(XDAIS_INSTALL_DIR) \
+ BIOS_INSTALL_DIR_${DMAI_PLATFORM}=$(BIOS_INSTALL_DIR) \
+ LINUXLIBS_INSTALL_DIR_${DMAI_PLATFORM}=$(LINUXLIBS_INSTALL_DIR)\
+ LINUXKERNEL_INSTALL_DIR_${DMAI_PLATFORM}=$(LINUXKERNEL_INSTALL_DIR) \
+ CROSS_COMPILE_${DMAI_PLATFORM}=$(CSTOOL_PREFIX) \
+ XDC_INSTALL_DIR_${DMAI_PLATFORM}=$(XDC_INSTALL_DIR) \
+ EXEC_DIR_${DMAI_PLATFORM}=$(EXEC_DIR) all
+
+ @echo
+ @echo "DMAI applications can be found under $(DMAI_INSTALL_DIR)/packages/ti/sdo/dmai/apps"
+ @echo "To install them to $(EXEC_DIR) enter $(DMAI_INSTALL_DIR) and execute 'make install'"
+
+dmai_clean:
+ $(MAKE) -C $(DMAI_INSTALL_DIR) PLATFORM=${DMAI_PLATFORM} clean
+
+#==============================================================================
+# Build DSP Link for the configured platform. Also, an explicit cleanup target
+# is defined.
+#==============================================================================
+dsplink: dsplink_arm dsplink_dsp dsplink_samples
+
+dsplink_cfg:
+ifneq ($(PLATFORM),dm355)
+ DSPLINK=$(LINK_INSTALL_DIR)/packages/dsplink perl $(LINK_INSTALL_DIR)/packages/dsplink/config/bin/dsplinkcfg.pl $(DSPLINK_CONFIG)
+else
+ $(error DSP Link build is not supported for $(PLATFORM))
+endif
+
+dsplink_arm: dsplink_cfg
+ DSPLINK=$(LINK_INSTALL_DIR)/packages/dsplink $(XDC_INSTALL_DIR)/gmake -C $(LINK_INSTALL_DIR)/packages/dsplink/gpp/src BASE_TOOLCHAIN=$(MVTOOL_DIR) BASE_BUILDOS=$(LINUXKERNEL_INSTALL_DIR)
+ @mkdir -p $(DVSDK_INSTALL_DIR)/kernel_binaries/$(PLATFORM)
+ @cp $(DSPLINK_MODULE) $(DVSDK_INSTALL_DIR)/kernel_binaries/$(PLATFORM)/
+ @echo
+ @echo "dsplinkk.ko kernel module can be found under $(DVSDK_INSTALL_DIR)/kernel_binaries/$(PLATFORM)"
+
+dsplink_dsp: dsplink_cfg
+ DSPLINK=$(LINK_INSTALL_DIR)/packages/dsplink $(XDC_INSTALL_DIR)/gmake -C $(LINK_INSTALL_DIR)/packages/dsplink/dsp/src BASE_SABIOS=$(BIOS_INSTALL_DIR) XDCTOOLS_DIR=$(XDC_INSTALL_DIR) BASE_CGTOOLS=$(CODEGEN_INSTALL_DIR)
+
+dsplink_samples:
+ DSPLINK=$(LINK_INSTALL_DIR)/packages/dsplink $(XDC_INSTALL_DIR)/gmake -C $(LINK_INSTALL_DIR)/packages/dsplink/gpp/src/samples BASE_TOOLCHAIN=$(MVTOOL_DIR) BASE_BUILDOS=$(LINUXKERNEL_INSTALL_DIR)
+ DSPLINK=$(LINK_INSTALL_DIR)/packages/dsplink $(XDC_INSTALL_DIR)/gmake -C $(LINK_INSTALL_DIR)/packages/dsplink/dsp/src/samples BASE_SABIOS=$(BIOS_INSTALL_DIR) XDCTOOLS_DIR=$(XDC_INSTALL_DIR) BASE_CGTOOLS=$(CODEGEN_INSTALL_DIR)
+
+dsplink_clean:
+ DSPLINK=$(LINK_INSTALL_DIR)/packages/dsplink $(XDC_INSTALL_DIR)/gmake -C $(LINK_INSTALL_DIR)/packages/dsplink/gpp/src BASE_TOOLCHAIN=$(MVTOOL_DIR) BASE_BUILDOS=$(LINUXKERNEL_INSTALL_DIR) clean
+ DSPLINK=$(LINK_INSTALL_DIR)/packages/dsplink $(XDC_INSTALL_DIR)/gmake -C $(LINK_INSTALL_DIR)/packages/dsplink/dsp/src BASE_SABIOS=$(BIOS_INSTALL_DIR) XDCTOOLS_DIR=$(XDC_INSTALL_DIR) BASE_CGTOOLS=$(CODEGEN_INSTALL_DIR) clean
+ DSPLINK=$(LINK_INSTALL_DIR)/packages/dsplink $(XDC_INSTALL_DIR)/gmake -C $(LINK_INSTALL_DIR)/packages/dsplink/gpp/src/samples BASE_TOOLCHAIN=$(MVTOOL_DIR) BASE_BUILDOS=$(LINUXKERNEL_INSTALL_DIR) clean
+ DSPLINK=$(LINK_INSTALL_DIR)/packages/dsplink $(XDC_INSTALL_DIR)/gmake -C $(LINK_INSTALL_DIR)/packages/dsplink/dsp/src/samples BASE_SABIOS=$(BIOS_INSTALL_DIR) XDCTOOLS_DIR=$(XDC_INSTALL_DIR) BASE_CGTOOLS=$(CODEGEN_INSTALL_DIR) clean
+
+#==============================================================================
+# Install the built binaries to the target file system.
+#==============================================================================
+install:
+ @echo
+ @echo Creating $(EXEC_DIR)
+ @mkdir -p $(EXEC_DIR)
+
+ @echo Copying kernel modules to target file system: $(EXEC_DIR)/
+ @install -m 666 $(DVSDK_INSTALL_DIR)/kernel_binaries/$(PLATFORM)/* $(EXEC_DIR)/
+
+ @echo Installing DVSDK demos..
+ $(MAKE) -C $(DEMO_INSTALL_DIR)/$(PLATFORM) install
+
+ @echo Copying examples..
+ @cp -rp examples/$(PLATFORM)/web $(EXEC_DIR)/
+ @cp -p examples/$(PLATFORM)/dvevmdemo $(EXEC_DIR)/
+
+ @echo Installing clips..
+ $(MAKE) -C clips install
+
+ifeq ($(PLATFORM),dm6446)
+ @echo Copying codec servers..
+ @install -m 666 $(CODEC_INSTALL_DIR)/packages/ti/sdo/servers/encode/encodeCombo.x64P $(EXEC_DIR)/
+ -@install -m 666 $(CODEC_INSTALL_DIR)/packages/ti/sdo/servers/encode/encodeCombo_e.x64P $(EXEC_DIR)/
+ @install -m 666 $(CODEC_INSTALL_DIR)/packages/ti/sdo/servers/decode/decodeCombo.x64P $(EXEC_DIR)/
+ -@install -m 666 $(CODEC_INSTALL_DIR)/packages/ti/sdo/servers/decode/decodeCombo_e.x64P $(EXEC_DIR)/
+ @install -m 666 $(CODEC_INSTALL_DIR)/packages/ti/sdo/servers/loopback/loopbackCombo.x64P $(EXEC_DIR)/
+ -@install -m 666 $(CODEC_INSTALL_DIR)/packages/ti/sdo/servers/loopback/loopbackCombo_e.x64P $(EXEC_DIR)/
+ @echo Copying dsplinkk.ko
+ @install -m 666 $(LINK_INSTALL_DIR)/packages/dsplink/gpp/export/BIN/Linux/DAVINCI/RELEASE/dsplinkk.ko $(EXEC_DIR)/
+endif
+
+ifeq ($(PLATFORM),dm6467)
+ @echo Copying codec servers..
+ @install -m 666 $(CODEC_INSTALL_DIR)/packages/ti/sdo/servers/encode/encodeCombo.x64P $(EXEC_DIR)/
+ -@install -m 666 $(CODEC_INSTALL_DIR)/packages/ti/sdo/servers/encode/encodeCombo_e.x64P $(EXEC_DIR)/
+ @install -m 666 $(CODEC_INSTALL_DIR)/packages/ti/sdo/servers/decode/decodeCombo.x64P $(EXEC_DIR)/
+ -@install -m 666 $(CODEC_INSTALL_DIR)/packages/ti/sdo/servers/decode/decodeCombo_e.x64P $(EXEC_DIR)/
+ @install -m 666 $(CODEC_INSTALL_DIR)/packages/ti/sdo/servers/loopback/loopbackCombo.x64P $(EXEC_DIR)/
+ -@install -m 666 $(CODEC_INSTALL_DIR)/packages/ti/sdo/servers/loopback/loopbackCombo_e.x64P $(EXEC_DIR)/
+ @echo Copying dsplinkk.ko
+ @install -m 666 $(LINK_INSTALL_DIR)/packages/dsplink/gpp/export/BIN/Linux/DAVINCIHD/RELEASE/dsplinkk.ko $(EXEC_DIR)/
+ @echo Copying mapdmaqhd..
+ @install -m 777 $(DVSDK_INSTALL_DIR)/mapdmaq-hd/mapdmaq-hd $(EXEC_DIR)/
+endif
+
+ifeq ($(PLATFORM),dm355)
+ @echo Copying mapdmaq..
+ @install -m 777 $(DVSDK_INSTALL_DIR)/mapdmaq/mapdmaq $(EXEC_DIR)/
+endif
+
diff --git a/recipes/ti/files/dvsdk-rules/check.sh b/recipes/ti/files/dvsdk-rules/check.sh
new file mode 100755
index 0000000000..8dc4dd4959
--- /dev/null
+++ b/recipes/ti/files/dvsdk-rules/check.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+echo "Checking that components in Rules.make are found:"
+echo
+
+for x in $CHECKLIST
+do
+ if [ ! -e $x ]
+ then
+ echo "WARNING: $x doesn't exist, check your Rules.make.."
+ fi
+done
+
+echo "Done checking! If no warning messages above, all components are found.."
+
+echo
diff --git a/recipes/ti/files/dvsdk-rules/info.sh b/recipes/ti/files/dvsdk-rules/info.sh
new file mode 100755
index 0000000000..59d36149cf
--- /dev/null
+++ b/recipes/ti/files/dvsdk-rules/info.sh
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+echo "Listing information about the DVSDK components:"
+echo
+
+if [ ! -e $XDC_INSTALL_DIR ]
+then
+ echo "Fatal!: XDC tools not found in $XDC_INSTALL_DIR, check Rules.make.."
+ echo "Aborting!"
+ exit
+fi
+
+for x in $REPOSITORIES
+do
+ echo "*******************************************************************************"
+ echo "Listing package information for repository:"
+ echo $x
+ echo
+ XDC_PATH="$XDC_INSTALL_DIR" $XDC_INSTALL_DIR/xs xdc.tools.path -Pr $x
+done
+
+echo "*******************************************************************************"
+if [ -e $LINUXKERNEL_INSTALL_DIR ]
+then
+ echo "Using Linux kernel from:"
+ echo $LINUXKERNEL_INSTALL_DIR
+else
+ echo "WARNING: Linux kernel not found:"
+ echo $LINUXKERNEL_INSTALL_DIR
+fi
+echo
+
+echo "*******************************************************************************"
+echo "TI c6x codegen tool version:"
+echo $CODEGEN_INSTALL_DIR/bin/cl6x
+echo
+if [ -f $CODEGEN_INSTALL_DIR/bin/cl6x ]
+then
+ $CODEGEN_INSTALL_DIR/bin/cl6x -version
+else
+ echo "WARNING: TI codegen not found!"
+ echo
+fi
+
+echo
+echo "*******************************************************************************"
+echo "GCC compiler version:"
+echo "$GCC_PREFIX"gcc
+echo
+if [ -f "$GCC_PREFIX"gcc ]
+then
+ "$GCC_PREFIX"gcc --version
+else
+ echo "WARNING: gcc tool chain not found!"
+ echo
+fi
+
+echo
diff --git a/recipes/ti/files/gstreamer-ti-tracker-824.patch b/recipes/ti/files/gstreamer-ti-tracker-824.patch
new file mode 100644
index 0000000000..852e60adbc
--- /dev/null
+++ b/recipes/ti/files/gstreamer-ti-tracker-824.patch
@@ -0,0 +1,125 @@
+diff -uNr ticodecplugin/src/gstticodecplugin_omap3530.cfg ticodecplugin.new/src/gstticodecplugin_omap3530.cfg
+--- ticodecplugin/src/gstticodecplugin_omap3530.cfg 2009-06-10 17:29:59.000000000 -0500
++++ ticodecplugin.new/src/gstticodecplugin_omap3530.cfg 2009-08-07 16:17:24.000000000 -0500
+@@ -12,8 +12,6 @@
+ *
+ */
+
+-prog.build.platform = "ti.platforms.evm3530";
+-
+ /* Load the Codec Engine 'Operating System Abstraction Layer' */
+ var osalGlobal = xdc.useModule('ti.sdo.ce.osal.Global');
+
+@@ -27,21 +25,15 @@
+ /*
+ * ======== Engine Configuration ========
+ */
+-var Engine = xdc.useModule('ti.sdo.ce.Engine');
+-var encEngine = Engine.createFromServer(
+- "encode",
+- "./encodeCombo.x64P",
+- "ti.sdo.servers.encode"
+- );
+-var decEngine = Engine.createFromServer(
+- "decode",
+- "./decodeCombo.x64P",
+- "ti.sdo.servers.decode"
++var Engine = xdc.useModule('ti.sdo.ce.Engine');
++var demoEngine = Engine.createFromServer(
++ "codecServer",
++ "./bin/cs.x64P",
++ "ti.sdo.server.cs"
+ );
+
+ /* Load support for the DMAI module */
+ var DMAI = xdc.loadPackage('ti.sdo.dmai');
+
+-/* Load support for user space DMA */
+-var SCPY = xdc.useModule("ti.sdo.fc.scpy.SCPY");
+-var SDMA = xdc.useModule("ti.sdo.linuxutils.sdma.SDMA");
++var SCPY = xdc.useModule('ti.sdo.fc.scpy.SCPY');
++var SDMA = xdc.useModule('ti.sdo.linuxutils.sdma.SDMA');
+diff -uNr ticodecplugin/src/gstticodecs_omap3530.c ticodecplugin.new/src/gstticodecs_omap3530.c
+--- ticodecplugin/src/gstticodecs_omap3530.c 2009-06-10 17:29:59.000000000 -0500
++++ ticodecplugin.new/src/gstticodecs_omap3530.c 2009-08-07 16:17:24.000000000 -0500
+@@ -22,8 +22,7 @@
+ #include "gstticodecs.h"
+
+ /* Declaration of the production engine and decoders shipped with the DVSDK */
+-static Char decodeEngine[] = "decode";
+-static Char encodeEngine[] = "encode";
++static Char codecServer[] = "codecServer";
+
+ /* NULL terminated list of speech decoders in the engine to use in the demo */
+ GstTICodec gst_ticodec_codecs[] = {
+@@ -32,59 +31,55 @@
+ {
+ "AAC Audio Decoder", /* String name of codec used by plugin */
+ "aachedec", /* String name of codec used by CE */
+- decodeEngine /* Engine that contains this codec */
++ codecServer /* Engine that contains this codec */
+ }, {
+ "MPEG1L2 Audio Decoder", /* String name of codec used by plugin */
+ "mp3dec", /* String name of codec used by CE */
+- decodeEngine /* Engine that contains this codec */
++ codecServer /* Engine that contains this codec */
+ }, {
+ "MPEG1L3 Audio Decoder", /* String name of codec used by plugin */
+ "mp3dec", /* String name of codec used by CE */
+- decodeEngine /* Engine that contains this codec */
+- }, {
+- "WMA Audio Decoder", /* String name of codec used by plugin */
+- "wmadec", /* String name of codec used by CE */
+- decodeEngine /* Engine that contains this codec */
++ codecServer /* Engine that contains this codec */
+ },
+-
++
+ /* Video Decoders */
+ {
+ "H.264 Video Decoder", /* String name of codec used by plugin */
+ "h264dec", /* String name of codec used by CE */
+- decodeEngine /* Engine that contains this codec */
++ codecServer /* Engine that contains this codec */
+ }, {
+ "MPEG4 Video Decoder", /* String name of codec used by plugin */
+ "mpeg4dec", /* String name of codec used by CE */
+- decodeEngine /* Engine that contains this codec */
++ codecServer /* Engine that contains this codec */
+ }, {
+ "MPEG2 Video Decoder", /* String name of codec used by plugin */
+ "mpeg2dec", /* String name of codec used by CE */
+- decodeEngine /* Engine that contains this codec */
++ codecServer /* Engine that contains this codec */
+ },
+
+ /* Image Decoders */
+ {
+ "JPEG Image Decoder", /* String name of codec used by plugin */
+ "jpegdec", /* String name of codec used by CE */
+- decodeEngine /* Engine that contains this codec */
++ codecServer /* Engine that contains this codec */
+ },
+
+ /* Video Encoders */
+ {
+ "H.264 Video Encoder", /* String name of codec used by plugin */
+ "h264enc", /* String name of codec used by CE */
+- encodeEngine /* Engine that contains this codec */
++ codecServer /* Engine that contains this codec */
+ }, {
+ "MPEG4 Video Encoder", /* String name of codec used by plugin */
+ "mpeg4enc", /* String name of codec used by CE */
+- encodeEngine /* Engine that contains this codec */
++ codecServer /* Engine that contains this codec */
+ },
+
+ /* Image Encoders */
+ {
+ "JPEG Image Encoder", /* String name of codec used by plugin */
+ "jpegenc", /* String name of codec used by CE */
+- encodeEngine /* Engine that contains this codec */
++ codecServer /* Engine that contains this codec */
+ },
+
+ { NULL }
diff --git a/recipes/ti/files/loadmodules-ti-codec-engine-apps.sh b/recipes/ti/files/loadmodules-ti-codec-engine-apps.sh
new file mode 100644
index 0000000000..9f9233d12b
--- /dev/null
+++ b/recipes/ti/files/loadmodules-ti-codec-engine-apps.sh
@@ -0,0 +1,37 @@
+#
+# Default Memory Map - for OMAP3530 CE 2.21 examples
+#
+# Start Addr Size Description
+# -------------------------------------------
+# 0x80000000 80 MB Linux
+# 0x85000000 08 MB CMEM
+# 0x86000000 24 MB DDRALGHEAP
+# 0x87800000 6 MB DDR2 (BIOS, Codecs, Applications)
+# 0x87E00000 1 MB DSPLINK (MEM)
+# 0x87F00000 4 KB DSPLINK (RESET)
+# 0x87F01000 1020 KB unused
+
+# sanity check to verify that we're using the right mem=xxM (80M in this case)
+awk '/MemTotal:/ {
+ mem=$2
+
+ if (mem > 80 * 1024)
+ print "Warning! You need to use mem=80M or less on the kernel cmdline"
+
+ printf "You have %dkB total memory for Linux\n", mem
+}' /proc/meminfo
+
+# Select cmemk parameters for best fit, i.e. starting at 0x85000000
+modprobe cmemk phys_start=0x85000000 phys_end=0x86000000 pools=20x4096,8x131072,5x1048576,1x1429440,1x256000,1x3600000,5x829440
+
+# insert DSP/BIOS Link driver
+#
+modprobe dsplinkk
+
+# make /dev/dsplink
+#rm -f /dev/dsplink
+#mknod /dev/dsplink c `awk "\\$2==\"dsplink\" {print \\$1}" /proc/devices` 0
+
+# insert Local Power Manager driver
+#
+modprobe lpm_omap3530
diff --git a/recipes/ti/files/loadmodules-ti-dmai-apps.sh b/recipes/ti/files/loadmodules-ti-dmai-apps.sh
new file mode 100755
index 0000000000..7120b74483
--- /dev/null
+++ b/recipes/ti/files/loadmodules-ti-dmai-apps.sh
@@ -0,0 +1,37 @@
+#
+# Default Memory Map - for OMAP3530 dvsdk examples from 3.00.00.29 - this memory map is used for DMAI apps
+#
+# Start Addr Size Description
+# -------------------------------------------
+# 0x80000000 88 MB Linux
+# 0x85800000 08 MB CMEM
+# 0x86800000 16 MB DDRALGHEAP
+# 0x87800000 6 MB DDR2 (BIOS, Codecs, Applications)
+# 0x87E00000 1 MB DSPLINK (MEM)
+# 0x87F00000 4 KB DSPLINK (RESET)
+# 0x87F01000 1020 KB unused
+
+# sanity check to verify that we're using the right mem=xxM (88M in this case)
+awk '/MemTotal:/ {
+ mem=$2
+
+ if (mem > 88 * 1024)
+ print "Warning! You need to use mem=88M or less on the kernel cmdline"
+
+ printf "You have %dkB total memory for Linux\n", mem
+}' /proc/meminfo
+
+# Select cmemk parameters for best fit, i.e. starting at 0x85000000
+modprobe cmemk phys_start=0x85800000 phys_end=0x86800000 pools=20x4096,8x131072,5x1048576,1x1429440,1x256000,1x3600000,5x829440
+
+# insert DSP/BIOS Link driver
+#
+modprobe dsplinkk
+
+# make /dev/dsplink
+#rm -f /dev/dsplink
+#mknod /dev/dsplink c `awk "\\$2==\"dsplink\" {print \\$1}" /proc/devices` 0
+
+# insert Local Power Manager driver
+#
+modprobe lpm_omap3530
diff --git a/recipes/ti/files/loadmodules-ti-dmai-dm355_al.sh b/recipes/ti/files/loadmodules-ti-dmai-dm355_al.sh
new file mode 100755
index 0000000000..ca357e2095
--- /dev/null
+++ b/recipes/ti/files/loadmodules-ti-dmai-dm355_al.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+#
+# loadmodules.sh
+#
+# Copyright (C) $year Texas Instruments Incorporated - http://www.ti.com/
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation version 2.1 of the License.
+#
+# This program is distributed #as is# WITHOUT ANY WARRANTY of any kind,
+# whether express or implied; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+# 12MB
+modprobe cmemk phys_start=0x87400000 phys_end=0x88000000 pools=1x2903040,1x1529856,7x829440,1x524288,1x108680,1x81920,2x8192,6x4096
+
+./mapdmaq
+
+modprobe dm350mmap
+rm -f /dev/dm350mmap
+mknod /dev/dm350mmap c `awk "\\$2==\"dm350mmap\" {print \\$1}" /proc/devices` 0
diff --git a/recipes/ti/files/loadmodules-ti-dmai-dm6446_al.sh b/recipes/ti/files/loadmodules-ti-dmai-dm6446_al.sh
new file mode 100755
index 0000000000..b4a230d590
--- /dev/null
+++ b/recipes/ti/files/loadmodules-ti-dmai-dm6446_al.sh
@@ -0,0 +1,19 @@
+#
+# loadmodules.sh
+#
+# Copyright (C) $year Texas Instruments Incorporated - http://www.ti.com/
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation version 2.1 of the License.
+#
+# This program is distributed #as is# WITHOUT ANY WARRANTY of any kind,
+# whether express or implied; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+modprobe cmemk phys_start=0x87800000 phys_end=0x88E00000 pools=20x4096,8x202752,10x131072,2x1048576,1x2097152,10x829440,1x6750000
+modprobe dsplinkk ddr_start=0x8F800000 ddr_size=0x600000
+
+rm -rf /dev/dsplink
+mknod /dev/dsplink c `awk "\\$2==\"dsplink\" {print \\$1}" /proc/devices` 0
diff --git a/recipes/ti/files/loadmodules-ti-dmai-o3530_al.sh b/recipes/ti/files/loadmodules-ti-dmai-o3530_al.sh
new file mode 100755
index 0000000000..076af07223
--- /dev/null
+++ b/recipes/ti/files/loadmodules-ti-dmai-o3530_al.sh
@@ -0,0 +1,42 @@
+# loadmodules.sh
+#
+# Copyright (C) $year Texas Instruments Incorporated - http://www.ti.com/
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation version 2.1 of the License.
+#
+# This program is distributed #as is# WITHOUT ANY WARRANTY of any kind,
+# whether express or implied; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+#
+# Default Memory Map
+#
+# Start Addr Size Description
+# -------------------------------------------
+# 0x80000000 88 MB Linux
+# 0x85800000 08 MB CMEM
+# 0x86800000 24 MB DDRALGHEAP
+# 0x87800000 6 MB DDR2 (BIOS, Codecs, Applications)
+# 0x87E00000 1 MB DSPLINK (MEM)
+# 0x87F00000 4 KB DSPLINK (RESET)
+# 0x87F01000 1020 KB unused
+
+modprobe cmemk phys_start=0x85800000 phys_end=0x86800000 pools=20x4096,8x131072,4x829440,1x5250000,1x1429440,1x256000
+
+
+# insert DSP/BIOS Link driver
+#
+modprobe dsplinkk
+
+# make /dev/dsplink
+rm -f /dev/dsplink
+mknod /dev/dsplink c `awk "\\$2==\"dsplink\" {print \\$1}" /proc/devices` 0
+
+
+# insert Local Power Manager driver
+#
+modprobe lpm_omap3530
+
diff --git a/recipes/ti/files/loadmodules-ti-dsplink-apps.sh b/recipes/ti/files/loadmodules-ti-dsplink-apps.sh
new file mode 100644
index 0000000000..9cfb19d5c1
--- /dev/null
+++ b/recipes/ti/files/loadmodules-ti-dsplink-apps.sh
@@ -0,0 +1,25 @@
+#
+# Default Memory Map - for OMAP3530 dsplink examples
+#
+# Start Addr Size Description
+# -------------------------------------------
+# 0x80000000 126 MB Linux
+# 0x87E00000 2 MB DSPLINK (MEM) + DDR + DSPLINK (RESET)
+
+# sanity check to verify that we're using the right mem=xxM (126M in this case)
+awk '/MemTotal:/ {
+ mem=$2
+
+ if (mem > 126 * 1024)
+ print "Warning! You need to use mem=126M or less on the kernel cmdline"
+
+ printf "You have %dkB total memory for Linux\n", mem
+}' /proc/meminfo
+
+# insert DSP/BIOS Link driver
+#
+modprobe dsplinkk
+
+# make /dev/dsplink
+#rm -f /dev/dsplink
+#mknod /dev/dsplink c `awk "\\$2==\"dsplink\" {print \\$1}" /proc/devices` 0
diff --git a/recipes/ti/files/lpm-device-create-and-semaphore-include-fix.patch b/recipes/ti/files/lpm-device-create-and-semaphore-include-fix.patch
new file mode 100644
index 0000000000..a3bc2b14a6
--- /dev/null
+++ b/recipes/ti/files/lpm-device-create-and-semaphore-include-fix.patch
@@ -0,0 +1,121 @@
+diff -uNr codec_engine_2_21/cetools/packages/ti/bios/power/modules/omap3530/lpm/lpm_driver.c codec_engine_2_21_fix/cetools/packages/ti/bios/power/modules/omap3530/lpm/lpm_driver.c
+--- codec_engine_2_21/cetools/packages/ti/bios/power/modules/omap3530/lpm/lpm_driver.c 2008-11-05 00:18:39.000000000 +0000
++++ codec_engine_2_21_fix/cetools/packages/ti/bios/power/modules/omap3530/lpm/lpm_driver.c 2009-02-13 00:16:50.000000000 +0000
+@@ -225,6 +225,9 @@
+ .os_wait = lpm_os_wait,
+ .os_trace = lpm_os_trace,
+ };
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
++ char lpm_tempDeviceCreateName[50];
++#endif
+
+ TRACE(KERN_ALERT "lpm.ko: + lpm_init\n");
+
+@@ -286,9 +289,16 @@
+ MKDEV(lpm->inst[i].major, lpm->inst[i].minor),
+ NULL, "lpm%d", lpm->inst[i].minor);
+ #else
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
++ sprintf(lpm_tempDeviceCreateName, "lpm%d", lpm->inst[i].minor);
++ device_create(lpm->lpm_class, NULL,
++ MKDEV(lpm->inst[i].major, lpm->inst[i].minor),
++ NULL, lpm_tempDeviceCreateName);
++#else
+ device_create(lpm->lpm_class, NULL,
+ MKDEV(lpm->inst[i].major, lpm->inst[i].minor),
+ "lpm%d", lpm->inst[i].minor);
++#endif /* LINUX_VERSION */
+ #endif
+ }
+
+diff -uNr codec_engine_2_21/cetools/packages/ti/bios/power/modules/omap2530/lpm/lpm_driver.c codec_engine_2_21_fix/cetools/packages/ti/bios/power/modules/omap2530/lpm/lpm_driver.c
+--- codec_engine_2_21/cetools/packages/ti/bios/power/modules/omap2530/lpm/lpm_driver.c 2008-11-05 00:18:39.000000000 +0000
++++ codec_engine_2_21_fix/cetools/packages/ti/bios/power/modules/omap2530/lpm/lpm_driver.c 2009-02-13 00:16:50.000000000 +0000
+@@ -225,6 +225,9 @@
+ .os_wait = lpm_os_wait,
+ .os_trace = lpm_os_trace,
+ };
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
++ char lpm_tempDeviceCreateName[50];
++#endif
+
+ TRACE(KERN_ALERT "lpm.ko: + lpm_init\n");
+
+@@ -286,9 +289,16 @@
+ MKDEV(lpm->inst[i].major, lpm->inst[i].minor),
+ NULL, "lpm%d", lpm->inst[i].minor);
+ #else
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
++ sprintf(lpm_tempDeviceCreateName, "lpm%d", lpm->inst[i].minor);
++ device_create(lpm->lpm_class, NULL,
++ MKDEV(lpm->inst[i].major, lpm->inst[i].minor),
++ NULL, lpm_tempDeviceCreateName);
++#else
+ device_create(lpm->lpm_class, NULL,
+ MKDEV(lpm->inst[i].major, lpm->inst[i].minor),
+ "lpm%d", lpm->inst[i].minor);
++#endif /* LINUX_VERSION */
+ #endif
+ }
+
+diff -uNr codec_engine_2_21/cetools/packages/ti/bios/power/modules/dm357/lpm/lpm_driver.c codec_engine_2_21_fix/cetools/packages/ti/bios/power/modules/dm357/lpm/lpm_driver.c
+--- codec_engine_2_21/cetools/packages/ti/bios/power/modules/dm357/lpm/lpm_driver.c 2008-11-05 00:18:39.000000000 +0000
++++ codec_engine_2_21_fix/cetools/packages/ti/bios/power/modules/dm357/lpm/lpm_driver.c 2009-02-13 00:16:50.000000000 +0000
+@@ -225,6 +225,9 @@
+ .os_wait = lpm_os_wait,
+ .os_trace = lpm_os_trace,
+ };
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
++ char lpm_tempDeviceCreateName[50];
++#endif
+
+ TRACE(KERN_ALERT "lpm.ko: + lpm_init\n");
+
+@@ -286,9 +289,16 @@
+ MKDEV(lpm->inst[i].major, lpm->inst[i].minor),
+ NULL, "lpm%d", lpm->inst[i].minor);
+ #else
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
++ sprintf(lpm_tempDeviceCreateName, "lpm%d", lpm->inst[i].minor);
++ device_create(lpm->lpm_class, NULL,
++ MKDEV(lpm->inst[i].major, lpm->inst[i].minor),
++ NULL, lpm_tempDeviceCreateName);
++#else
+ device_create(lpm->lpm_class, NULL,
+ MKDEV(lpm->inst[i].major, lpm->inst[i].minor),
+ "lpm%d", lpm->inst[i].minor);
++#endif /* LINUX_VERSION */
+ #endif
+ }
+
+diff -uNr codec_engine_2_21/cetools/packages/ti/bios/power/modules/dm6446/lpm/lpm_driver.c codec_engine_2_21_fix/cetools/packages/ti/bios/power/modules/dm6446/lpm/lpm_driver.c
+--- codec_engine_2_21/cetools/packages/ti/bios/power/modules/dm6446/lpm/lpm_driver.c 2008-11-05 00:18:39.000000000 +0000
++++ codec_engine_2_21_fix/cetools/packages/ti/bios/power/modules/dm6446/lpm/lpm_driver.c 2009-02-13 00:16:50.000000000 +0000
+@@ -225,6 +225,9 @@
+ .os_wait = lpm_os_wait,
+ .os_trace = lpm_os_trace,
+ };
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
++ char lpm_tempDeviceCreateName[50];
++#endif
+
+ TRACE(KERN_ALERT "lpm.ko: + lpm_init\n");
+
+@@ -286,9 +289,16 @@
+ MKDEV(lpm->inst[i].major, lpm->inst[i].minor),
+ NULL, "lpm%d", lpm->inst[i].minor);
+ #else
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
++ sprintf(lpm_tempDeviceCreateName, "lpm%d", lpm->inst[i].minor);
++ device_create(lpm->lpm_class, NULL,
++ MKDEV(lpm->inst[i].major, lpm->inst[i].minor),
++ NULL, lpm_tempDeviceCreateName);
++#else
+ device_create(lpm->lpm_class, NULL,
+ MKDEV(lpm->inst[i].major, lpm->inst[i].minor),
+ "lpm%d", lpm->inst[i].minor);
++#endif /* LINUX_VERSION */
+ #endif
+ }
+
+
diff --git a/recipes/ti/files/lpm-make-symbol-warnings-fix.patch b/recipes/ti/files/lpm-make-symbol-warnings-fix.patch
new file mode 100644
index 0000000000..031a16022f
--- /dev/null
+++ b/recipes/ti/files/lpm-make-symbol-warnings-fix.patch
@@ -0,0 +1,117 @@
+diff -uNr codec_engine_2_21/cetools/packages/ti/bios/power/modules/omap3530/lpm/Makefile codec_engine_2_21_fix/cetools/packages/ti/bios/power/modules/omap3530/lpm/Makefile
+--- codec_engine_2_21/cetools/packages/ti/bios/power/modules/omap3530/lpm/Makefile 2008-11-05 00:38:57.000000000 +0000
++++ codec_engine_2_21_fix/cetools/packages/ti/bios/power/modules/omap3530/lpm/Makefile 2009-02-17 23:53:08.000000000 +0000
+@@ -1,5 +1,5 @@
+-#
+-# Copyright 2008 by Texas Instruments Incorporated.
++# --COPYRIGHT--,GPL
++# Copyright $(CPYYEAR) by Texas Instruments Incorporated.
+ #
+ # This program is free software: you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -12,31 +12,34 @@
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with this program. If not, see <http://www.gnu.org/licenses/>
+-#
++# --/COPYRIGHT--
+ #
+
+ #
+ # This makefile will build the lpm_omap3530.ko driver.
+ #
+
++# If KERNELRELEASE is undefined, then this makefile has been invoked
++# directly from the command line. Invoke the kernel build system.
++ifeq ($(KERNELRELEASE),)
++
++
+ # Update these macros to reflect you environment.
+ #
+-# KERNEL_DIR = the Linux kernel source directory
+-# TOOL_PREFIX = the toolchain directory and decorated name prefix
++# LINUXKERNEL_INSTALL_DIR = the Linux kernel source directory
++# MVTOOL_PREFIX = the toolchain directory and decorated name prefix
+ # DSPLINK_REPO = the repository which contains DSP/BIOS LINK
+-# DSPLINK_BLD = the DSP/BIOS LINK build variant
+ #
+-KERNEL_DIR = /db/toolsrc/library/toolsC38/vendors/mvl/arm/omap3/OMAP35x_SDK_0.9.7/src/linux/kernel_org/2.6_kernel
+-TOOL_PREFIX = /db/toolsrc/library/toolsC38/vendors/cs/arm/arm-2007q3/bin/arm-none-linux-gnueabi-
+-DSPLINK_REPO = /db/atree/library/trees/power/power-d04x/imports
+-DSPLINK_BLD = Linux/OMAP3530/RELEASE
++LINUXKERNEL_INSTALL_DIR := _your_kernel_installation_
++MVTOOL_PREFIX := _your_codegen_installation_and_name_prefix_
++DSPLINK_REPO := _your_dsplink_repository_
+
+ # Set PROFILE to DEBUG or RELEASE
+ PROFILE = RELEASE
+
+ # Process DSPLINK flags
+ LINK_DIR = $(DSPLINK_REPO)/dsplink
+-LINK_PATH = $(LINK_DIR)/gpp/export/BIN/$(DSPLINK_BLD)
++LINK_PATH = $(LINK_DIR)/gpp/export/BIN/Linux/OMAP3530/RELEASE
+ LINK_ORIG := $(shell cat $(LINK_PATH)/DSPLINK.txt)
+ LINK_DEFS := $(shell cat $(LINK_PATH)/PMGR_defines.txt)
+ LINK_INCS := $(shell cat $(LINK_PATH)/PMGR_includes.txt)
+@@ -53,20 +56,11 @@
+ # add internal header files
+ LINK_INCS_INTERNAL = -I$(LINK_DIR)/gpp/export/INCLUDE/Linux/OMAP3530/internal
+
++ifneq ($(wildcard $(LINK_PATH)/Module.symvers),)
++EXTRA_SYMBOLS = $(LINK_PATH)/Module.symvers
++endif
+
+-# If KERNELRELEASE is defined, then this makefile has been invoked
+-# from the kernel build system. Use native build language.
+-ifneq ($(KERNELRELEASE),)
+-
+-obj-m := lpm_omap3530.o
+-lpm_omap3530-objs := lpm_driver.o lpm_omap.o tal_dsplink_gpp.o
+-
+-
+-# Otherwise, this makefile has been invoked directly from the
+-# command line. Invoke the kernel build system.
+-else
+-
+-MAKE_OPTS = ARCH=arm CROSS_COMPILE=$(TOOL_PREFIX)
++MAKE_OPTS = ARCH=arm CROSS_COMPILE=$(MVTOOL_PREFIX)
+ CFLAGS = -DUSE_UDEV -DOS_LINUX -DLINUX_KERNEL -D$(PROFILE) \
+ $(LINK_DEFS) $(LINK_INCS) $(LINK_INCS_INTERNAL)
+
+@@ -74,19 +68,28 @@
+ CFLAGS := -g $(CFLAGS)
+ endif
+
+-
++# Invoke the kernel build system
+ default:
+- $(MAKE) -C $(KERNEL_DIR) M=$(CURDIR) $(MAKE_OPTS) \
++ifneq ($(EXTRA_SYMBOLS),)
++ rm -f Module.symvers
++ cat $(foreach file, $(EXTRA_SYMBOLS), $(file)) >> Module.symvers
++endif
++ $(MAKE) -C $(LINUXKERNEL_INSTALL_DIR) M=$(CURDIR) $(MAKE_OPTS) \
+ EXTRA_CFLAGS="$(CFLAGS)" modules
+
+ .clean:
+- $(MAKE) -C $(KERNEL_DIR) M=$(CURDIR) $(MAKE_OPTS) clean
++ $(MAKE) -C $(LINUXKERNEL_INSTALL_DIR) M=$(CURDIR) $(MAKE_OPTS) clean
++ rm -f modules.order
+
+ .help:
+- $(MAKE) -C $(KERNEL_DIR) M=$(CURDIR) help
++ $(MAKE) -C $(LINUXKERNEL_INSTALL_DIR) M=$(CURDIR) help
+
+-endif
+-#
+-# @(#) ti.bios.power; 1, 1, 0,1; 11-5-2008 16:38:57; /db/atree/library/trees/power/power-d04x/src/
+-#
+
++# If KERNELRELEASE is defined, then this makefile has been invoked
++# from the kernel build system. Use native build language.
++else
++
++obj-m := lpm_omap3530.o
++lpm_omap3530-objs := lpm_driver.o lpm_omap.o tal_dsplink_gpp.o
++
++endif
diff --git a/recipes/ti/files/mapdmaq b/recipes/ti/files/mapdmaq
new file mode 100755
index 0000000000..5c11bc3141
--- /dev/null
+++ b/recipes/ti/files/mapdmaq
Binary files differ
diff --git a/recipes/ti/files/sdma-class-device-and-includes-fix.patch b/recipes/ti/files/sdma-class-device-and-includes-fix.patch
new file mode 100644
index 0000000000..2dcc7a3b7e
--- /dev/null
+++ b/recipes/ti/files/sdma-class-device-and-includes-fix.patch
@@ -0,0 +1,59 @@
+diff -uNr codec_engine_2_21/cetools/packages/ti/sdo/linuxutils/sdma/src/module/sdmak.c codec_engine_2_21_fix/cetools/packages/ti/sdo/linuxutils/sdma/src/module/sdmak.c
+--- codec_engine_2_21/cetools/packages/ti/sdo/linuxutils/sdma/src/module/sdmak.c 2009-02-20 14:49:41.000000000 +0000
++++ codec_engine_2_21_fix/cetools/packages/ti/sdo/linuxutils/sdma/src/module/sdmak.c 2009-02-20 15:07:59.000000000 +0000
+@@ -17,6 +17,7 @@
+ /*
+ * sdmak.c
+ */
++#include <linux/version.h>
+ #include <linux/kernel.h>
+ #include <linux/sched.h>
+ #include <linux/module.h>
+@@ -32,14 +33,20 @@
+ #include <linux/irq.h>
+ #include <linux/highmem.h>
+ #include <linux/pagemap.h>
+-
+-#include <asm/arch/dma.h>
+ #include <asm/uaccess.h>
+ #include <asm/system.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)
++#include <asm/arch/dma.h>
+ #include <asm/hardware.h>
+ #include <asm/dma.h>
+-#include <asm/io.h>
+ #include <asm/arch/tc.h>
++#else
++#include <asm/dma.h>
++#include <mach/hardware.h>
++#include <mach/dma.h>
++#include <mach/tc.h>
++#endif
++#include <asm/io.h>
+
+ #include "../interface/sdma.h"
+
+@@ -229,7 +236,11 @@
+ __D("sdma registered major = %d\n", major);
+
+ dma_class = class_create(THIS_MODULE, "sdma");
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)
+ class_device_create(dma_class, NULL, MKDEV(major, 0), NULL, "sdma");
++#else
++ device_create(dma_class, NULL, MKDEV(major, 0), NULL, "sdma");
++#endif
+
+ for (channel = 0; channel < SDMA_NUMCHANNELS; channel++) {
+ channels[channel].owner = NULL;
+@@ -248,7 +259,11 @@
+ omap_free_dma(channel);
+ }
+ }
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)
+ class_device_destroy(dma_class, MKDEV(major, 0));
++#else
++ device_destroy(dma_class, MKDEV(major, 0));
++#endif
+ class_destroy(dma_class);
+ unregister_chrdev(major, "sdma");
+
diff --git a/recipes/ti/files/unloadmodules-ti-codec-engine-apps.sh b/recipes/ti/files/unloadmodules-ti-codec-engine-apps.sh
new file mode 100644
index 0000000000..f990d99771
--- /dev/null
+++ b/recipes/ti/files/unloadmodules-ti-codec-engine-apps.sh
@@ -0,0 +1,12 @@
+# Unload modules - CODEC ENGINE - OMAP3530
+
+# remove lpm module
+rmmod lpm_omap3530
+
+# remove DSP/BIOS Link driver
+rmmod dsplinkk
+#rm -f /dev/dsplink
+
+# remove cmem module
+rmmod cmemk
+
diff --git a/recipes/ti/files/unloadmodules-ti-dmai-apps.sh b/recipes/ti/files/unloadmodules-ti-dmai-apps.sh
new file mode 100755
index 0000000000..793d727f39
--- /dev/null
+++ b/recipes/ti/files/unloadmodules-ti-dmai-apps.sh
@@ -0,0 +1,12 @@
+# Unload modules - DMAI - OMAP3530
+
+# remove lpm module
+rmmod lpm_omap3530
+
+# remove DSP/BIOS Link driver
+rmmod dsplinkk
+#rm -f /dev/dsplink
+
+# remove cmem module
+rmmod cmemk
+
diff --git a/recipes/ti/files/unloadmodules-ti-dsplink-apps.sh b/recipes/ti/files/unloadmodules-ti-dsplink-apps.sh
new file mode 100644
index 0000000000..48fa84b03d
--- /dev/null
+++ b/recipes/ti/files/unloadmodules-ti-dsplink-apps.sh
@@ -0,0 +1,5 @@
+# Unload modules - DSPLINK - OMAP3530
+
+# remove DSP/BIOS Link driver
+rmmod dsplinkk
+#rm -f /dev/dsplink
diff --git a/recipes/ti/gstreamer-ti/codec_combo_directory_fix.patch b/recipes/ti/gstreamer-ti/codec_combo_directory_fix.patch
new file mode 100644
index 0000000000..7c03641707
--- /dev/null
+++ b/recipes/ti/gstreamer-ti/codec_combo_directory_fix.patch
@@ -0,0 +1,52 @@
+From: Vishnudas P <vishnudas@gmail.com>
+
+Found the fix here.
+http://wiki.davincidsp.com/index.php?title=Configuring_Codec_Engine_in_Arm_apps_with_createFromServer
+In the section "Advanced: overwriting fields, creating multiple engines"
+
+Needed tor reverse the previous patch 263 and apply the attached patch.
+
+When you call createFromServer the path you give is relative to
+package, not the filesystem one. For that you need to set
+"engine.server" to the desired full filesystem path.
+This is what the attached patch does.
+
+--
+
+
+diff -Naur ticodecplugin.orig/src/gstticodecplugin_dm6446.cfg ticodecplugin/src/gstticodecplugin_dm6446.cfg
+--- ticodecplugin.orig/src/gstticodecplugin_dm6446.cfg 2009-07-21 12:55:32.000000000 -0700
++++ ticodecplugin/src/gstticodecplugin_dm6446.cfg 2009-07-21 12:55:26.000000000 -0700
+@@ -38,6 +38,8 @@
+ "./encodeCombo.x64P",
+ "ti.sdo.servers.encode"
+ );
++codecServer.server = "/usr/share/ti-codec-combos/cs.x64P";
++
+
+ /* Load support for the 'Davinci Multimedia Application Interface' modules */
+ var DMAI = xdc.loadPackage('ti.sdo.dmai');
+diff -Naur ticodecplugin.orig/src/gstticodecplugin_dm6467.cfg ticodecplugin/src/gstticodecplugin_dm6467.cfg
+--- ticodecplugin.orig/src/gstticodecplugin_dm6467.cfg 2009-07-21 12:55:32.000000000 -0700
++++ ticodecplugin/src/gstticodecplugin_dm6467.cfg 2009-07-21 12:55:26.000000000 -0700
+@@ -39,6 +39,8 @@
+ "./encodeCombo.x64P",
+ "ti.sdo.servers.encode"
+ );
++codecServer.server = "/usr/share/ti-codec-combos/cs.x64P";
++
+
+ /* Load support for the 'Davinci Multimedia Application Interface' modules */
+ var DMAI = xdc.loadPackage('ti.sdo.dmai');
+diff -Naur ticodecplugin.orig/src/gstticodecplugin_omap3530.cfg ticodecplugin/src/gstticodecplugin_omap3530.cfg
+--- ticodecplugin.orig/src/gstticodecplugin_omap3530.cfg 2009-07-21 12:55:32.000000000 -0700
++++ ticodecplugin/src/gstticodecplugin_omap3530.cfg 2009-07-21 12:55:26.000000000 -0700
+@@ -38,6 +38,8 @@
+ "./decodeCombo.x64P",
+ "ti.sdo.servers.decode"
+ );
++codecServer.server = "/usr/share/ti-codec-combos/cs.x64P";
++
+
+ /* Load support for the DMAI module */
+ var DMAI = xdc.loadPackage('ti.sdo.dmai');
diff --git a/recipes/ti/gstreamer-ti/gst-buffsize.diff b/recipes/ti/gstreamer-ti/gst-buffsize.diff
new file mode 100644
index 0000000000..2d71286498
--- /dev/null
+++ b/recipes/ti/gstreamer-ti/gst-buffsize.diff
@@ -0,0 +1,113 @@
+ ChangeLog | 10 ++++++++++
+ src/gsttividdec2.c | 25 +++++++++++++++++++++----
+ src/gsttividdec2.h | 2 ++
+ 3 files changed, 33 insertions(+), 4 deletions(-)
+
+diff -Nurd --exclude .svn trunk/gstreamer_ti/ti_build/ticodecplugin/ChangeLog branches/BRANCH_DDOMPE_BUFFERSIZES/gstreamer_ti/ti_build/ticodecplugin/ChangeLog
+--- ticodecplugin/ChangeLog 2009-03-03 08:57:50.000000000 +0100
++++ ticodecplugin/ChangeLog 2009-03-03 08:59:20.000000000 +0100
+@@ -1,3 +1,13 @@
++2009-03-01 Diego Dompe, RidgeRun
++ * src/gsttividdec2.{c.h}:
++ Create the output buffer tab using the recently added height and width
++ attributes passed by the capabilities. This solves integration problems
++ with other elements like ffmpegcolorspace and xvimagesink, where they
++ will fail because the second buffer pushed over the src pad of the
++ decoder has a size different from the first one. Using the input caps
++ for the creation of the buffer tab we have a more educated guess on the
++ output buffer size, and the resizing won't be required.
++
+ 2009-02-25 Brijesh Singh, Texas Instruments, Inc.
+ * src/{gsttividenc1.{c,h},gsttividenc.{c,h},gsttividdec1.{c,h},gsttividdec.
+ {c,h},gsttiauddec1.{c,h},gsttiauddec.{c,h},gsttiimgdec1.{c,h},gsttiimgenc1.
+diff -Nurd --exclude .svn trunk/gstreamer_ti/ti_build/ticodecplugin/src/gsttividdec2.c branches/BRANCH_DDOMPE_BUFFERSIZES/gstreamer_ti/ti_build/ticodecplugin/src/gsttividdec2.c
+--- ticodecplugin/src/gsttividdec2.c 2009-03-03 08:57:50.000000000 +0100
++++ ticodecplugin/src/gsttividdec2.c 2009-03-03 08:59:20.000000000 +0100
+@@ -21,7 +21,11 @@
+ * Original Author:
+ * Don Darling, Texas Instruments, Inc.
+ *
++ * Contributors:
++ * Diego Dompe, RidgeRun
++ *
+ * Copyright (C) $year Texas Instruments Incorporated - http://www.ti.com/
++ * Copyright (C) $year RidgeRun
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+@@ -350,6 +354,8 @@
+
+ viddec2->framerateNum = 0;
+ viddec2->framerateDen = 0;
++ viddec2->height = 0;
++ viddec2->width = 0;
+
+ viddec2->numOutputBufs = 0UL;
+ viddec2->hOutBufTab = NULL;
+@@ -484,6 +490,14 @@
+ viddec2->framerateNum = framerateNum;
+ viddec2->framerateDen = framerateDen;
+ }
++
++ if (!gst_structure_get_int(capStruct, "height", &viddec2->height)) {
++ viddec2->height = 0;
++ }
++
++ if (!gst_structure_get_int(capStruct, "width", &viddec2->width)) {
++ viddec2->width = 0;
++ }
+ }
+
+ /* MPEG Decode */
+@@ -1048,6 +1062,7 @@
+ Cpu_Device device;
+ ColorSpace_Type colorSpace;
+ Int defaultNumBufs;
++ Int outBufSize;
+
+ /* Open the codec engine */
+ GST_LOG("opening codec engine \"%s\"\n", viddec2->engineName);
+@@ -1116,8 +1131,8 @@
+ /* Create codec output buffers */
+ GST_LOG("creating output buffer table\n");
+ gfxAttrs.colorSpace = colorSpace;
+- gfxAttrs.dim.width = params.maxWidth;
+- gfxAttrs.dim.height = params.maxHeight;
++ gfxAttrs.dim.width = viddec2->width;
++ gfxAttrs.dim.height = viddec2->height;
+ gfxAttrs.dim.lineLength = BufferGfx_calcLineLength(
+ gfxAttrs.dim.width, gfxAttrs.colorSpace);
+
+@@ -1125,8 +1140,10 @@
+ gfxAttrs.bAttrs.useMask = gst_tidmaibuffertransport_GST_FREE |
+ gst_tividdec2_CODEC_FREE;
+
++ outBufSize = gfxAttrs.dim.lineLength * viddec2->height;
++
+ viddec2->hOutBufTab =
+- BufTab_create(viddec2->numOutputBufs, Vdec2_getOutBufSize(viddec2->hVd),
++ BufTab_create(viddec2->numOutputBufs, outBufSize,
+ BufferGfx_getBufferAttrs(&gfxAttrs));
+
+ if (viddec2->hOutBufTab == NULL) {
+@@ -1295,7 +1312,7 @@
+ */
+ outBuf = gst_tidmaibuffertransport_new(hDstBuf);
+ gst_buffer_set_data(outBuf, GST_BUFFER_DATA(outBuf),
+- Buffer_getNumBytesUsed(hDstBuf));
++ Vdec2_getOutBufSize(viddec2->hVd));
+ gst_buffer_set_caps(outBuf, GST_PAD_CAPS(viddec2->srcpad));
+
+ /* If we have a valid time stamp, set it on the buffer */
+diff -Nurd --exclude .svn trunk/gstreamer_ti/ti_build/ticodecplugin/src/gsttividdec2.h branches/BRANCH_DDOMPE_BUFFERSIZES/gstreamer_ti/ti_build/ticodecplugin/src/gsttividdec2.h
+--- ticodecplugin/src/gsttividdec2.h 2009-03-03 08:57:50.000000000 +0100
++++ ticodecplugin/src/gsttividdec2.h 2009-03-03 08:59:20.000000000 +0100
+@@ -96,6 +96,8 @@
+ /* Framerate (Num/Den) */
+ gint framerateNum;
+ gint framerateDen;
++ gint height;
++ gint width;
+
+ /* Buffer management */
+ UInt32 numOutputBufs;
diff --git a/recipes/ti/gstreamer-ti_svn.bb b/recipes/ti/gstreamer-ti_svn.bb
new file mode 100644
index 0000000000..7d13c7186a
--- /dev/null
+++ b/recipes/ti/gstreamer-ti_svn.bb
@@ -0,0 +1,66 @@
+DESCRIPTION = "Gstreamer plugin for TI Davinci and OMAP processors"
+
+require ti-paths.inc
+
+inherit autotools
+
+DEPENDS = "ti-dmai gstreamer gst-plugins-base gst-plugins-good gst-plugins-ugly"
+
+# Fetch source from svn repo
+SRCREV = "285"
+SRC_URI = "svn://gforge.ti.com/svn/gstreamer_ti/trunk;module=gstreamer_ti;proto=https;user=anonymous;pswd='' \
+ file://gstreamer-ti-tracker-824.patch;patch=1 \
+"
+
+# Again, no '.' in PWD allowed :(
+PR = "r28"
+PV = "svnr${SRCREV}"
+
+S = "${WORKDIR}/gstreamer_ti/ti_build/ticodecplugin"
+
+XDC_TARGET = gnu.targets.arm.GCArmv5T
+XDC_PLATFORM_dm355-evm = ti.platforms.evmDM355
+XDC_PLATFORM_dm6446-evm = ti.platforms.evmDM6446
+XDC_PLATFORM_da830-omapl137-evm = ti.platforms.omapl137
+PLATFORM_XDC = ${XDC_PLATFORM}
+
+export XDC_TARGET
+export XDC_PLATFORM
+export PLATFORM_XDC
+
+PLATFORM_dm355-evm = "dm355"
+PLATFORM_dm6446-evm = "dm6446"
+PLATFORM_da830-omapl137-evm = "ol137"
+
+CPPFLAGS_append = " -DPlatform_${PLATFORM}"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+do_install_prepend () {
+ # install gstreamer demo scripts
+ install -d ${D}/${installdir}/gst
+ cp -r ${WORKDIR}/gstreamer_ti/gstreamer_demo/shared ${D}/${installdir}/gst
+ cp -r ${WORKDIR}/gstreamer_ti/gstreamer_demo/${PLATFORM} ${D}/${installdir}/gst
+
+ # default loadmodule script is hard-coded for insmod, change to modprobe
+ sed -i 's/insmod/modprobe/g' ${D}/${installdir}/gst/${PLATFORM}/loadmodules.sh
+ sed -i 's/.ko//g' ${D}/${installdir}/gst/${PLATFORM}/loadmodules.sh
+ if [ "${PLATFORM}" = "omap3530" ]; then
+ echo "modprobe sdmak" >> ${D}/${installdir}/gst/${PLATFORM}/loadmodules.sh
+ fi
+ chmod 0755 ${D}/${installdir}/gst -R
+}
+
+pkg_postinst_gstreamer-ti-demo-script () {
+ ln -sf ${installdir}/codec-combo/* ${installdir}/gst/${PLATFORM}/
+}
+
+PACKAGES += "gstreamer-ti-demo-script"
+FILES_gstreamer-ti-demo-script = "${installdir}/gst/*"
+RDEPENDS_gstreamer-ti-demo-script = "gstreamer-ti"
+
+RDEPENDS_${PN} = "ti-dmai-apps"
+FILES_${PN} += "${libdir}/gstreamer-0.10/*.so"
+FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.a ${libdir}/gstreamer-0.10/*.la"
+FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug"
+
diff --git a/recipes/ti/ti-cgt6x-native_6.0.21.bb b/recipes/ti/ti-cgt6x-native_6.0.21.bb
new file mode 100644
index 0000000000..e030b81f43
--- /dev/null
+++ b/recipes/ti/ti-cgt6x-native_6.0.21.bb
@@ -0,0 +1,22 @@
+require ti-cgt6x.inc
+inherit native
+
+# download ti_cgt_c6000_6.0.21_setup_linux_x86.bin from https://www-a.ti.com/downloads/sds_support/TICodegenerationTools/download.htm and copy in Arago (or OE) download directory.
+
+SRC_URI = "http://install.source.dir.com/ti_cgt_c6000_6.0.21_setup_linux_x86.bin"
+
+BINFILE="ti_cgt_c6000_6.0.21_setup_linux_x86.bin"
+
+S = "${WORKDIR}/cgt"
+
+# Yes, the xdc stuff still breaks with a '.' in PWD
+PV = "6021"
+PR = "r3"
+
+do_stage() {
+ install -d ${STAGING_DIR_NATIVE}/${PN}
+ cp -pPrf ${S}/* ${STAGING_DIR_NATIVE}/${PN}/
+}
+
+AUTOTOOLS_NATIVE_STAGE_INSTALL = "1"
+
diff --git a/recipes/ti/ti-cgt6x-native_6.1.9.bb b/recipes/ti/ti-cgt6x-native_6.1.9.bb
new file mode 100644
index 0000000000..55c1b6ca06
--- /dev/null
+++ b/recipes/ti/ti-cgt6x-native_6.1.9.bb
@@ -0,0 +1,22 @@
+require ti-cgt6x.inc
+inherit native
+
+# download ti_cgt_c6000_6.1.9_setup_linux_x86.bin from https://www-a.ti.com/downloads/sds_support/TICodegenerationTools/download.htm and copy in Arago (or OE) download directory.
+
+SRC_URI = "http://install.source.dir.com/ti_cgt_c6000_6.1.9_setup_linux_x86.bin"
+
+BINFILE = "ti_cgt_c6000_6.1.9_setup_linux_x86.bin"
+
+S = "${WORKDIR}/cgt"
+
+# Yes, the xdc stuff still breaks with a '.' in PWD
+PV = "6190"
+PR = "r1"
+
+do_stage() {
+ install -d ${STAGING_DIR_NATIVE}/${PN}
+ cp -pPrf ${S}/* ${STAGING_DIR_NATIVE}/${PN}/
+}
+
+AUTOTOOLS_NATIVE_STAGE_INSTALL = "1"
+
diff --git a/recipes/ti/ti-cgt6x.inc b/recipes/ti/ti-cgt6x.inc
new file mode 100644
index 0000000000..35a9252cfe
--- /dev/null
+++ b/recipes/ti/ti-cgt6x.inc
@@ -0,0 +1,42 @@
+DESCRIPTION = "Code Generation Tools for TI DaVinci and OMAP"
+
+# This file defines function used for extracting .bin file
+
+python do_unpack () {
+ bb.build.exec_func('base_do_unpack', d)
+ bb.build.exec_func('ti_bin_do_unpack', d)
+}
+
+python ti_bin_do_unpack() {
+
+ import os
+
+ localdata = bb.data.createCopy(d)
+ bb.data.update_data(localdata)
+
+ binfile = bb.data.getVar('BINFILE', localdata)
+
+ # Change to the working directory
+ save_cwd = os.getcwd()
+ workdir = bb.data.getVar('WORKDIR', localdata)
+ workdir = bb.data.expand(workdir, localdata)
+ os.chdir(workdir)
+
+ # Make the InstallJammer binary executable so we can run it
+ os.chmod(binfile, 0755)
+
+ # Run the InstallJammer binary and accept the EULA
+ filename = "HOME=%s ./%s" % (workdir, binfile)
+ f = os.popen(filename,'w')
+ print >>f, "Y\n"
+ print >>f, "qY\n"
+ print >>f, "%s/cgt\n" % workdir
+ print >>f, " \n"
+ print >>f, " \n"
+
+ f.close()
+
+ # Return to the previous directory
+ os.chdir(save_cwd)
+}
+
diff --git a/recipes/ti/ti-cmem-module_2.23.1.bb b/recipes/ti/ti-cmem-module_2.23.1.bb
new file mode 100644
index 0000000000..0704993033
--- /dev/null
+++ b/recipes/ti/ti-cmem-module_2.23.1.bb
@@ -0,0 +1,68 @@
+DESCRIPTION = "CMEM module for TI ARM/DSP processors"
+inherit module
+
+# compile and run time dependencies
+DEPENDS = "virtual/kernel perl-native"
+RDEPENDS = "update-modules"
+
+# Download codec_engine_2_23_01.tar.gz from https://www-a.ti.com/downloads/sds_support/targetcontent/CE/ce_2_23/index.html and copy in Arago (or OE) download directory.
+
+SRC_URI = "http://install.source.dir.com/codec_engine_2_23_01.tar.gz \
+ file://cmem-remove-show-pte-function.patch;patch=1 "
+
+# Set the source directory
+S = "${WORKDIR}/codec_engine_2_23_01"
+
+#This is a kernel module, don't set PR directly
+MACHINE_KERNEL_PR_append = "a"
+
+PV = "2231"
+
+do_compile() {
+ # TODO :: KERNEL_CC, etc need replacing with user CC
+ # TODO :: Need to understand why OBJDUMP is required for kernel module
+ # Unset these since LDFLAGS gets picked up and used incorrectly.... need
+ # investigation
+
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+
+ cd ${S}/cetools/packages/ti/sdo/linuxutils/cmem
+ make \
+ LINUXKERNEL_INSTALL_DIR="${STAGING_KERNEL_DIR}" \
+ MVTOOL_PREFIX="${TARGET_PREFIX}" \
+ UCTOOL_PREFIX="${TARGET_PREFIX}" \
+ clean debug release
+}
+
+do_install () {
+ install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp
+ install -m 0755 ${S}/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp
+
+ cd ${S}/cetools/packages/ti/sdo/linuxutils/cmem/apps
+ make \
+ LINUXKERNEL_INSTALL_DIR="${STAGING_KERNEL_DIR}" \
+ MVTOOL_PREFIX="${TARGET_PREFIX}" \
+ UCTOOL_PREFIX="${TARGET_PREFIX}" \
+ EXEC_DIR="${D}${datadir}/ti/ti-cmem-apps" \
+ install
+}
+
+pkg_postinst () {
+ if [ -n "$D" ]; then
+ exit 1
+ fi
+ depmod -a
+ update-modules || true
+}
+
+pkg_postrm () {
+ update-modules || true
+}
+
+INHIBIT_PACKAGE_STRIP = "1"
+FILES_${PN} = "/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/cmemk.ko"
+PACKAGES += " ti-cmem-apps"
+FILES_ti-cmem-apps = "${datadir}/ti/ti-cmem-apps/*"
+INSANE_SKIP_ti-cmem-apps = True
+
+
diff --git a/recipes/ti/ti-cmem-module_2.23.bb b/recipes/ti/ti-cmem-module_2.23.bb
new file mode 100644
index 0000000000..60324fbc30
--- /dev/null
+++ b/recipes/ti/ti-cmem-module_2.23.bb
@@ -0,0 +1,51 @@
+DESCRIPTION = "CMEM module for TI ARM/DSP processors"
+inherit module
+
+# compile and run time dependencies
+DEPENDS = "virtual/kernel perl-native"
+RDEPENDS = "update-modules"
+
+SRC_URI = "http://install.source.dir.com/codec_engine_2_23.tar.gz"
+
+# Set the source directory
+S = "${WORKDIR}/codec_engine_2_23"
+
+#This is a kernel module, don't set PR directly
+MACHINE_KERNEL_PR_append = "a"
+PV = "223"
+
+do_compile() {
+ # TODO :: KERNEL_CC, etc need replacing with user CC
+ # TODO :: Need to understand why OBJDUMP is required for kernel module
+ # Unset these since LDFLAGS gets picked up and used incorrectly.... need
+ # investigation
+
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+ cd ${S}/cetools/packages/ti/sdo/linuxutils/cmem
+ make \
+ LINUXKERNEL_INSTALL_DIR="${STAGING_KERNEL_DIR}" \
+ MVTOOL_PREFIX="${TARGET_PREFIX}" \
+ UCTOOL_PREFIX="${TARGET_PREFIX}" \
+ clean debug release
+}
+
+do_install () {
+ install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp
+ install -m 0755 ${S}/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp
+}
+
+pkg_postinst () {
+ if [ -n "$D" ]; then
+ exit 1
+ fi
+ depmod -a
+ update-modules || true
+}
+
+pkg_postrm () {
+ update-modules || true
+}
+
+INHIBIT_PACKAGE_STRIP = "1"
+FILES_${PN} = "/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/cmemk.ko"
+
diff --git a/recipes/ti/ti-codec-combo-dm355.inc b/recipes/ti/ti-codec-combo-dm355.inc
new file mode 100644
index 0000000000..e975793082
--- /dev/null
+++ b/recipes/ti/ti-codec-combo-dm355.inc
@@ -0,0 +1,38 @@
+# This file defines function used for extracting .bin file
+
+python do_unpack () {
+ bb.build.exec_func('base_do_unpack', d)
+ bb.build.exec_func('ti_bin_do_unpack', d)
+}
+
+python ti_bin_do_unpack() {
+
+ import os
+
+ localdata = bb.data.createCopy(d)
+ bb.data.update_data(localdata)
+
+ binfile = bb.data.getVar('BINFILE', localdata)
+
+ # Change to the working directory
+ save_cwd = os.getcwd()
+ workdir = bb.data.getVar('WORKDIR', localdata)
+ workdir = bb.data.expand(workdir, localdata)
+ os.chdir(workdir)
+
+ # Make the InstallJammer binary executable so we can run it
+ os.chmod(binfile, 0755)
+
+ # Run the InstallJammer binary and accept the EULA
+ filename = "HOME=%s ./%s" % (workdir, binfile)
+ f = os.popen(filename,'w')
+ print >>f, "Y\n"
+ print >>f, "Y\n"
+ print >>f, " qY\n"
+ print >>f, "%s\n" % workdir
+ f.close()
+
+ # Return to the previous directory
+ os.chdir(save_cwd)
+}
+
diff --git a/recipes/ti/ti-codec-combo-dm355_1.13.bb b/recipes/ti/ti-codec-combo-dm355_1.13.bb
new file mode 100644
index 0000000000..2db0720c6a
--- /dev/null
+++ b/recipes/ti/ti-codec-combo-dm355_1.13.bb
@@ -0,0 +1,28 @@
+require ti-codec.inc
+require ti-codec-combo-dm355.inc
+
+SRC_URI = "http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/codecs/dm355_codecs_setuplinux_1_13_000.bin \
+ file://mapdmaq \
+ "
+
+BINFILE = "dm355_codecs_setuplinux_1_13_000.bin"
+
+S = "${WORKDIR}/dm355_codecs_1_13_000"
+
+# Yes, the xdc stuff still breaks with a '.' in PWD
+PV = "113"
+PR = "r15"
+
+do_compile() {
+ echo "Do nothing"
+}
+
+do_install () {
+ # install mapdmaq on target
+ install -d ${D}/${installdir}/codec-combo
+ install -m 0755 ${WORKDIR}/mapdmaq ${D}/${installdir}/codec-combo
+}
+
+INHIBIT_PACKAGE_STRIP = "1"
+INSANE_SKIP_${PN} = True
+
diff --git a/recipes/ti/ti-codec-combo-dm6446.inc b/recipes/ti/ti-codec-combo-dm6446.inc
new file mode 100644
index 0000000000..44508bf49e
--- /dev/null
+++ b/recipes/ti/ti-codec-combo-dm6446.inc
@@ -0,0 +1,39 @@
+# This file defines function used for extracting .bin file
+
+python do_unpack () {
+ bb.build.exec_func('base_do_unpack', d)
+ bb.build.exec_func('ti_bin_do_unpack', d)
+}
+
+python ti_bin_do_unpack() {
+
+ import os
+
+ localdata = bb.data.createCopy(d)
+ bb.data.update_data(localdata)
+
+ binfile = bb.data.getVar('BINFILE', localdata)
+
+ # Change to the working directory
+ save_cwd = os.getcwd()
+ workdir = bb.data.getVar('WORKDIR', localdata)
+ workdir = bb.data.expand(workdir, localdata)
+ os.chdir(workdir)
+
+ # Make the InstallJammer binary executable so we can run it
+ os.chmod(binfile, 0755)
+
+ # Run the InstallJammer binary and accept the EULA
+ filename = "HOME=%s ./%s" % (workdir, binfile)
+ f = os.popen(filename,'w')
+ print >>f, "Y\n"
+ print >>f, "Y\n"
+ print >>f, " \n"
+ print >>f, " qY\n"
+ print >>f, "%s\n" % workdir
+ f.close()
+
+ # Return to the previous directory
+ os.chdir(save_cwd)
+}
+
diff --git a/recipes/ti/ti-codec-combo-dm6446_2.05.bb b/recipes/ti/ti-codec-combo-dm6446_2.05.bb
new file mode 100644
index 0000000000..07d9dffe6b
--- /dev/null
+++ b/recipes/ti/ti-codec-combo-dm6446_2.05.bb
@@ -0,0 +1,40 @@
+DEPENDS="ti-codec-engine ti-dsplink-module"
+
+require ti-codec.inc
+require ti-codec-combo-dm6446.inc
+
+SRC_URI = "http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/S1SDKLNX/DVSDK_2_00/exports/dm6446_codecs_setuplinux_2_00_00_22.bin"
+
+S = "${WORKDIR}/dvsdk_2_00_00_22/dm6446_dvsdk_combos_2_05"
+BINFILE = "dm6446_codecs_setuplinux_2_00_00_22.bin"
+
+export ${CODEGEN_INSTALL_DIR}
+
+# Yes, the xdc stuff still breaks with a '.' in PWD
+PV = "205"
+PR = "r15"
+
+do_configure () {
+ find . -name *.x64P | xargs rm -rf {}
+}
+
+do_compile() {
+ make BIOS_INSTALL_DIR=${BIOS_INSTALL_DIR} \
+ XDC_INSTALL_DIR=${XDC_INSTALL_DIR} \
+ CE_INSTALL_DIR=${CE_INSTALL_DIR} \
+ FC_INSTALL_DIR=${FC_INSTALL_DIR} \
+ CMEM_INSTALL_DIR=${CMEM_INSTALL_DIR} \
+ XDAIS_INSTALL_DIR=${XDAIS_INSTALL_DIR} \
+ LINK_INSTALL_DIR=${LINK_INSTALL_DIR} \
+ CODEGEN_INSTALL_DIR=${CODEGEN_INSTALL_DIR} \
+ XDCARGS=\"eval\"
+}
+
+do_install () {
+ install -d ${D}/${installdir}/codec-combo
+ cd ${S}
+ for file in `find . -name *.x64P`; do
+ cp ${file} ${D}/${installdir}/codec-combo
+ done
+}
+
diff --git a/recipes/ti/ti-codec-combo-omap3530.inc b/recipes/ti/ti-codec-combo-omap3530.inc
new file mode 100644
index 0000000000..a884549622
--- /dev/null
+++ b/recipes/ti/ti-codec-combo-omap3530.inc
@@ -0,0 +1,46 @@
+# This file defines function used for unpacking the .bin file downloaded over
+# the http and display EULA.
+# BINFILE - name of the install jammer .bin file
+# TARFILE - name of the tar file inside the install jammer
+
+python do_unpack () {
+ bb.build.exec_func('base_do_unpack', d)
+ bb.build.exec_func('ti_bin_do_unpack', d)
+}
+
+python ti_bin_do_unpack() {
+
+ import os
+
+ localdata = bb.data.createCopy(d)
+ bb.data.update_data(localdata)
+
+ binfile = bb.data.getVar('BINFILE', localdata)
+ tarfile = bb.data.getVar('TARFILE', localdata)
+
+ # Change to the working directory
+ save_cwd = os.getcwd()
+ workdir = bb.data.getVar('WORKDIR', localdata)
+ workdir = bb.data.expand(workdir, localdata)
+ os.chdir(workdir)
+
+ # Make the InstallJammer binary executable so we can run it
+ os.chmod(binfile, 0755)
+
+ # Run the InstallJammer binary and accept the EULA
+ filename = "HOME=%s ./%s" % (workdir, binfile)
+ f = os.popen(filename,'w')
+ print >>f, "Y\n"
+ print >>f, " qY\n"
+ print >>f, "%s\n" % workdir
+ f.close()
+
+ # Expand the tarball that was created
+ cmd = 'tar xz --no-same-owner -f %s -C %s' % (tarfile, workdir)
+ ret = os.system(cmd)
+
+ # Return to the previous directory
+ os.chdir(save_cwd)
+ return ret == 0
+}
+
diff --git a/recipes/ti/ti-codec-combo-omap3530_3.16.1.bb b/recipes/ti/ti-codec-combo-omap3530_3.16.1.bb
new file mode 100644
index 0000000000..3a9efdd60d
--- /dev/null
+++ b/recipes/ti/ti-codec-combo-omap3530_3.16.1.bb
@@ -0,0 +1,51 @@
+require ti-codec.inc
+require ti-codec-combo-omap3530.inc
+
+SRC_URI = "http://software-dl.ti.com/sdo/sdo_apps_public_sw/omap3530_dvsdk_combos_tspa/omap3530_dvsdk_combos_tspa-3_16_01-Linux-x86.bin"
+
+# Specify names of the InstallJammer binary file and the tarball it extracts
+BINFILE = "omap3530_dvsdk_combos_tspa-3_16_01-Linux-x86.bin"
+TARFILE = "omap3530_dvsdk_combos_tspa/omap3530_dvsdk_combos_tspa_3_16_01.tar.gz"
+
+S = "${WORKDIR}/omap3530_dvsdk_combos_tspa_3_16_01"
+
+DEPENDS="ti-codec-engine ti-dsplink-module"
+
+CODEC_INSTALL_DIR = "${S}"
+
+export CODEGEN_INSTALL_DIR
+
+# Yes, the xdc stuff still breaks with a '.' in PWD
+PV = "3161"
+PR = "r17"
+do_compile() {
+ make CE_INSTALL_DIR=${CE_INSTALL_DIR} \
+ FC_INSTALL_DIR=${FC_INSTALL_DIR} \
+ LINK_INSTALL_DIR=${LINK_INSTALL_DIR} \
+ CMEM_INSTALL_DIR=${CMEM_INSTALL_DIR} \
+ LPM_INSTALL_DIR=${LPM_INSTALL_DIR} \
+ BIOS_INSTALL_DIR=${BIOS_INSTALL_DIR} \
+ CODEGEN_INSTALL_DIR=${CODEGEN_INSTALL_DIR} \
+ CODEC_INSTALL_DIR=${CODEC_INSTALL_DIR} \
+ XDC_INSTALL_DIR=${XDC_INSTALL_DIR} clean
+
+ make CE_INSTALL_DIR=${CE_INSTALL_DIR} \
+ FC_INSTALL_DIR=${FC_INSTALL_DIR} \
+ LINK_INSTALL_DIR=${LINK_INSTALL_DIR} \
+ CMEM_INSTALL_DIR=${CMEM_INSTALL_DIR} \
+ LPM_INSTALL_DIR=${LPM_INSTALL_DIR} \
+ BIOS_INSTALL_DIR=${BIOS_INSTALL_DIR} \
+ CODEGEN_INSTALL_DIR=${CODEGEN_INSTALL_DIR} \
+ CODEC_INSTALL_DIR=${CODEC_INSTALL_DIR} \
+ XDC_INSTALL_DIR=${XDC_INSTALL_DIR}
+}
+
+do_install () {
+ install -d ${D}/${installdir}/codec-combo
+ cd ${S}
+ for file in `find . -name *.x64P`; do
+ cp ${file} ${D}/${installdir}/codec-combo
+ done
+}
+
+
diff --git a/recipes/ti/ti-codec-combo-omapl137_1.0.bb b/recipes/ti/ti-codec-combo-omapl137_1.0.bb
new file mode 100644
index 0000000000..6ffefc7e48
--- /dev/null
+++ b/recipes/ti/ti-codec-combo-omapl137_1.0.bb
@@ -0,0 +1,23 @@
+require ti-codec.inc
+
+# Should be replaced with real http URL, but for now create codec combo tar from DVSDK installation.
+SRC_URI = "http://install.source.dir.com/omapl137_dvsdk_combos_1_0.tar.gz"
+
+S = "${WORKDIR}/omapl137_dvsdk_combos_1_0"
+
+# Yes, the xdc stuff still breaks with a '.' in PWD
+PV = "100"
+PR = "r1"
+
+do_compile() {
+ echo "do nothing"
+}
+
+do_install () {
+ install -d ${D}/${installdir}/codec-combo
+ cd ${S}
+ for file in `find . -name *.x64P`; do
+ cp ${file} ${D}/${installdir}/codec-combo
+ done
+}
+
diff --git a/recipes/ti/ti-codec-combos_3.16.bb b/recipes/ti/ti-codec-combos_3.16.bb
new file mode 100644
index 0000000000..5d8faca30f
--- /dev/null
+++ b/recipes/ti/ti-codec-combos_3.16.bb
@@ -0,0 +1,90 @@
+DESCRIPTION = "Codec combos for omap3530"
+DEPENDS = "ti-codec-engine"
+LICENCE = "unknown"
+
+require ti-paths.inc
+
+# Tar-Up Codec Combos from the OMAP DVSDK (http://www.ti.com/dvevmupdates) and drop in files/
+SRC_URI = "file://omap3530_dvsdk_combos_3_16.tar.gz \
+ "
+
+S = "${WORKDIR}/omap3530_dvsdk_combos_3_16"
+
+# Yes, the xdc stuff still breaks with a '.' in PWD
+PV = "316"
+PR = "r15"
+
+TARGET = "all"
+
+export CE_INSTALL_DIR="${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-engine/packages;${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-engine/cetools"
+
+# Needed for now since makefile in latest package assumes this is set
+export CODEC_INSTALL_DIR="${S}"
+
+do_compile() {
+
+ # For now, remove the reference to Rules.make and swap prod for eval, since this only has eval libs included
+ sed -i \
+ -e '/Rules.make/d' \
+ -e 's:$(FC_INSTALL_DIR)/packages;::g' \
+ -e 's:$(XDAIS_INSTALL_DIR)/packages;::g' \
+ -e 's:$(FC_INSTALL_DIR)/fctools/packages;::g' \
+ -e 's:$(BIOSUTILS_INSTALL_DIR)/packages;::g' \
+ -e 's:$(CMEM_INSTALL_DIR)/packages;::g' \
+ -e 's:$(LINK_INSTALL_DIR)/packages;::g' \
+ -e 's:$(LPM_INSTALL_DIR)/packages;::g' \
+ -e s:prod:eval:g \
+ ${S}/Makefile
+
+ # Fix-up config.bld to swap out hardcoded references to tools paths
+ sed -i -e s:/opt/dmsw/cg6x_6_0_16:${TITOOLSDIR}/${TICGTOOLSDIR}:g \
+ ${S}/config.bld
+
+ # Add make target to allow package to be prepared for building (normally this package is a binary release)
+ echo "makebuildable:
+ \$(XDC) .make -PR .
+" >> ${S}/Makefile
+
+ oe_runmake makebuildable
+ oe_runmake clean
+ oe_runmake
+}
+
+do_install () {
+ echo oe_runmake install
+
+ install -d ${D}/${datadir}/ti-codec-combos
+
+ cd ${S}
+
+ # grab the server executables
+ for i in $(find . -name "*.x64P") ; do
+ install ${i} ${D}/${datadir}/ti-codec-combos
+ done
+
+ # copy the generated data sheets as well for reference
+ #for i in $(find . -name "*.DataSheet.*") ; do
+
+ # infact, just copy all the html files (including the server datasheets) from the distro
+ # - this includes top level html (with codec versions) + some qualiTI codec test reports
+ for i in $(find . -name "*.html") ; do
+ install ${i} ${D}/${datadir}/ti-codec-combos
+ done
+
+}
+
+do_stage () {
+ install -d ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-combos
+ cp -pPrf ${S}/* ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-combos
+ for codec in encode decode ; do
+ mkdir -p ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-combos/packages/ti/sdo/servers/$codec/package/info/${datadir}/ti-codec-combos
+ ln -sf ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-combos/packages/ti/sdo/servers/$codec/package/info/$codec* ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-combos/packages/ti/sdo/servers/$codec/package/info/${datadir}/ti-codec-combos
+ done
+}
+
+FILES_ti-codec-combos = "${datadir}/ti-codec-combos/*"
+
+INHIBIT_PACKAGE_STRIP = "1"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
diff --git a/recipes/ti/ti-codec-engine_2.21.bb b/recipes/ti/ti-codec-engine_2.21.bb
new file mode 100644
index 0000000000..d0cd18e8e9
--- /dev/null
+++ b/recipes/ti/ti-codec-engine_2.21.bb
@@ -0,0 +1,278 @@
+require dsplink.inc
+
+INSANE_SKIP_ti-codec-engine-apps = True
+INSANE_SKIP_ti-dsplink-apps = True
+INSANE_SKIP_${PN} = True
+
+DESCRIPTION = "Codec Engine for TI ARM/DSP processors"
+
+DEPENDS = "virtual/kernel perl-native"
+RDEPENDS = "update-modules"
+
+inherit module
+
+# tconf from xdctools dislikes '.' in pwd :/
+PV = "221"
+
+# Get CE tarball from TI website, place in sources and calculate
+# md5sum
+# Look for tarball at https://www-a.ti.com/downloads/sds_support/targetcontent/CE/index.html
+
+SRC_URI = "http://install.tarball.in.source.dir/codec_engine_2_21.tar.gz \
+ file://cmem-class-device-27-and-sched-include-fix.patch;patch=1 \
+ file://sdma-class-device-and-includes-fix.patch;patch=1 \
+ file://dsplink-semaphore-27.patch;patch=1 \
+ file://dsplink-add-class-device-create-support.patch;patch=1 \
+ file://lpm-device-create-and-semaphore-include-fix.patch;patch=1 \
+ file://lpm-make-symbol-warnings-fix.patch;patch=1 \
+ file://Makefile-dsplink-gpp \
+ file://Makefile-dsplink-dsp \
+ file://loadmodules-ti-dsplink-apps.sh \
+ file://unloadmodules-ti-dsplink-apps.sh \
+ file://loadmodules-ti-codec-engine-apps.sh \
+ file://unloadmodules-ti-codec-engine-apps.sh \
+"
+
+S = "${WORKDIR}/codec_engine_2_21"
+
+require ti-paths.inc
+
+export DSPLINK="${S}/cetools/packages/dsplink"
+
+PARALLEL_MAKE = ""
+
+# the include files on top define do_compile for the submodules
+do_compile_append() {
+
+#dsplink already done from inclusion of require dsplink.inc
+
+#lpm bits
+ if [ -e ${S}/cetools/packages/ti/bios/power/ ] ; then
+
+ # Build the DSP power manager kernel module
+ cd ${S}/cetools/packages/ti/bios/power/modules/${DSPPOWERSOC}/lpm
+
+ # Still need to move this into the patch file
+ if [ $(echo ${KERNEL_VERSION} | cut -c5,6) -gt 26 ] ; then
+ sed -i -e s:asm/semaphore:linux/semaphore: lpm_driver.c
+ fi
+
+ #what is this for?
+ rm -f *o
+
+ # lpm also needs KERNEL_INSTALL_DIR and MVTOOL_PREFIX which come from ti-paths.inc
+ export DSPLINK_REPO=${DSPLINK}/..
+ # should move the clean step into the clean stage..
+ #oe_runmake clean
+ oe_runmake
+ fi
+
+#cmemk bits
+ if [ -e ${S}/cetools/packages/ti/sdo/linuxutils/cmem ] ; then
+ echo "MVTOOL_PREFIX=${TARGET_PREFIX}" > ${S}/Rules.make
+ echo "UCTOOL_PREFIX=${TARGET_PREFIX}" >> ${S}/Rules.make
+ echo "LINUXKERNEL_INSTALL_DIR=${STAGING_KERNEL_DIR}" >> ${S}/Rules.make
+ #export DSPLINK=${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/dsplink
+
+ # Build the cmem kernel module and associated test apps
+ # We unset CFLAGS because kernel modules need different ones, this is basically a verbatim copy of kernel.bbclass and module-base.bbclass
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+
+ cd ${S}/cetools/packages/ti/sdo/linuxutils/cmem
+ oe_runmake clean
+ oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \
+ KERNEL_SRC=${STAGING_KERNEL_DIR} \
+ KERNEL_VERSION=${KERNEL_VERSION} \
+ CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
+ AR="${KERNEL_AR}"
+ fi
+
+#sdma bits
+ if [ -e ${S}/cetools/packages/ti/sdo/linuxutils/sdma ] ; then
+ echo "MVTOOL_PREFIX=${TARGET_PREFIX}" > ${S}/Rules.make
+ echo "UCTOOL_PREFIX=${TARGET_PREFIX}" >> ${S}/Rules.make
+ echo "LINUXKERNEL_INSTALL_DIR=${STAGING_KERNEL_DIR}" >> ${S}/Rules.make
+
+ # Build the sdma kernel module and associated test apps
+ # We unset CFLAGS because kernel modules need different ones, this is basically a verbatim copy of kernel.bbclass and module-base.bbclass
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+
+ cd ${S}/cetools/packages/ti/sdo/linuxutils/sdma
+ oe_runmake clean
+ oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \
+ KERNEL_SRC=${STAGING_KERNEL_DIR} \
+ KERNEL_VERSION=${KERNEL_VERSION} \
+ CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
+ AR="${KERNEL_AR}"
+ fi
+
+
+#need to add other modules here, like IRQ, etc
+
+
+#now build the CE examples
+ cd ${S}/examples
+
+ # Fix paths to arm crosstools, c6x codegen and x86 gcc
+ # Also disable uclibc and x86 builds
+ sed -i -e s:/db/toolsrc/library/tools/vendors/cs/arm/arm-2007q3:${CROSS_DIR}:g \
+ -e s:/db/toolsrc/library/tools/vendors/ti/c6x/6.0.16/Linux:${TITOOLSDIR}/${TICGTOOLSDIR}:g \
+ -e s:/db/toolsrc/library/tools/vendors/opensource/gcc/4.1.0/Linux/gcc-4.1.0-glibc-2.3.6/i686-unknown-linux-gnu:/usr:g \
+ -e s:arm-none-linux-gnueabi-:${TARGET_PREFIX}:g \
+ -e 's:true, // build for uC Linux:false,:g' \
+ -e 's:true, // build for PC Linux:false,:g' \
+ ${S}/examples/user.bld
+
+ # For now, remove all targets, except dm6446 and omap3530
+ sed -i \
+ -e '/evmDM357/d' \
+ -e '/evmDM6446/d' \
+ -e '/evmDM6467/d' \
+ -e '/evmDM355/d' \
+ -e '/evmDM6437/d' \
+ -e '/evmDM648/d' \
+ -e '/sdp3430/d' \
+ -e '/evm2530/d' \
+ ${S}/examples/user.bld
+
+ # Fix path to c6x codegen
+ sed -i -e s:/db/toolsrc/library/tools/vendors/ti/c6x/6.0.16/Linux:${TITOOLSDIR}/${TICGTOOLSDIR}:g \
+ xdcpaths.mak
+
+ # Start building the CE examples: codecs, extensions, servers (codec bundles) and ARM side apps
+ # the DSP side uses CC to point to the c6x codegen, but would get the gcc tool
+ unset CC
+
+ # Make clean doesn't do what you'd expect, it only cleans stuff you've enabled, so some cruft remains
+
+ # First clean
+ for i in codecs extensions servers apps ; do
+ make -e -C ${S}/examples/ti/sdo/ce/examples/$i clean
+ done
+
+ # Then build the examples
+ for i in codecs extensions servers apps ; do
+ make -e -C ${S}/examples/ti/sdo/ce/examples/$i
+ done
+}
+
+do_install_append () {
+ #driver - kernel module
+ install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp
+ cp ${S}/cetools/packages/ti/bios/power/modules/${DSPPOWERSOC}/lpm/*.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp || true
+ cp ${S}/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp || true
+ cp ${S}/cetools/packages/ti/sdo/linuxutils/sdma/src/module/sdmak.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp || true
+
+ #library
+ #install -d ${D}/${libdir}
+ #install -m 0755 ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE/dsplink.lib ${D}/${libdir}
+
+ #sample apps - this is very 64x / v5T specific at the moment - we really need CE to give us this list...
+ install -d ${D}/${datadir}/ti-codec-engine
+ # we change pwd so that find gives us relative path to the files, which we use to create the same structure on the target
+ cd ${S}/examples/ti/sdo/ce
+
+ #test app module un/load scripts
+ install ${WORKDIR}/loadmodules-ti-dsplink-apps.sh ${D}/${datadir}/ti-dsplink
+ install ${WORKDIR}/unloadmodules-ti-dsplink-apps.sh ${D}/${datadir}/ti-dsplink
+
+ #ce samples
+ # first find all the app files named '.out'
+ for i in $(find . -name "*.out") ; do
+ # first create the directory
+ install -d ${D}/${datadir}/ti-codec-engine/`dirname ${i}`
+ # now copy the file
+ install ${i} ${D}/${datadir}/ti-codec-engine/`dirname ${i}`
+ done
+
+ # next find all the app files named '.xv5T'
+ for i in $(find . -name "*.xv5T") ; do
+ # first create the directory
+ install -d ${D}/${datadir}/ti-codec-engine/`dirname ${i}`
+ # now copy the file
+ install ${i} ${D}/${datadir}/ti-codec-engine/`dirname ${i}`
+ done
+
+ # then find all the app/server files named '.x64P'
+ for i in $(find . -name "*.x64P") ; do
+ # first create the directory
+ install -d ${D}/${datadir}/ti-codec-engine/`dirname ${i}`
+ # now copy the file
+ install ${i} ${D}/${datadir}/ti-codec-engine/`dirname ${i}`
+ done
+
+ # finally find all the app files named '.dat'
+ for i in $(find . -name "*.dat") ; do
+ # first create the directory
+ install -d ${D}/${datadir}/ti-codec-engine/`dirname ${i}`
+ # now copy the file
+ install ${i} ${D}/${datadir}/ti-codec-engine/`dirname ${i}`
+ done
+
+ #test app module un/load scripts
+ install ${WORKDIR}/loadmodules-ti-codec-engine-apps.sh ${D}/${datadir}/ti-codec-engine
+ install ${WORKDIR}/unloadmodules-ti-codec-engine-apps.sh ${D}/${datadir}/ti-codec-engine
+
+ # we should install the CMEM apps as well here
+
+ # finally, strip targets that we're not supporting here
+ # - TODO...
+}
+
+PACKAGES =+ "ti-lpm-module ti-cmem-module ti-sdma-module ti-codec-engine-apps"
+
+FILES_ti-lpm-module = "/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/*lpm*ko"
+FILES_ti-cmem-module = "/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/cmemk.ko"
+FILES_ti-sdma-module = "/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/sdmak.ko"
+FILES_ti-codec-engine-apps = "${datadir}/ti-codec-engine/*"
+
+pkg_postinst_ti-lpm-module () {
+ if [ -n "$D" ]; then
+ exit 1
+ fi
+ depmod -a
+ update-modules || true
+}
+
+pkg_postrm_ti-lpm-module () {
+ update-modules || true
+}
+
+pkg_postinst_ti-cmem-module () {
+ if [ -n "$D" ]; then
+ exit 1
+ fi
+ depmod -a
+ update-modules || true
+}
+
+pkg_postrm_ti-cmem-module () {
+ update-modules || true
+}
+
+pkg_postinst_ti-sdma-module () {
+ if [ -n "$D" ]; then
+ exit 1
+ fi
+ depmod -a
+ update-modules || true
+}
+
+pkg_postrm_ti-sdma-module () {
+ update-modules || true
+}
+
+INHIBIT_PACKAGE_STRIP = "1"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+#legacy upgrade helpers
+RPROVIDES_ti-cmem-module += "ti-cmemk-module"
+RREPLACES_ti-cmem-module += "ti-cmemk-module"
+
+# ti-dsplink-module can be built by either codec-engine or standalone dsplink - tell it to use this one, else unwanted dependence
+PREFERRED_PROVIDER_ti-dsplink-module = "ti-codec-engine"
+
+#add run-time dependencies - note for kernel module we can only use RRECOMMENDS, since modules might be built into the kernel
+RRECOMMENDS_ti-codec-engine-apps += "ti-dsplink-module ti-lpm-module ti-cmem-module ti-sdma-module"
+
diff --git a/recipes/ti/ti-codec-engine_2.23.1.bb b/recipes/ti/ti-codec-engine_2.23.1.bb
new file mode 100644
index 0000000000..a0e6a2ca7a
--- /dev/null
+++ b/recipes/ti/ti-codec-engine_2.23.1.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "Codec Engine 2.23.01 for TI ARM/DSP processors"
+
+# compile time dependencies
+DEPENDS_dm6446-evm += "ti-xdctools-native ti-cgt6x-native ti-dspbios-native"
+DEPENDS_omap3evm += "ti-cgt6x-native ti-dspbios-native ti-xdctools-native"
+DEPENDS_beagleboard += "ti-cgt6x-native ti-dspbios-native ti-xdctools-native"
+DEPENDS_dm355-evm += "ti-xdctools-native"
+
+# tconf from xdctools dislikes '.' in pwd :/
+PR = "r16"
+PV = "2231"
+
+# Download codec_engine_2_23_01.tar.gz from https://www-a.ti.com/downloads/sds_support/targetcontent/CE/ce_2_23/index.html and copy in Arago (or OE) download directory.
+
+SRC_URI = "http://install.source.dir.com/codec_engine_2_23_01.tar.gz "
+
+# Set the source directory
+S = "${WORKDIR}/codec_engine_2_23_01"
+
+do_compile () {
+ echo "! Do not rebuild for now !"
+}
+
+# stage tree - other packages may need this
+do_stage() {
+ install -d ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/${PN}
+ cp -pPrf ${S}/* ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/${PN}/
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+INHIBIT_PACKAGE_STRIP = "1"
+
diff --git a/recipes/ti/ti-codec-engine_2.24.01.bb b/recipes/ti/ti-codec-engine_2.24.01.bb
new file mode 100644
index 0000000000..6451823e28
--- /dev/null
+++ b/recipes/ti/ti-codec-engine_2.24.01.bb
@@ -0,0 +1,94 @@
+DESCRIPTION = "Codec Engine 2.24.01 for TI ARM/DSP processors"
+
+require ti-paths.inc
+
+# compile time dependencies
+DEPENDS_dm6446-evm += "ti-xdctools-native ti-cgt6x-native ti-dspbios-native ti-dsplink-module"
+DEPENDS_armv7a += "ti-cgt6x-native ti-dspbios-native ti-xdctools-native ti-dsplink-module"
+DEPENDS_dm355-evm += "ti-xdctools-native"
+
+# disable this package for now, while we're in test mode
+DEFAULT_PREFERENCE = "-1"
+
+
+# tconf from xdctools dislikes '.' in pwd :/
+PR = "r7"
+PV = "224"
+
+SRC_URI = "http://install.source.dir.com/codec_engine_2_24_01.tar.gz "
+
+# Set the source directory
+S = "${WORKDIR}/codec_engine_2_24_01"
+
+# Define Device variable
+DEVICES_dm355-evm ?= "DM355"
+DEVICES_dm6446-evm ?= "DM6446"
+
+# define gppos variable
+GPPOS_dm355-evm ?= "LINUX_GCC"
+GPPOS_dm6446-evm ?= "LINUX_GCC"
+
+#define PROGRAM variables
+PROGRAMS = "APP_CLIENT DSP_SERVER"
+PROGRAMS_dm355-evm ?= "APP_LOCAL"
+
+LINK_INSTALL_DIR="${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-dsplink-module/packages"
+DSPBIOS_DIR="${STAGING_DIR_NATIVE}/ti-dspbios-native"
+CGT6x_DIR="${STAGING_DIR_NATIVE}/ti-cgt6x-native"
+XDCTOOLS_DIR="${STAGING_DIR_NATIVE}/ti-xdctools-native"
+CE_INSTALL_DIR="${S}"
+
+do_compile () {
+
+ for i in codecs extensions servers apps ; do
+ cd ${S}/examples/ti/sdo/ce/examples/$i
+ make DEVICES="${DEVICES}" \
+ GPPOS="${GPPOS}" \
+ PROGRAMS="${PROGRAMS}" \
+ CE_INSTALL_DIR="${CE_INSTALL_DIR}" \
+ XDC_INSTALL_DIR="${XDCTOOLS_DIR}" \
+ BIOS_INSTALL_DIR="${DSPBIOS_DIR}"\
+ DSPLINK_INSTALL_DIR="${LINK_INSTALL_DIR}" \
+ XDAIS_INSTALL_DIR="${CE_INSTALL_DIR}/cetools" \
+ FC_INSTALL_DIR="${FC_INSTALL_DIR}" \
+ CMEM_INSTALL_DIR="${CE_INSTALL_DIR}/cetools" \
+ LPM_INSTALL_DIR="${CE_INSTALL_DIR}/cetools" \
+ EDMA3_INSTALL_DIR="${CE_INSTALL_DIR}/cetools" \
+ FC_INSTALL_DIR="${CE_INSTALL_DIR}/cetools" \
+ CGTOOLS_V5T="${CROSS_DIR}"\
+ CGTOOLS_C64P="${CGT6x_DIR}" \
+ clean all
+ done
+}
+
+do_install() {
+ install -d ${D}/${installdir}/codec-engine-apps
+ cp ${S}/examples/apps/system_files/${DEVICES}/loadmodules.sh ${D}/${installdir}/codec-engine-apps
+ sed -i 's/insmod/modprobe/g' ${D}/${installdir}/codec-engine-apps/loadmodules.sh
+
+ cd ${S}/examples/ti/sdo/ce/examples
+
+ for i in $(find . -name "*.xv5T"); do
+ install -d ${D}/${installdir}/codec-engine-apps/`dirname ${i} | cut -f3 -d /`
+ install ${i} ${D}/${installdir}/codec-engine-apps/`dirname ${i} | cut -f3 -d /`
+
+ for j in $(find . -name "*.x64P"); do
+ install ${j} ${D}/${installdir}/codec-engine-apps/`dirname ${i} | cut -f3 -d /`
+ done
+
+ done
+}
+
+
+# stage tree - other packages may need this
+do_stage() {
+ install -d ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/${PN}
+ cp -pPrf ${S}/* ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/${PN}/
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+INHIBIT_PACKAGE_STRIP = "1"
+PACKAGES += "ti-codec-engine-apps"
+FILES_ti-codec-engine-apps = "${installdir}/codec-engine-apps/*"
+INSANE_SKIP_ti-codec-engine-apps = True
+
diff --git a/recipes/ti/ti-cs1-omap3530.inc b/recipes/ti/ti-cs1-omap3530.inc
new file mode 100644
index 0000000000..cb9696d61d
--- /dev/null
+++ b/recipes/ti/ti-cs1-omap3530.inc
@@ -0,0 +1,41 @@
+
+# This file defines function used for extracting .bin file
+
+python do_unpack () {
+ bb.build.exec_func('base_do_unpack', d)
+ bb.build.exec_func('ti_bin_do_unpack', d)
+}
+
+python ti_bin_do_unpack() {
+
+ import os
+
+ localdata = bb.data.createCopy(d)
+ bb.data.update_data(localdata)
+
+ binfile = bb.data.getVar('BINFILE', localdata)
+
+ # Change to the working directory
+ save_cwd = os.getcwd()
+ workdir = bb.data.getVar('WORKDIR', localdata)
+ workdir = bb.data.expand(workdir, localdata)
+ os.chdir(workdir)
+
+ # Make the InstallJammer binary executable so we can run it
+ os.chmod(binfile, 0755)
+
+ # Run the InstallJammer binary and accept the EULA
+ filename = "HOME=%s ./%s" % (workdir, binfile)
+ f = os.popen(filename,'w')
+ print >>f, "Y\n"
+ print >>f, "Y\n"
+ print >>f, " \n"
+ print >>f, "qY\n"
+ print >>f, "%s\n" % workdir
+
+ f.close()
+
+ # Return to the previous directory
+ os.chdir(save_cwd)
+}
+
diff --git a/recipes/ti/ti-cs1-omap3530_1.0.1.bb b/recipes/ti/ti-cs1-omap3530_1.0.1.bb
new file mode 100644
index 0000000000..61d5406305
--- /dev/null
+++ b/recipes/ti/ti-cs1-omap3530_1.0.1.bb
@@ -0,0 +1,53 @@
+require ti-codec.inc
+require ti-cs1-omap3530.inc
+
+SRC_URI = "http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/DVSDK_3_00/latest//exports/cs1omap3530_setuplinux_1_00_01.bin"
+
+# Specify names of the InstallJammer binary file and the tarball it extracts
+BINFILE = "cs1omap3530_setuplinux_1_00_01.bin"
+
+S = "${WORKDIR}/dvsdk_3_00_00_40/cs1omap3530_1_00_01"
+
+DEPENDS="ti-codec-engine ti-dsplink-module"
+
+export CODEGEN_INSTALL_DIR
+
+# Yes, the xdc stuff still breaks with a '.' in PWD
+PV = "101"
+PR = "r4"
+
+do_compile() {
+
+ make CE_INSTALL_DIR=${CE_INSTALL_DIR} \
+ FC_INSTALL_DIR=${FC_INSTALL_DIR} \
+ LINK_INSTALL_DIR=${LINK_INSTALL_DIR} \
+ CMEM_INSTALL_DIR=${CMEM_INSTALL_DIR} \
+ LPM_INSTALL_DIR=${LPM_INSTALL_DIR} \
+ BIOS_INSTALL_DIR=${BIOS_INSTALL_DIR} \
+ CODEGEN_INSTALL_DIR=${CODEGEN_INSTALL_DIR} \
+ XDC_INSTALL_DIR=${XDC_INSTALL_DIR} \
+ CODEC_INSTALL_DIR="${S}" \
+ XDCARGS="prod" \
+ clean
+
+ make CE_INSTALL_DIR=${CE_INSTALL_DIR} \
+ FC_INSTALL_DIR=${FC_INSTALL_DIR} \
+ LINK_INSTALL_DIR=${LINK_INSTALL_DIR} \
+ CMEM_INSTALL_DIR=${CMEM_INSTALL_DIR} \
+ LPM_INSTALL_DIR=${LPM_INSTALL_DIR} \
+ BIOS_INSTALL_DIR=${BIOS_INSTALL_DIR} \
+ CODEGEN_INSTALL_DIR=${CODEGEN_INSTALL_DIR} \
+ XDC_INSTALL_DIR=${XDC_INSTALL_DIR} \
+ CODEC_INSTALL_DIR="${S}" \
+ XDCARGS="prod" \
+}
+
+do_install () {
+ install -d ${D}/${installdir}/codec-combo
+ cd ${S}
+ for file in `find . -name *.x64P`; do
+ cp ${file} ${D}/${installdir}/codec-combo
+ done
+}
+
+
diff --git a/recipes/ti/ti-dm355mm-module_1.13.bb b/recipes/ti/ti-dm355mm-module_1.13.bb
new file mode 100644
index 0000000000..59cbd69e10
--- /dev/null
+++ b/recipes/ti/ti-dm355mm-module_1.13.bb
@@ -0,0 +1,57 @@
+DESCRIPTION = "User space DMA module for DM355"
+
+require ti-codec-combo-dm355.inc
+inherit module
+
+# compile and run time dependencies
+DEPENDS = "virtual/kernel perl-native"
+RDEPENDS = "update-modules"
+
+SRC_URI = "http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/codecs/dm355_codecs_setuplinux_1_13_000.bin \
+ file://dm355mm_1_30.patch;patch=1 \
+ "
+
+S = "${WORKDIR}/dm355_codecs_1_13_000"
+BINFILE = "dm355_codecs_setuplinux_1_13_000.bin"
+
+# Yes, the xdc stuff still breaks with a '.' in PWD
+PV = "113"
+#This is a kernel module, don't set PR directly
+MACHINE_KERNEL_PR_append = "a"
+
+
+do_configure() {
+ find ${S} -name "*.ko" -exec rm {} \; || true
+ sed -i -e s:include:#include:g ${S}/dm355mm/Rules.make
+}
+
+do_compile() {
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+
+ cd ${S}/dm355mm/module
+ make \
+ LINUXKERNEL_INSTALL_DIR="${STAGING_KERNEL_DIR}" \
+ MVTOOL_PREFIX="${TARGET_PREFIX}";
+}
+
+do_install () {
+ install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp
+ install -m 0755 ${S}/dm355mm/module/dm350mmap.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp
+}
+
+pkg_postinst () {
+ if [ -n "$D" ]; then
+ exit 1
+ fi
+ depmod -a
+ update-modules || true
+}
+
+pkg_postrm () {
+ update-modules || true
+}
+
+INHIBIT_PACKAGE_STRIP = "1"
+FILES_${PN} = "/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/dm350mmap.ko"
+
+
diff --git a/recipes/ti/ti-dmai.inc b/recipes/ti/ti-dmai.inc
new file mode 100644
index 0000000000..8e95cf1b46
--- /dev/null
+++ b/recipes/ti/ti-dmai.inc
@@ -0,0 +1,16 @@
+DESCRIPTION = "DMAI for TI ARM/DSP processors"
+
+# NOTE: Use Brijesh' DMAI development branch. The URL *must* be updated once
+# we have stable DMAI 2.x on gforge.
+SRCREV = "265"
+SRC_URI = "svn://gforge.ti.com/svn/dmai/branches;module=BRANCH_BRIJESH_DMAI_DEV_2_xx;proto=https;user=anonymous;pswd='' \
+ file://loadmodules-ti-dmai-dm355_al.sh \
+ file://loadmodules-ti-dmai-dm6446_al.sh \
+ file://loadmodules-ti-dmai-o3530_al.sh \
+ "
+
+S = "${WORKDIR}/BRANCH_BRIJESH_DMAI_DEV_2_xx/davinci_multimedia_application_interface"
+# Yes, the xdc stuff still breaks with a '.' in PWD
+PV = "svnr${SRCREV}"
+PR = "r33"
+
diff --git a/recipes/ti/ti-dmai_svn.bb b/recipes/ti/ti-dmai_svn.bb
new file mode 100644
index 0000000000..d94dd61b21
--- /dev/null
+++ b/recipes/ti/ti-dmai_svn.bb
@@ -0,0 +1,106 @@
+require ti-dmai.inc
+require ti-paths.inc
+
+inherit module-base
+
+#This is a kernel module, don't set PR directly
+MACHINE_KERNEL_PR_append = "a"
+
+# compile time dependencies
+DEPENDS_omap3evm += "alsa-lib ti-codec-engine ti-xdctools-native ti-dspbios-native ti-cgt6x-native ti-cs1-omap3530 virtual/kernel ti-dsplink-module"
+DEPENDS_beagleboard += "alsa-lib ti-codec-engine ti-xdctools-native ti-dspbios-native ti-cgt6x-native ti-cs1-omap3530 virtual/kernel ti-dsplink-module "
+DEPENDS_dm6446-evm += "alsa-lib ti-codec-engine ti-xdctools-native ti-dspbios-native ti-cgt6x-native ti-codec-combo-dm6446 virtual/kernel ti-dsplink-module "
+DEPENDS_dm355-evm += "alsa-lib ti-codec-engine ti-xdctools-native ti-codec-combo-dm355 virtual/kernel"
+DEPENDS_da830-omapl137-evm += "alsa-lib ti-codec-engine ti-xdctools-native ti-dspbios-native ti-cgt6x-native ti-codec-combo-omapl137 virtual/kernel ti-dsplink-module "
+
+# Define DMAI build time variables
+TARGET ?= "all"
+TARGET_armv7a ?= "o3530_al"
+TARGET_dm355-evm ?= "dm355_al"
+TARGET_dm6446-evm ?= "dm6446_al"
+TARGET_da830-omapl137-evm ?= "ol137_al"
+
+DSPBIOS_DIR = "${STAGING_DIR_NATIVE}/ti-dspbios-native"
+CGT6x_DIR = "${STAGING_DIR_NATIVE}/ti-cgt6x-native"
+XDCTOOLS_DIR = "${STAGING_DIR_NATIVE}/ti-xdctools-native"
+USER_XDC_PATH = "${CE_INSTALL_DIR}/examples"
+
+PARALLEL_MAKE = ""
+
+do_configure () {
+
+ # PSP kernel is based on older DSS. we need to replace linux/omapfb.h with
+ # mach/omapfb.h
+
+ if [ ${MACHINE} == "omap3evm" ] ; then
+ sed -i -e s:linux/omapfb:mach/omapfb:g ${S}/dmai/packages/ti/sdo/dmai/linux/Display_fbdev.c
+ sed -i -e s:linux/omapfb:mach/omapfb:g ${S}/dmai/packages/ti/sdo/dmai/linux/priv/_Display.h
+ fi
+}
+
+
+do_compile () {
+
+ unset DMAI_INSTALL_DIR
+ cd ${S}
+ make XDC_INSTALL_DIR="${XDCTOOLS_DIR}" clean
+
+ # TODO: Figure out how to pass the alsa include location, currently
+ # LINUXLIBS_INSTALL_DIR is hard-coded for armv5te
+ make CE_INSTALL_DIR="${CE_INSTALL_DIR}" \
+ CODEC_INSTALL_DIR="${CODEC}" \
+ FC_INSTALL_DIR="${FC_INSTALL_DIR}" \
+ LINUXKERNEL_INSTALL_DIR="${STAGING_KERNEL_DIR}" \
+ XDC_INSTALL_DIR="${XDCTOOLS_DIR}" \
+ CODEGEN_INSTALL_DIR="${CGT6x_DIR}" \
+ BIOS_INSTALL_DIR="${DSPBIOS_DIR}"\
+ LINUXLIBS_INSTALL_DIR="${STAGING_DIR_HOST}/usr" \
+ USER_XDC_PATH="${USER_XDC_PATH}" \
+ CROSS_COMPILE="${CROSS_DIR}/bin/${TARGET_PREFIX}" \
+ VERBOSE="true" \
+ XDAIS_INSTALL_DIR="${CE_INSTALL_DIR}/cetools" \
+ LINK_INSTALL_DIR="${LINK_INSTALL_DIR}" \
+ CMEM_INSTALL_DIR="${CE_INSTALL_DIR}/cetools" \
+ LPM_INSTALL_DIR="${CE_INSTALL_DIR}/cetools" \
+ PLATFORM="${TARGET}"
+}
+
+do_install () {
+ unset DMAI_INSTALL_DIR
+ # install dmai apps on target
+ cd ${S}/dmai
+ make PLATFORM="${TARGET}" EXEC_DIR=${D}/${installdir}/dmai-apps install
+ install -m 0755 ${WORKDIR}/loadmodules-ti-dmai-${TARGET}.sh ${D}/${installdir}/dmai-apps/loadmodule.sh
+
+ cd ${S}/tests
+ make PLATFORM="${TARGET}" EXEC_DIR=${D}/${installdir}/dmai-tests install
+ install -m 0755 ${WORKDIR}/loadmodules-ti-dmai-${TARGET}.sh ${D}/${installdir}/dmai-tests/loadmodule.sh
+}
+
+pkg_postinst_ti-dmai-apps () {
+ ln -sf ${installdir}/codec-combo/* ${installdir}/dmai-apps/
+}
+
+do_stage () {
+ install -d ${DMAI_INSTALL_DIR}
+ cp -pPrf ${S}/dmai/* ${DMAI_INSTALL_DIR}
+}
+
+# Disable QA check untils we figure out how to pass LDFLAGS in build
+INSANE_SKIP_${PN} = True
+INSANE_SKIP_ti-dmai-apps = True
+INSANE_SKIP_ti-dmai-tests = True
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+INHIBIT_PACKAGE_STRIP = "1"
+PACKAGES += "ti-dmai-apps ti-dmai-tests"
+FILES_ti-dmai-apps = "${installdir}/dmai-apps/*"
+FILES_ti-dmai-tests = "${installdir}/dmai-tests/*"
+
+# run time dependencies
+RDEPENDS_ti-dmai-apps_dm355-evm += "ti-dm355mm-module ti-cmem-module ti-codec-combo-dm355"
+RDEPENDS_ti-dmai-apps_dm6446-evm += "ti-cmem-module ti-dsplink-module ti-codec-combo-dm6446"
+RDEPENDS_ti-dmai-apps_omap3evm += "ti-cmem-module ti-dsplink-module ti-cs1-omap3530 ti-lpm-module ti-sdma-module"
+RDEPENDS_ti-dmai-apps_beagleboard += "ti-cmem-module ti-dsplink-module ti-cs1-omap3530 ti-lpm-module ti-sdma-module"
+RDEPENDS_ti-dmai-apps_da830-omapl137-evm += "ti-cmem-module ti-dsplink-module ti-codec-combo-ol137"
+
diff --git a/recipes/ti/ti-dspbios-native_5.33.02.bb b/recipes/ti/ti-dspbios-native_5.33.02.bb
new file mode 100644
index 0000000000..9e224434c4
--- /dev/null
+++ b/recipes/ti/ti-dspbios-native_5.33.02.bb
@@ -0,0 +1,21 @@
+require ti-dspbios.inc
+inherit native
+
+# download bios_setuplinux_5_33_02.bin from https://www-a.ti.com/downloads/sds_support/targetcontent/bios/bios_5_33/bios_5_33_02/index_external.html and copy in Arago (or OE) installation directory
+
+SRC_URI = "http://install.source.dir.com/bios_setuplinux_5_33_02.bin"
+BINFILE="bios_setuplinux_5_33_02.bin"
+
+S = "${WORKDIR}/bios_5_33_02"
+
+# Yes, the xdc stuff still breaks with a '.' in PWD
+PV = "5332"
+PR = "r14"
+
+do_stage() {
+ install -d ${STAGING_DIR_NATIVE}/${PN}
+ cp -pPrf ${S}/* ${STAGING_DIR_NATIVE}/${PN}/
+}
+
+AUTOTOOLS_NATIVE_STAGE_INSTALL="1"
+
diff --git a/recipes/ti/ti-dspbios-native_5.33.04.bb b/recipes/ti/ti-dspbios-native_5.33.04.bb
new file mode 100644
index 0000000000..d5667f04dd
--- /dev/null
+++ b/recipes/ti/ti-dspbios-native_5.33.04.bb
@@ -0,0 +1,22 @@
+require ti-dspbios.inc
+inherit native
+
+# download bios_setuplinux_5_33_04.bin from https://www-a.ti.com/downloads/sds_support/targetcontent/bios/bios_5_33/bios_5_33_04/index_external.html and copy in Arago (or OE) installation directory
+
+SRC_URI = "http://install.source.dir.com/bios_setuplinux_5_33_04.bin"
+BINFILE="bios_setuplinux_5_33_04.bin"
+
+S = "${WORKDIR}/bios_5_33_04"
+
+# Yes, the xdc stuff still breaks with a '.' in PWD
+PV = "5334"
+PR = "r2"
+
+do_stage() {
+ install -d ${STAGING_DIR_NATIVE}/${PN}
+ cp -pPrf ${S}/* ${STAGING_DIR_NATIVE}/${PN}/
+ chmod 755 -R ${STAGING_DIR_NATIVE}/${PN}/*
+}
+
+AUTOTOOLS_NATIVE_STAGE_INSTALL="1"
+
diff --git a/recipes/ti/ti-dspbios.inc b/recipes/ti/ti-dspbios.inc
new file mode 100644
index 0000000000..9e79216554
--- /dev/null
+++ b/recipes/ti/ti-dspbios.inc
@@ -0,0 +1,40 @@
+DESCRIPTION = "TI DSP/BIOS for Davinci and OMAP processor"
+
+# This file defines function used for extracting .bin file
+
+python do_unpack () {
+ bb.build.exec_func('base_do_unpack', d)
+ bb.build.exec_func('ti_bin_do_unpack', d)
+}
+
+python ti_bin_do_unpack() {
+
+ import os
+
+ localdata = bb.data.createCopy(d)
+ bb.data.update_data(localdata)
+
+ binfile = bb.data.getVar('BINFILE', localdata)
+
+ # Change to the working directory
+ save_cwd = os.getcwd()
+ workdir = bb.data.getVar('WORKDIR', localdata)
+ workdir = bb.data.expand(workdir, localdata)
+ os.chdir(workdir)
+
+ # Make the InstallJammer binary executable so we can run it
+ os.chmod(binfile, 0755)
+
+ # Run the InstallJammer binary and accept the EULA
+ filename = "HOME=%s ./%s" % (workdir, binfile)
+ f = os.popen(filename,'w')
+ print >>f, "Y\n"
+ print >>f, " qY\n"
+ print >>f, "%s\n" % workdir
+ print >>f, "Y\n"
+ f.close()
+
+ # Return to the previous directory
+ os.chdir(save_cwd)
+}
+
diff --git a/recipes/ti/ti-dsplink-module_1.61.3.bb b/recipes/ti/ti-dsplink-module_1.61.3.bb
new file mode 100644
index 0000000000..7febdc86bc
--- /dev/null
+++ b/recipes/ti/ti-dsplink-module_1.61.3.bb
@@ -0,0 +1,168 @@
+DESCRIPTION = "DSPLINK 1.61.3 module for TI ARM/DSP processors"
+
+require ti-paths.inc
+inherit module
+
+# compile and run time dependencies
+DEPENDS += "virtual/kernel perl-native ti-dspbios-native ti-cgt6x-native update-modules ti-xdctools-native"
+
+# tconf from xdctools dislikes '.' in pwd :/
+#This is a kernel module, don't set PR directly
+MACHINE_KERNEL_PR_append = "a"
+PV = "1613"
+
+SRC_URI = "http://install.source.dir.com/dsplink_1_61_03.tar.gz \
+ file://loadmodules-ti-dsplink-apps.sh \
+ file://unloadmodules-ti-dsplink-apps.sh"
+
+# Set the source directory
+S = "${WORKDIR}/dsplink_1_61_03"
+
+# DSPLINK - Config Variable for different platform
+DSPLINKPLATFORM ?= "DAVINCI"
+DSPLINKPLATFORM_dm6446-evm ?= "DAVINCI"
+DSPLINKPLATFORM_da830-omapl137-evm ?= "OMAPL1XX"
+
+DSPLINKDSPCFG ?= "DM6446GEMSHMEM"
+DSPLINKDSPCFG_dm6446-evm ?= "DM6446GEMSHMEM"
+DSPLINKDSPCFG_da830-omapl137-evm ?= "OMAPL1XXGEMSHMEM"
+
+DSPLINKGPPOS ?= "MVL5G"
+DSPLINKGPPOS_dm6446-evm ?= "MVL5G"
+DSPLINKGPPOS_da830-omapl137-evm ?= "MVL5G"
+
+DSPLINK = "${S}/dsplink"
+export DSPLINK
+
+STAGING_TI_DSPBIOS_DIR="${STAGING_DIR_NATIVE}/ti-dspbios-native"
+STAGING_TI_CGT6x_DIR="${STAGING_DIR_NATIVE}/ti-cgt6x-native"
+STAGING_TI_XDCTOOL_INSTALL_DIR="${STAGING_DIR_NATIVE}/ti-xdctools-native"
+
+do_compile() {
+
+ # Run perl script to create appropriate makefiles (v1.60 and up)
+ (
+ cd ${DSPLINK}
+ perl config/bin/dsplinkcfg.pl --platform=${DSPLINKPLATFORM} --nodsp=1 \
+ --dspcfg_0=${DSPLINKDSPCFG} --dspos_0=DSPBIOS5XX \
+ --gppos=${DSPLINKGPPOS} --comps=ponslrm
+ )
+
+ # dsplink makefile is hard-coded to use kbuild only on OMAP3530.
+ # we are forcing to use kbuild on other platforms.
+ sed -i 's/OMAP3530/${DSPLINKPLATFORM}/g' ${DSPLINK}/gpp/src/Makefile
+
+ # TODO :: KERNEL_CC, etc need replacing with user CC
+ # TODO :: Need to understand why OBJDUMP is required for kernel module
+ # Unset these since LDFLAGS gets picked up and used incorrectly.... need
+ # investigation
+
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+
+ # Build the gpp user space library
+ cd ${DSPLINK}/gpp/src/api
+ ${STAGING_TI_XDCTOOL_INSTALL_DIR}/gmake \
+ CROSS_COMPILE="${TARGET_PREFIX}" \
+ CC="${KERNEL_CC}" \
+ AR="${KERNEL_AR}" \
+ LD="${KERNEL_LD}" \
+ COMPILER="${KERNEL_CC}" \
+ ARCHIVER="${KERNEL_AR}" \
+ KERNEL_DIR="${STAGING_KERNEL_DIR}" \
+ clean all
+
+ # Build the gpp kernel space (debug and release)
+ cd ${DSPLINK}/gpp/src
+ ${STAGING_TI_XDCTOOL_INSTALL_DIR}/gmake \
+ OBJDUMP="${TARGET_PREFIX}objdump" \
+ CROSS_COMPILE="${TARGET_PREFIX}" \
+ CC="${KERNEL_CC}" \
+ AR="${KERNEL_AR}" \
+ LD="${KERNEL_LD}" \
+ COMPILER="${KERNEL_CC}" \
+ ARCHIVER="${KERNEL_AR}" \
+ KERNEL_DIR="${STAGING_KERNEL_DIR}" \
+ clean all
+
+ # Build the gpp samples
+ cd ${DSPLINK}/gpp/src/samples
+ ${STAGING_TI_XDCTOOL_INSTALL_DIR}/gmake \
+ BASE_TOOLCHAIN="${CROSS_DIR}" \
+ BASE_CGTOOLS="${BASE_TOOLCHAIN}/bin" \
+ OSINC_PLATFORM="${CROSS_DIR}/lib/gcc/${TARGET_SYS}/$(${TARGET_PREFIX}gcc -dumpversion)/include" \
+ OSINC_TARGET="${BASE_TOOLCHAIN}/target/usr/include" \
+ CROSS_COMPILE="${TARGET_PREFIX}" \
+ CC="${KERNEL_CC}" \
+ AR="${KERNEL_AR}" \
+ LD="${KERNEL_LD}" \
+ COMPILER="${KERNEL_CC}" \
+ LINKER="${KERNEL_CC}" \
+ ARCHIVER="${KERNEL_AR}" \
+ KERNEL_DIR="${STAGING_KERNEL_DIR}" \
+ clean all
+
+ # Build the dsp library (debug and release)
+ cd ${DSPLINK}/dsp/src
+ ${STAGING_TI_XDCTOOL_INSTALL_DIR}/gmake \
+ BASE_CGTOOLS="${STAGING_TI_CGT6x_DIR}" \
+ BASE_SABIOS="${STAGING_TI_DSPBIOS_DIR}" \
+ clean all
+
+ # Build the dsp samples (debug and release)
+ cd ${DSPLINK}/dsp/src/samples
+ ${STAGING_TI_XDCTOOL_INSTALL_DIR}/gmake \
+ BASE_CGTOOLS="${STAGING_TI_CGT6x_DIR}" \
+ BASE_SABIOS="${STAGING_TI_DSPBIOS_DIR}" \
+ clean all
+}
+
+do_install () {
+ # DSPLINK driver - kernel module
+ install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp
+ install -m 0755 ${DSPLINK}/gpp/export/BIN/Linux/${DSPLINKPLATFORM}/RELEASE/dsplinkk.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/
+
+ # DSPLINK library
+ install -d ${D}/${installdir}/dsplink/libs
+ install -m 0755 ${DSPLINK}/gpp/export/BIN/Linux/${DSPLINKPLATFORM}/RELEASE/dsplink.lib ${D}/${installdir}/dsplink/libs
+
+ # DSPLINK sample apps
+ install -d ${D}/${installdir}/dsplink/apps
+
+ cp ${DSPLINK}/gpp/export/BIN/Linux/${DSPLINKPLATFORM}/RELEASE/*gpp ${D}/${installdir}/dsplink/apps
+
+ for i in $(find ${DSPLINK}/dsp/BUILD/ -name "*.out") ; do
+ cp ${i} ${D}/${installdir}/dsplink/apps
+ done
+
+ # DSPLINK test app module un/load scripts
+ install ${WORKDIR}/loadmodules-ti-dsplink-apps.sh ${D}/${installdir}/dsplink/apps
+ install ${WORKDIR}/unloadmodules-ti-dsplink-apps.sh ${D}/${installdir}/dsplink/apps
+}
+
+do_stage () {
+ install -d ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/${PN}/packages
+ cp -pPrf ${S}/* ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/${PN}/packages
+}
+
+pkg_postrm () {
+ update-modules || true
+}
+
+pkg_postinst () {
+ if [ -n "$D" ]; then
+ exit 1
+ fi
+ depmod -a
+ update-modules || true
+}
+
+INHIBIT_PACKAGE_STRIP = "1"
+
+PACKAGES += " ti-dsplink-apps"
+FILES_${PN} = "/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/*"
+FILES_ti-dsplink-apps = "${installdir}/dsplink/*"
+
+# Disable QA check untils we figure out how to pass LDFLAGS in build
+INSANE_SKIP_${PN} = True
+INSANE_SKIP_ti-dsplink-apps = True
+
diff --git a/recipes/ti/ti-lpm-module_2.23.1.bb b/recipes/ti/ti-lpm-module_2.23.1.bb
new file mode 100644
index 0000000000..7e0356dc55
--- /dev/null
+++ b/recipes/ti/ti-lpm-module_2.23.1.bb
@@ -0,0 +1,65 @@
+DESCRIPTION = "LPM module for TI OMAP3 processors"
+
+inherit module
+# compile and run time dependencies
+DEPENDS = " virtual/kernel perl-native ti-dsplink-module"
+
+#This is a kernel module, don't set PR directly
+MACHINE_KERNEL_PR_append = "a"
+
+PV = "2231"
+
+# Download codec_engine_2_23_01.tar.gz from https://www-a.ti.com/downloads/sds_support/targetcontent/CE/ce_2_23/index.html and copy in Arago (or OE) download directory.
+
+SRC_URI = "http://install.source.dir.com/codec_engine_2_23_01.tar.gz "
+
+# Set the source directory
+S = "${WORKDIR}/codec_engine_2_23_01"
+
+export DSPLINK="${S}/cetools/packages/dsplink"
+
+LPMDSPPOWERSOC ?= "omap3530"
+LPMDSPPOWERSOC_omap3evm ?= "omap3530"
+LPMDSPPOWERSOC_beagleboard ?= "omap3530"
+
+do_compile () {
+ # TODO :: KERNEL_CC, etc need replacing with user CC
+ # TODO :: Need to understand why OBJDUMP is required for kernel module
+ # Unset these since LDFLAGS gets picked up and used incorrectly.... need
+ # investigation
+
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+
+ cd ${S}/cetools/packages/ti/bios/power/modules/${LPMDSPPOWERSOC}/lpm
+ make \
+ DSPLINK_REPO="${DSPLINK}/.." \
+ LINUXKERNEL_INSTALL_DIR="${STAGING_KERNEL_DIR}" \
+ MVTOOL_PREFIX="${TARGET_PREFIX}" \
+ clean default
+}
+
+do_install () {
+
+ # LPM/CMEM/SDMA drivers - kernel modules
+ install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp
+ install -m 0755 ${S}/cetools/packages/ti/bios/power/modules/${LPMDSPPOWERSOC}/lpm/*.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp
+}
+
+
+pkg_postinst () {
+ if [ -n "$D" ]; then
+ exit 1
+ fi
+ depmod -a
+ update-modules || true
+}
+
+pkg_postrm () {
+ update-modules || true
+}
+
+INHIBIT_PACKAGE_STRIP = "1"
+
+FILES_${PN} = "/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/*lpm*ko"
+RDEPENDS += " ti-dsplink-module"
+
diff --git a/recipes/ti/ti-paths.inc b/recipes/ti/ti-paths.inc
new file mode 100644
index 0000000000..abf75ecc72
--- /dev/null
+++ b/recipes/ti/ti-paths.inc
@@ -0,0 +1,80 @@
+# To build the DSP applications you need to have DSP/BIOS, xdctools and codegen installed. Get these from:
+# https://www-a.ti.com/downloads/sds_support/targetcontent/bios/bios_5_33/sabios-j05/bios_setuplinux_5_33_02.bin
+# https://www-a.ti.com/downloads/sds_support/targetcontent/rtsc/xdctools_3_10_03/exports/xdctools_setuplinux_3_10_03.bin
+# https://www-a.ti.com/downloads/sds_support/targetcontent/LinuxDspTools/download.html
+# Back link for above:
+# https://www-a.ti.com/downloads/sds_support/targetcontent/index.html
+
+# export some more variable to point to external TI tools
+# information is duplicated between the js and make based tools
+# needed for configuro:
+export CGTOOLS_V5T="${CROSS_DIR}"
+export CC_V5T="bin/${TARGET_PREFIX}gcc"
+export MVTOOL_PREFIX="${TARGET_PREFIX}"
+export MVTOOL_DIR="${CROSS_DIR}"
+export CSTOOL_PREFIX="${TARGET_PREFIX}"
+export CSTOOL_DIR="${CROSS_DIR}"
+export LINUXKERNEL_INSTALL_DIR=${STAGING_KERNEL_DIR}
+
+export PLATFORM
+
+export CROSS_COMPILE = "${CROSS_DIR}/bin/${TARGET_PREFIX}"
+
+# This tells codec engine which targets to build
+DEVICES ?= "DM6446"
+DEVICES_omap5912osk = "fixme-ti-paths.inc"
+
+# Set a default for armv7a now, change this when omap4 and friends become available
+DEVICES_armv7a = "OMAP3530"
+
+DEVICES_davinci-sffsdr = "DM6446"
+DEVICES_davinci-dvevm = "DM6446"
+
+DSPLINKPLATFORM ?= "DAVINCI"
+DSPLINKPLATFORM_omap5912osk = "OMAP"
+
+DSPLINKPLATFORM_davinci-sffsdr = "DAVINCI"
+DSPLINKPLATFORM_davinci-dvevm = "DAVINCI"
+
+PLATFORM ?= "dm6446"
+PLATFORM_omap5912osk = "OMAP"
+
+PLATFORM_davinci-sffsdr = "dm6446"
+PLATFORM_davinci-dvevm = "dm6446"
+
+DSPLINKDSP ?= "C64XX"
+
+DSPLINKSOC ?= "DM6446"
+
+DSPCFG ?= "DM6446GEMSHMEM"
+
+GPPOS ?= "MVL5G"
+
+export DEVICES
+export DSPLINKPLATFORM
+export DSPLINKDSP
+export DSPLINKSOC
+export DSPCFG
+export GPPOS
+export PLATFORM
+
+DSPPOWERSOC ?= "dm6446"
+
+export BIOS_INSTALL_DIR = "${STAGING_DIR_NATIVE}/ti-dspbios-native"
+export CE_INSTALL_DIR = "${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-engine"
+export CMEM_INSTALL_DIR = "${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-engine/cetools"
+export CODEGEN_INSTALL_DIR = "${STAGING_DIR_NATIVE}/ti-cgt6x-native"
+export CROSS_COMPILE = "${CROSS_DIR}/bin/${TARGET_PREFIX}"
+export DMAI_INSTALL_DIR = "${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-dmai"
+export FC_INSTALL_DIR = "${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-engine/cetools"
+export LINK_INSTALL_DIR = "${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-dsplink-module"
+export LINUXKERNEL_INSTALL_DIR = "${STAGING_KERNEL_DIR}"
+export LPM_INSTALL_DIR = "${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-engine/cetools"
+export XDC_INSTALL_DIR = "${STAGING_DIR_NATIVE}/ti-xdctools-native"
+export XDAIS_INSTALL_DIR = "${CE_INSTALL_DIR}/cetools"
+
+export CODEC_INSTALL_DIR = "${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-combo"
+export CODEC ?= "${CODEC_INSTALL_DIR}"
+
+installdir = "${datadir}/ti"
+
diff --git a/recipes/ti/ti-sdma-module_2.23.1.bb b/recipes/ti/ti-sdma-module_2.23.1.bb
new file mode 100644
index 0000000000..5925b18a61
--- /dev/null
+++ b/recipes/ti/ti-sdma-module_2.23.1.bb
@@ -0,0 +1,56 @@
+DESCRIPTION = "SDMA module for TI OMAP3 processors"
+
+inherit module
+# compile and run time dependencies
+DEPENDS = "virtual/kernel perl-native"
+
+#This is a kernel module, don't set PR directly
+MACHINE_KERNEL_PR_append = "a"
+
+PV = "2231"
+
+# Download codec_engine_2_23_01.tar.gz from https://www-a.ti.com/downloads/sds_support/targetcontent/CE/ce_2_23/index.html and copy in Arago (or OE) download directory.
+
+SRC_URI = "http://install.source.dir.com/codec_engine_2_23_01.tar.gz "
+
+# Set the source directory
+S = "${WORKDIR}/codec_engine_2_23_01"
+
+do_compile() {
+ # SDMA - Build the sdma module
+ # TODO :: KERNEL_CC, etc need replacing with user CC
+ # TODO :: Need to understand why OBJDUMP is required for kernel module
+ # Unset these since LDFLAGS gets picked up and used incorrectly.... need
+ # investigation
+
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+
+ cd ${S}/cetools/packages/ti/sdo/linuxutils/sdma
+ make \
+ LINUXKERNEL_INSTALL_DIR="${STAGING_KERNEL_DIR}" \
+ MVTOOL_PREFIX="${TARGET_PREFIX}" \
+ UCTOOL_PREFIX="${TARGET_PREFIX}" \
+ clean debug release
+}
+
+do_install () {
+ install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp
+ install -m 0755 ${S}/cetools/packages/ti/sdo/linuxutils/sdma/src/module/sdmak.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp
+}
+
+pkg_postinst () {
+ if [ -n "$D" ]; then
+ exit 1
+ fi
+ depmod -a
+ update-modules || true
+}
+
+pkg_postrm () {
+ update-modules || true
+}
+
+INHIBIT_PACKAGE_STRIP = "1"
+
+FILES_${PN} = "/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/sdmak.ko"
+
diff --git a/recipes/ti/ti-xdctools-native_3.10.03.bb b/recipes/ti/ti-xdctools-native_3.10.03.bb
new file mode 100644
index 0000000000..1d6ee675b5
--- /dev/null
+++ b/recipes/ti/ti-xdctools-native_3.10.03.bb
@@ -0,0 +1,21 @@
+inherit native
+require ti-xdctools.inc
+
+# download xdctools_setuplinux_3_10_03.bin from https://www-a.ti.com/downloads/sds_support/targetcontent/rtsc/xdctools_3_10/xdctools_3_10_03/index_external.html and copy in Arago (or OE) download directory
+
+SRC_URI = "http://install.source.dir.com/xdctools_setuplinux_3_10_03.bin"
+BINFILE="xdctools_setuplinux_3_10_03.bin"
+
+S = "${WORKDIR}/xdctools_3_10_03"
+
+# Yes, the xdc stuff still breaks with a '.' in PWD
+PV = "310"
+PR = "r16"
+
+do_stage() {
+ install -d ${STAGING_DIR_NATIVE}/${PN}
+ cp -pPrf ${S}/* ${STAGING_DIR_NATIVE}/${PN}
+}
+
+AUTOTOOLS_NATIVE_STAGE_INSTALL="1"
+
diff --git a/recipes/ti/ti-xdctools-native_3.15.01.59.bb b/recipes/ti/ti-xdctools-native_3.15.01.59.bb
new file mode 100644
index 0000000000..d06cb8f615
--- /dev/null
+++ b/recipes/ti/ti-xdctools-native_3.15.01.59.bb
@@ -0,0 +1,22 @@
+inherit native
+require ti-xdctools.inc
+
+SRC_URI = "http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/rtsc/xdctools_3_15//exports/xdctools_setuplinux_3_15_01_59.bin"
+BINFILE = "xdctools_setuplinux_3_15_01_59.bin"
+
+S = "${WORKDIR}/xdctools_3_15_01_59"
+
+# Yes, the xdc stuff still breaks with a '.' in PWD
+PV = "315"
+PR = "r4"
+
+do_stage() {
+ install -d -m 0755 ${STAGING_DIR_NATIVE}/${PN}
+ cp -pPrf ${S}/* ${STAGING_DIR_NATIVE}/${PN}
+ chmod 755 -R ${STAGING_DIR_NATIVE}/${PN}
+ # rm_work fails if you don't chmod S:
+ chmod 755 -R ${S}
+}
+
+AUTOTOOLS_NATIVE_STAGE_INSTALL = "1"
+
diff --git a/recipes/ti/ti-xdctools.inc b/recipes/ti/ti-xdctools.inc
new file mode 100644
index 0000000000..9dbd35f24c
--- /dev/null
+++ b/recipes/ti/ti-xdctools.inc
@@ -0,0 +1,40 @@
+DESCRIPTION = "TI XDC tool"
+
+# This file defines function used for extracting .bin file
+
+python do_unpack () {
+ bb.build.exec_func('base_do_unpack', d)
+ bb.build.exec_func('ti_bin_do_unpack', d)
+}
+
+python ti_bin_do_unpack() {
+
+ import os
+
+ localdata = bb.data.createCopy(d)
+ bb.data.update_data(localdata)
+
+ binfile = bb.data.getVar('BINFILE', localdata)
+
+ # Change to the working directory
+ save_cwd = os.getcwd()
+ workdir = bb.data.getVar('WORKDIR', localdata)
+ workdir = bb.data.expand(workdir, localdata)
+ os.chdir(workdir)
+
+ # Make the InstallJammer binary executable so we can run it
+ os.chmod(binfile, 0755)
+
+ # Run the InstallJammer binary and accept the EULA
+ filename = "HOME=%s ./%s" % (workdir, binfile)
+ f = os.popen(filename,'w')
+ print >>f, "Y\n"
+ print >>f, " qY\n"
+ print >>f, "%s\n" % workdir
+ print >>f, "Y\n"
+ f.close()
+
+ # Return to the previous directory
+ os.chdir(save_cwd)
+}
+