diff options
Diffstat (limited to 'recipes/dsplink')
29 files changed, 1974 insertions, 0 deletions
diff --git a/recipes/dsplink/dsplink.inc b/recipes/dsplink/dsplink.inc new file mode 100644 index 0000000000..1ca01c399c --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/Makefile-dsplink-dsp b/recipes/dsplink/files/Makefile-dsplink-dsp new file mode 100755 index 0000000000..0861f1ee21 --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/Makefile-dsplink-gpp b/recipes/dsplink/files/Makefile-dsplink-gpp new file mode 100755 index 0000000000..d9f2f6209a --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/cmem-class-device-27-and-sched-include-fix.patch b/recipes/dsplink/files/cmem-class-device-27-and-sched-include-fix.patch new file mode 100644 index 0000000000..8eb3210bb1 --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/dmai-built-with-angstrom.patch b/recipes/dsplink/files/dmai-built-with-angstrom.patch new file mode 100644 index 0000000000..fc49789718 --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/dmai-do-not-panic-on-mixer-failure.patch b/recipes/dsplink/files/dmai-do-not-panic-on-mixer-failure.patch new file mode 100644 index 0000000000..20e1aece72 --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/dmai-support-32bit-align.patch b/recipes/dsplink/files/dmai-support-32bit-align.patch new file mode 100644 index 0000000000..0ee817d9d9 --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/dmai-update-cpu-name.patch b/recipes/dsplink/files/dmai-update-cpu-name.patch new file mode 100644 index 0000000000..052a8e3236 --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/dmai-update-fb-display.patch b/recipes/dsplink/files/dmai-update-fb-display.patch new file mode 100644 index 0000000000..91c1dd15aa --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/dmai-update-v4l2-display.patch b/recipes/dsplink/files/dmai-update-v4l2-display.patch new file mode 100644 index 0000000000..8bb77d8473 --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/dsplink-128M.patch b/recipes/dsplink/files/dsplink-128M.patch new file mode 100644 index 0000000000..ff5902bf50 --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/dsplink-add-class-device-create-support.patch b/recipes/dsplink/files/dsplink-add-class-device-create-support.patch new file mode 100644 index 0000000000..b43c3481e1 --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/dsplink-semaphore-27.patch b/recipes/dsplink/files/dsplink-semaphore-27.patch new file mode 100644 index 0000000000..b2f71169fd --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/loadmodules-ti-codec-engine-apps.sh b/recipes/dsplink/files/loadmodules-ti-codec-engine-apps.sh new file mode 100755 index 0000000000..9f9233d12b --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/loadmodules-ti-dmai-apps.sh b/recipes/dsplink/files/loadmodules-ti-dmai-apps.sh new file mode 100755 index 0000000000..7120b74483 --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/loadmodules-ti-dsplink-apps.sh b/recipes/dsplink/files/loadmodules-ti-dsplink-apps.sh new file mode 100755 index 0000000000..9cfb19d5c1 --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/lpm-device-create-and-semaphore-include-fix.patch b/recipes/dsplink/files/lpm-device-create-and-semaphore-include-fix.patch new file mode 100644 index 0000000000..a3bc2b14a6 --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/lpm-make-symbol-warnings-fix.patch b/recipes/dsplink/files/lpm-make-symbol-warnings-fix.patch new file mode 100644 index 0000000000..031a16022f --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/sdma-class-device-and-includes-fix.patch b/recipes/dsplink/files/sdma-class-device-and-includes-fix.patch new file mode 100644 index 0000000000..2dcc7a3b7e --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/unloadmodules-ti-codec-engine-apps.sh b/recipes/dsplink/files/unloadmodules-ti-codec-engine-apps.sh new file mode 100755 index 0000000000..f990d99771 --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/unloadmodules-ti-dmai-apps.sh b/recipes/dsplink/files/unloadmodules-ti-dmai-apps.sh new file mode 100755 index 0000000000..793d727f39 --- /dev/null +++ b/recipes/dsplink/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/dsplink/files/unloadmodules-ti-dsplink-apps.sh b/recipes/dsplink/files/unloadmodules-ti-dsplink-apps.sh new file mode 100755 index 0000000000..48fa84b03d --- /dev/null +++ b/recipes/dsplink/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/dsplink/gstreamer-ti/gst-buffsize.diff b/recipes/dsplink/gstreamer-ti/gst-buffsize.diff new file mode 100644 index 0000000000..2d71286498 --- /dev/null +++ b/recipes/dsplink/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/dsplink/gstreamer-ti_svn.bb b/recipes/dsplink/gstreamer-ti_svn.bb new file mode 100644 index 0000000000..bcfaa3458b --- /dev/null +++ b/recipes/dsplink/gstreamer-ti_svn.bb @@ -0,0 +1,49 @@ +DEPENDS = "ti-codec-engine ti-dmai gstreamer gst-plugins-base gst-plugins-good gst-plugins-ugly libid3tag liboil libmad" + +SRC_URI = "svn://gforge.ti.com/svn/gstreamer_ti/trunk;module=gstreamer_ti;proto=https;user=anonymous;pswd='' \ + file://gst-buffsize.diff;patch=1" +SRCREV = "127" + +PR = "r5" + +# Again, no '.' in PWD allowed :( +PV = "0+svnr${SRCREV}" + +S = "${WORKDIR}/gstreamer_ti/ti_build/ticodecplugin" + +inherit autotools + +require ti-paths.inc + +export DMAI_INSTALL_DIR = "${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-dmai" +export CE_INSTALL_DIR="${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-engine" +export FC_INSTALL_DIR="${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-engine/cetools" +export CODEC_INSTALL_DIR="${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-combos" + +export XDC_TARGET = "gnu.targets.arm.GCArmv5T" + +XDC_PLATFORM = "foo" +# Assume every TI armv7a cpu is a 3530 +XDC_PLATFORM_armv7a = "ti.platforms.evm3530" +export XDC_PLATFORM + +# We need to add this to config.bld: +#GCArmv5T.cc.$unseal("opts"); +#GCArmv5T.cc.opts = "SEDME_CCARCH"; +#GCArmv5T.cc.$seal("opts"); + +do_compile_prepend() { + for i in $(find ${S} -name "config.bld") ; do + sed -i -e s:SEDME_CCARCH:'${TARGET_CCARCH}': $i + done +} + +CPPFLAGS_append = " -DPlatform_${PLATFORM}" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +RDEPENDS_${PN} = "ti-dmai" +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/dsplink/readme.txt b/recipes/dsplink/readme.txt new file mode 100644 index 0000000000..8dd71e6fee --- /dev/null +++ b/recipes/dsplink/readme.txt @@ -0,0 +1,10 @@ +placeholder for readme + +todo with this package +- rename top level dsplink directory +- repartion code into different recipes - create codecengine-examples package +/DONE - fix lpm build to pick up Module.symversion +- cleanup device selection script - not good to just /d the targets - need cleaner solution +- staging needs work + +- add ce 2.22 diff --git a/recipes/dsplink/ti-codec-combos_3.16.bb b/recipes/dsplink/ti-codec-combos_3.16.bb new file mode 100644 index 0000000000..941856d09d --- /dev/null +++ b/recipes/dsplink/ti-codec-combos_3.16.bb @@ -0,0 +1,100 @@ +DESCRIPTION = "Codec combos for omap3530" +DEPENDS = "ti-codec-engine" +LICENCE = "unknown" + +require ti-paths.inc + +SRC_URI = "http://software-dl.ti.com/sdo/sdo_apps_public_sw/omap3530_dvsdk_combos_tspa/omap3530_dvsdk_combos_tspa-3_16-Linux-x86.bin \ + " + +S = "${WORKDIR}/omap3530_dvsdk_combos_3_16" + +# Yes, the xdc stuff still breaks with a '.' in PWD +PV = "316" +PR = "r13" + +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}" + +# Helper function to run the binary installer and unpack the tar.gz in the same place as it was before - this could be optimised later +do_accept_license() { + export HOME="${WORKDIR}" + chmod +x ${WORKDIR}/omap3530_dvsdk_combos_tspa-3_16-Linux-x86.bin + ${WORKDIR}/omap3530_dvsdk_combos_tspa-3_16-Linux-x86.bin --mode silent --prefix ${S}_install + cd "${S}_install" + tar -xzvf omap3530_dvsdk_combos_tspa_3_16.tar.gz + if [ -d ${S} ] ; then + rm -rf ${S} + fi + mv omap3530_dvsdk_combos_tspa_3_16 ${S} +} + +addtask accept_license after do_unpack before do_configure + +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 +} + +FILES_ti-codec-combos = "${datadir}/ti-codec-combos/*" + +INHIBIT_PACKAGE_STRIP = "1" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + diff --git a/recipes/dsplink/ti-codec-engine_2.21.bb b/recipes/dsplink/ti-codec-engine_2.21.bb new file mode 100644 index 0000000000..8fcae851bb --- /dev/null +++ b/recipes/dsplink/ti-codec-engine_2.21.bb @@ -0,0 +1,275 @@ +require dsplink.inc + +DESCRIPTION = "Codec Engine for TI ARM/DSP processors" + +DEPENDS = "virtual/kernel perl-native" +RDEPENDS = "update-modules" + +inherit module + +# tconf from xdctools dislikes '.' in pwd :/ +PR = "r17" +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/dsplink/ti-dmai_1.20.bb b/recipes/dsplink/ti-dmai_1.20.bb new file mode 100644 index 0000000000..b95f241dd3 --- /dev/null +++ b/recipes/dsplink/ti-dmai_1.20.bb @@ -0,0 +1,93 @@ +DESCRIPTION = "Davinci (and OMAP) Multimedia Application Interface" +DEPENDS = "virtual/kernel ti-codec-engine ti-codec-combos" +LICENCE = "unknown" + +require ti-paths.inc + +# https://www-a.ti.com/downloads/sds_support/applications_packages/dmai/dmai_1_20_00_06/dmai_setuplinux_1_20_00_06.bin +# Install the above link and put the dmai_1_20_00_06.tar.gz file in the same directory as this recipe +SRC_URI = "file://dmai_1_20_00_06.tar.gz \ + file://dmai-update-cpu-name.patch;patch=1 \ + file://dmai-update-fb-display.patch;patch=1 \ + file://dmai-update-v4l2-display.patch;patch=1 \ + file://dmai-do-not-panic-on-mixer-failure.patch;patch=1 \ + file://dmai-support-32bit-align.patch;patch=1 \ + file://dmai-built-with-angstrom.patch;patch=1 \ + file://loadmodules-ti-dmai-apps.sh \ + file://unloadmodules-ti-dmai-apps.sh \ + " + +S = "${WORKDIR}/dmai_1_20_00_06" +# Yes, the xdc stuff still breaks with a '.' in PWD +PV = "120" +PR = "r14" + +TARGET = "all" +TARGET_neuros-osd2 = " dm6446_al dm6446_db" +TARGET_beagleboard = " o3530_al" +TARGET_omap3evm = " o3530_al" + +export CE_INSTALL_DIR="${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-engine" +export FC_INSTALL_DIR="${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-engine/cetools" +export CODEC_INSTALL_DIR="${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-codec-combos" + +do_compile_prepend_omap3evm() { + +#temp removal of sources that fail to build on evm3530 + if [ -e packages/ti/sdo/dmai/linux/omap3530/Resize.c ]; then + rm packages/ti/sdo/dmai/linux/omap3530/Resize.c + fi + + if [ -e packages/ti/sdo/dmai/linux/omap3530/Framecopy_accel.c ]; then + rm packages/ti/sdo/dmai/linux/omap3530/Framecopy_accel.c + fi +} + +do_compile() { + cd packages/ti/sdo/dmai + oe_runmake clean + oe_runmake ${TARGET} C_FLAGS="-O2 -I${STAGING_INCDIR}" + cd apps + oe_runmake clean + oe_runmake ${TARGET} +} + +do_install () { + install -d ${D}/${datadir}/ti-dmai/apps + + export EXEC_DIR="${D}/${datadir}/ti-dmai/apps" + oe_runmake install + + #test app module un/load scripts + install ${WORKDIR}/loadmodules-ti-dmai-apps.sh ${D}/${datadir}/ti-dmai + install ${WORKDIR}/unloadmodules-ti-dmai-apps.sh ${D}/${datadir}/ti-dmai +} + +do_stage () { + install -d ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-dmai + cp -pPrf ${S}/* ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/ti-dmai +} + +PACKAGES =+ "ti-dmai-apps" + +ALLOW_EMPTY_${PN} = "1" +RRECOMMENDS_${PN} = "ti-dmai-apps" + +FILES_ti-dmai-apps = "${datadir}/ti-dmai/*" + +pkg_postinst_ti-dmai-apps () { + if [ -n "$D" ]; then + exit 1 + fi + ln -sf /usr/share/ti-codec-combos/* /usr/share/ti-dmai/apps +} + +INHIBIT_PACKAGE_STRIP = "1" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +#add run-time dependencies - note for kernel module we can only use RRECOMMENDS, since modules might be built into the kernel +# and for now we make codecs RRECOMMENDS as well, since not everyone will have them +#RDEPENDS_ti-dmai-apps += "ti-codec-combos" +RRECOMMENDS_ti-dmai-apps += "ti-cmem-module ti-lpm-module ti-dsplink-module ti-codec-combos" + diff --git a/recipes/dsplink/ti-paths.inc b/recipes/dsplink/ti-paths.inc new file mode 100644 index 0000000000..e5b3373fe5 --- /dev/null +++ b/recipes/dsplink/ti-paths.inc @@ -0,0 +1,84 @@ +# 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 + +# Path to the dir where the TI tools are unpacked +TITOOLSDIR ?= "/OE/TI" +# Path under TITOOLSDIR where dspbios is unpacked +TIBIOSDIR ?= "bios_5_33_02" +TIXDCTOOLSDIR ?= "${TITOOLSDIR}/xdctools_3_10_03" +# Path under TITOOLSDIR where the dsp toolchain is unpacked +TICGTOOLSDIR ?= "cg6x_6_0_16" + +# Path to codecs/servers package - this is taken from DVSDK 3.00.00.29 +# - This needs fixing to be x-platform (not just omap3) +#TICODECSDIR ?= "omap3530_dvsdk_combos_3_16" + +# export some more variable to point to external TI tools +# information is duplicated between the js and make based tools +export CE_INSTALL_DIR=${S} +export XDC_INSTALL_DIR=${TIXDCTOOLSDIR} +export BIOS_INSTALL_DIR=${TITOOLSDIR}/${TIBIOSDIR} +# 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} + +# used by dmai (and gstreamer_ti?) +#export CODEC_INSTALL_DIR=${TITOOLSDIR}/${TICODECSDIR} + +# This tells codec engine which targets to build +DEVICES ?= "DM6446" +DEVICES_omap5912osk = "fixme-ti-paths.inc" +DEVICES_omap3evm = "OMAP3530" +DEVICES_beagleboard = "OMAP3530" +DEVICES_davinci-sffsdr = "DM6446" +DEVICES_davinci-dvevm = "DM6446" + +DSPLINKPLATFORM ?= "DAVINCI" +DSPLINKPLATFORM_omap5912osk = "OMAP" +DSPLINKPLATFORM_beagleboard = "OMAP3530" +DSPLINKPLATFORM_omap3evm = "OMAP3530" +DSPLINKPLATFORM_davinci-sffsdr = "DAVINCI" +DSPLINKPLATFORM_davinci-dvevm = "DAVINCI" + +PLATFORM ?= "dm6446" +PLATFORM_omap5912osk = "OMAP" +PLATFORM_beagleboard = "omap3530" +PLATFORM_omap3evm = "omap3530" +PLATFORM_davinci-sffsdr = "dm6446" +PLATFORM_davinci-dvevm = "dm6446" + +DSPLINKDSP ?= "C64XX" + +DSPLINKSOC ?= "DM6446" +DSPLINKSOC_beagleboard = "3530" +DSPLINKSOC_omap3evm = "3530" + +DSPCFG ?= "DM6446GEMSHMEM" +DSPCFG_beagleboard ?= "OMAP3530SHMEM" +DSPCFG_omap3evm ?= "OMAP3530SHMEM" + +GPPOS ?= "MVL5G" +GPPOS_beagleboard = "OMAPLSP" +GPPOS_omap3evm = "OMAPLSP" + +export DEVICES +export DSPLINKPLATFORM +export DSPLINKDSP +export DSPLINKSOC +export DSPCFG +export GPPOS +export PLATFORM + +DSPPOWERSOC ?= "dm6446" +DSPPOWERSOC_beagleboard = "omap3530" +DSPPOWERSOC_omap3evm = "omap3530" + |