summaryrefslogtreecommitdiffstats
path: root/extras/recipes-ti/dsplink/ti-dsplink.inc
diff options
context:
space:
mode:
Diffstat (limited to 'extras/recipes-ti/dsplink/ti-dsplink.inc')
-rw-r--r--extras/recipes-ti/dsplink/ti-dsplink.inc211
1 files changed, 211 insertions, 0 deletions
diff --git a/extras/recipes-ti/dsplink/ti-dsplink.inc b/extras/recipes-ti/dsplink/ti-dsplink.inc
new file mode 100644
index 00000000..ce7cbf97
--- /dev/null
+++ b/extras/recipes-ti/dsplink/ti-dsplink.inc
@@ -0,0 +1,211 @@
1DESCRIPTION = "DSPLINK Inter-Processor Communications (IPC) for TI ARM/DSP processors"
2HOMEPAGE = "http://software-dl.ti.com/dsps/dsps_public_sw/DSPLink/index.html"
3SECTION = "devel"
4LICENSE = "GPLv2"
5
6LIC_FILES_CHKSUM = "file://dsplink/doc/gpl_2.0.pdf;md5=70996be607b61df78ce46093f4afe2bd"
7
8
9# TODO :: KERNEL_CC, should use for kernel cc for module build?
10# TODO :: Need to understand why OBJDUMP is required for kernel module
11# TODO :: Unset required since LDFLAGS gets picked up and used incorrectly - investigate
12# TODO :: Do we need to pass so many variables to each make step?
13
14inherit module
15
16require ../includes/ti-paths.inc
17require ../includes/ti-staging.inc
18
19PROVIDES = "ti-dsplink-module"
20PROVIDES += "ti-dsplink-examples"
21
22# This package builds a kernel module, use kernel PR as base and append a local version
23PR = "${MACHINE_KERNEL_PR}"
24PR_append = "j"
25
26S = "${WORKDIR}/dsplink_linux_${PV}"
27
28SRC_URI = "http://software-dl.ti.com/dsps/dsps_public_sw/${PV_DL_PATH}/dsplink_linux_${PV}.tar.gz;name=dsplinktarball \
29 file://ti-dsplink-examples-run.sh \
30 file://ti-dsplink-examples-loadmodules.sh \
31 file://ti-dsplink-examples-unloadmodules.sh "
32
33DEPENDS = "ti-dspbios ti-xdctools ti-cgt6x"
34DEPENDS += "virtual/kernel perl-native"
35
36# SOC_FAMILY configuration
37
38DSPLINKPLATFORM_dm6446 = "DAVINCI"
39DSPLINKPLATFORM_dm6467 = "DAVINCIHD"
40DSPLINKPLATFORM_omapl137 = "OMAPL1XX"
41DSPLINKPLATFORM_omapl138 = "OMAPL138"
42DSPLINKPLATFORM_omap3 = "OMAP3530"
43DSPLINKPLATFORM ?= "<UNDEFINED_DSPLINKPLATFORM>"
44
45DSPLINKDSPCFG_dm6446 = "DM6446GEMSHMEM"
46DSPLINKDSPCFG_dm6467 = "DM6467GEMSHMEM"
47DSPLINKDSPCFG_omapl137 = "OMAPL1XXGEMSHMEM"
48DSPLINKDSPCFG_omapl138 = "OMAPL138GEMSHMEM"
49DSPLINKDSPCFG_omap3 = "OMAP3530SHMEM"
50DSPLINKDSPCFG ?= "<UNDEFINED_DSPLINKDSPCFG>"
51
52DSPLINKDSP_dm6446 = "DM6446GEM_0"
53DSPLINKDSP_dm6467 = "DM6467GEM_0"
54DSPLINKDSP_omapl137 = "OMAPL1XXGEM_0"
55DSPLINKDSP_omapl138 = "OMAPL138GEM_0"
56DSPLINKDSP_omap3 = "OMAP3530_0"
57DSPLINKDSP ?= "<UNDEFINED_DSPLINKDSP>"
58
59DSPLINKGPPOS_dm6446 = "DM6446LSP"
60DSPLINKGPPOS_dm6467 = "DM6467LSP"
61DSPLINKGPPOS_omapl137 = "ARM"
62DSPLINKGPPOS_omapl138 = "ARM"
63DSPLINKGPPOS_omap3 = "OMAPLSP"
64DSPLINKGPPOS ?= "<DEFINED_DSPLINKGPPOS>"
65
66# Exported Variable needed by build
67DSPLINK = "${S}/dsplink"
68export DSPLINK
69
70do_configure() {
71
72 # Run perl script to create appropriate makefiles (v1.60 and up)
73 (
74 cd ${DSPLINK}
75 perl config/bin/dsplinkcfg.pl --platform=${DSPLINKPLATFORM} --nodsp=1 \
76 --dspcfg_0=${DSPLINKDSPCFG} --dspos_0=DSPBIOS5XX \
77 --gppos=${DSPLINKGPPOS} --comps=ponslrmc
78 )
79}
80
81do_prepsources () {
82
83 # Prepare the tree for rebuiling - clean and generate interfaces
84 XDCPATH=${DSPLINK} ${XDC_INSTALL_DIR}/xdc .make -PR .
85 XDCPATH=${DSPLINK} ${XDC_INSTALL_DIR}/xdc clean -PR .
86 XDCPATH=${DSPLINK} ${XDC_INSTALL_DIR}/xdc .interfaces -PR .
87}
88
89addtask prepsources after do_configure before do_compile
90
91do_compile() {
92 # TODO :: KERNEL_CC, should use for kernel module build?
93 # TODO :: Need to understand why OBJDUMP is required for kernel module
94 # Unset these since LDFLAGS gets picked up and used incorrectly.... need
95 # investigation
96
97 unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
98
99 # Build the gpp user space library
100 cd ${DSPLINK}/gpp/src/api && make \
101 CROSS_COMPILE="${TARGET_PREFIX}" \
102 CC="${TOOLCHAIN_PATH}/${TARGET_PREFIX}gcc" \
103 AR="${TOOLCHAIN_PATH}/${TARGET_PREFIX}ar" \
104 LD="${TOOLCHAIN_PATH}/${TARGET_PREFIX}ld" \
105 COMPILER="${TOOLCHAIN_PATH}/${TARGET_PREFIX}gcc" \
106 ARCHIVER="${TOOLCHAIN_PATH}/${TARGET_PREFIX}ar" \
107 KERNEL_DIR="${STAGING_KERNEL_DIR}" \
108 all
109
110 # Build the gpp kernel space (debug and release)
111 do_make_scripts
112 cd ${DSPLINK}/gpp/src && make \
113 OBJDUMP="${TARGET_PREFIX}objdump" \
114 CROSS_COMPILE="${TARGET_PREFIX}" \
115 CC="${TOOLCHAIN_PATH}/${TARGET_PREFIX}gcc" \
116 AR="${TOOLCHAIN_PATH}/${TARGET_PREFIX}ar" \
117 LD="${TOOLCHAIN_PATH}/${TARGET_PREFIX}ld" \
118 COMPILER="${TOOLCHAIN_PATH}/${TARGET_PREFIX}gcc" \
119 ARCHIVER="${TOOLCHAIN_PATH}/${TARGET_PREFIX}ar" \
120 KERNEL_DIR="${STAGING_KERNEL_DIR}" \
121 BASE_BUILDOS="${STAGING_KERNEL_DIR}" \
122 all
123
124 # Build the gpp samples
125 cd ${DSPLINK}/gpp/src/samples && make \
126 BASE_TOOLCHAIN="${TOOLCHAIN_PATH}" \
127 BASE_CGTOOLS="${BASE_TOOLCHAIN}/bin" \
128 OSINC_PLATFORM="${TOOLCHAIN_PATH}/lib/gcc/${TARGET_SYS}/$(${TARGET_PREFIX}gcc -dumpversion)/include" \
129 OSINC_TARGET="${BASE_TOOLCHAIN}/target/usr/include" \
130 CROSS_COMPILE="${TARGET_PREFIX}" \
131 CC="${TOOLCHAIN_PATH}/${TARGET_PREFIX}gcc" \
132 LD="${TOOLCHAIN_PATH}/${TARGET_PREFIX}gcc" \
133 AR="${TOOLCHAIN_PATH}/${TARGET_PREFIX}ar" \
134 COMPILER="${TOOLCHAIN_PATH}/${TARGET_PREFIX}gcc" \
135 LINKER="${TOOLCHAIN_PATH}/${TARGET_PREFIX}gcc" \
136 ARCHIVER="${TOOLCHAIN_PATH}/${TARGET_PREFIX}ar" \
137 KERNEL_DIR="${STAGING_KERNEL_DIR}" \
138 all
139
140 # Build the dsp library (debug and release)
141 cd ${DSPLINK}/dsp/src && make \
142 BASE_CGTOOLS="${CODEGEN_INSTALL_DIR}" \
143 BASE_SABIOS="${BIOS_INSTALL_DIR}" \
144 all
145
146 # Build the dsp samples (debug and release)
147 cd ${DSPLINK}/dsp/src/samples && make \
148 BASE_CGTOOLS="${CODEGEN_INSTALL_DIR}" \
149 BASE_SABIOS="${BIOS_INSTALL_DIR}" \
150 all
151}
152
153KERNEL_VERSION = "${@base_read_file('${STAGING_KERNEL_DIR}/kernel-abiversion')}"
154
155do_install () {
156
157 # Install the kernel module
158 install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp
159 install -m 0755 ${DSPLINK}/gpp/export/BIN/Linux/${DSPLINKPLATFORM}/RELEASE/dsplinkk.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/
160
161 # Install the example apps (gpp and dsp)
162 install -d ${D}/${installdir}/ti-dsplink-examples/
163 cp ${DSPLINK}/gpp/export/BIN/Linux/${DSPLINKPLATFORM}/RELEASE/*gpp ${D}/${installdir}/ti-dsplink-examples
164 cp ${DSPLINK}/dsp/export/BIN/DspBios/${DSPLINKPLATFORM}/${DSPLINKDSP}/RELEASE/*.out ${D}/${installdir}/ti-dsplink-examples
165
166 # Install the example apps module un/load scripts
167 install ${WORKDIR}/ti-dsplink-examples-loadmodules.sh ${D}/${installdir}/ti-dsplink-examples
168 install ${WORKDIR}/ti-dsplink-examples-unloadmodules.sh ${D}/${installdir}/ti-dsplink-examples
169 install ${WORKDIR}/ti-dsplink-examples-run.sh ${D}/${installdir}/ti-dsplink-examples
170
171 # Install/Stage the Source Tree
172 install -d ${D}${LINK_INSTALL_DIR_RECIPE}
173 cp -pPrf ${S}/* ${D}${LINK_INSTALL_DIR_RECIPE}
174 chmod -R +w ${D}${LINK_INSTALL_DIR_RECIPE}
175
176 # Changes path of include txt file to use LINK_INSTALL_DIR variable for GPP
177 for i in $(find ${D}${LINK_INSTALL_DIR_RECIPE}/dsplink/gpp/export/BIN/Linux/${DSPLINKPLATFORM}/*/ -name "*.txt"); do
178 sed -i ${i} -e s=${S}=\$\{LINK_INSTALL_DIR\}=g
179 done
180
181 # Changes path of include txt file to use LINK_INSTALL_DIR variable for DSP
182 for i in $(find ${D}${LINK_INSTALL_DIR_RECIPE}/dsplink/dsp/export/BIN/DspBios/${DSPLINKPLATFORM}/${DSPLINKDSP}/*/ -name "*.txt"); do
183 sed -i ${i} -e s=${S}=\$\{LINK_INSTALL_DIR\}=g
184 done
185
186}
187
188PACKAGES =+ "ti-dsplink-module"
189FILES_ti-dsplink-module = "/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/dsplinkk.ko"
190RDEPENDS_ti-dsplink-module += "update-modules"
191
192pkg_postinst_ti-dsplink-module () {
193#!/bin/sh
194if [ -n "$D" ]; then
195 exit 1
196fi
197
198depmod -a
199update-modules || true
200}
201
202pkg_postrm_ti-dsplink-module () {
203#!/bin/sh
204update-modules || true
205}
206
207PACKAGES += "ti-dsplink-examples"
208RDEPENDS_ti-dsplink-examples_append = " ti-dsplink-module"
209RDEPENDS_ti-dsplink-examples_append_omap3 += " ti-lpm-module ti-lpm-utils"
210FILES_ti-dsplink-examples = "${installdir}/ti-dsplink-examples/*"
211INSANE_SKIP_ti-dsplink-examples = "1"