diff options
author | Koen Kooi <koen@openembedded.org> | 2009-08-26 11:35:14 +0200 |
---|---|---|
committer | Koen Kooi <koen@openembedded.org> | 2009-08-26 11:35:14 +0200 |
commit | 172cb63ce5e91d489993590ec09e418aba019b4e (patch) | |
tree | e10d322895620ec0c96c2ab0efcd296bfc93b6b9 /recipes/ti/files | |
parent | bac5eef9c8a73672ee114926011addabb36610eb (diff) |
dvsdk: rename to ti now that other things like bitblit live in that dir now
Diffstat (limited to 'recipes/ti/files')
32 files changed, 2307 insertions, 0 deletions
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, ¶mentry); +- +- /*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, ¶mentry); +- 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 Binary files differnew file mode 100755 index 0000000000..5c11bc3141 --- /dev/null +++ b/recipes/ti/files/mapdmaq 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 |