1 DESCRIPTION = "DSP Link for TI ARM/DSP processors"
3 DEPENDS = "virtual/kernel perl-native"
7 S = "${WORKDIR}/dsplink_1_60/dsplink"
9 # Needed for buildscripts
14 DSPLINKPLATFORM ?= "DAVINCI"
15 DSPLINKPLATFORM_omap5912osk = "OMAP"
16 DSPLINKPLATFORM_beagleboard = "OMAP3530"
17 DSPLINKPLATFORM_davinci-sffsdr = "DAVINCI"
18 DSPLINKPLATFORM_davinci-dvevm = "DAVINCI"
22 DSPLINKSOC ?= "DM6446"
23 DSPLINKSOC_beagleboard = "3530"
25 DSPCFG ?= "DM6446GEMSHMEM"
26 DSPCFG_beagleboard ?= "OMAP3530SHMEM"
29 GPPOS_beagleboard = "OMAPLSP"
31 export DSPLINKPLATFORM
38 # Clean up stale binaries
39 find ${S} -name "*.ko" -exec rm {} \; || true
40 find ${S} -name "*.o" -exec rm {} \; || true
42 # Run perl script to create appropriate makefiles (v1.60 and up)
45 perl config/bin/dsplinkcfg.pl --platform=${DSPLINKPLATFORM} --nodsp=1 --dspcfg_0=${DSPCFG} --dspos_0=DSPBIOS5XX --gppos=${GPPOS} --comps=ponslrm
48 if [ $(echo ${KERNEL_VERSION} | cut -c5,6) -gt 26 ] ; then
49 sed -i -e s:asm/semaphore:linux/semaphore: ${DSPLINK}/gpp/src/osal/Linux/user.c
50 sed -i -e s:asm/semaphore:linux/semaphore: ${DSPLINK}/gpp/src/osal/Linux/2.6.18/sync.c
58 sed -i -e s:armv7a:armv7-a:g ${DSPLINK}/make/Linux/omap3530_2.6.mk
60 # export various settings to override the defaults in the makefiles
61 export DSP_BASE_CGTOOLS=${TITOOLSDIR}/${TICGTOOLSDIR}
62 export DSP_BASE_BIOS=${TITOOLSDIR}/${TIBIOSDIR}
63 export DSP_BASE_RTDX=${TITOOLSDIR}/${TIBIOSDIR}/packages/ti/rtdx
64 export GPPTOOL_DIR=${CROSS_DIR}
65 export LINUXKERNEL_INSTALL_DIR=${STAGING_KERNEL_DIR}
66 export LINK_INSTALL_DIR=${DSPLINK}
67 export VARIANT=${DSPLINKSOC}
68 export PLATFORM=${DSPLINKPLATFORM}
69 export BASE_TOOLCHAIN=${CROSS_DIR}
70 export BASE_CGTOOLS=${BASE_TOOLCHAIN}/bin
71 # 'OSINC_PLATFORM' is used in both the dsp and gpp sides...
72 export OSINC_PLATFORM1=${CROSS_DIR}/lib/gcc/${TARGET_SYS}/$(${TARGET_PREFIX}gcc -dumpversion)/include
73 export OSINC_TARGET=${BASE_TOOLCHAIN}/target/usr/include
75 # 'ARCHIVER' is being used in the dsp side of the build as well as gpp
76 export ARCHIVER_AR=${TARGET_PREFIX}ar
77 export BASE_SABIOS=${DSP_BASE_BIOS}
79 if [ ! -d ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE ] ; then
80 install -d ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE
84 cp ${WORKDIR}/Makefile-dsplink-gpp ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE/Makefile
85 cd ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE/
87 unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
88 export KDIR=${STAGING_KERNEL_DIR}
91 make -e -f ${WORKDIR}/Makefile-dsplink-dsp
94 if [ -e ${S}/cetools/packages/ti/bios/power/ ] ; then
95 echo "MVTOOL_PREFIX=${TARGET_PREFIX}" > ${S}/Rules.make
96 echo "UCTOOL_PREFIX=${TARGET_PREFIX}" >> ${S}/Rules.make
97 echo "LINUXKERNEL_INSTALL_DIR=${STAGING_KERNEL_DIR}" >> ${S}/Rules.make
98 #export DSPLINK=${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/dsplink
100 # Build the DSP power manager kernel module
101 cd ${S}/cetools/packages/ti/bios/power/modules/${DSPPOWERSOC}/lpm
103 if [ $(echo ${KERNEL_VERSION} | cut -c5,6) -gt 26 ] ; then
104 sed -i -e s:asm/semaphore:linux/semaphore: lpm_driver.c
108 make KERNEL_PATH=${STAGING_KERNEL_DIR} \
109 KERNEL_SRC=${STAGING_KERNEL_DIR} \
110 KERNEL_DIR=${STAGING_KERNEL_DIR} \
111 KERNEL_VERSION=${KERNEL_VERSION} \
112 TOOL_PREFIX=${TARGET_PREFIX} \
113 DSPLINK_REPO=${DSPLINK}/../ \
114 CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
119 if [ -e ${S}/cetools/packages/ti/sdo/linuxutils/cmem ] ; then
120 # Build the cmem kernel module
121 # We unset CFLAGS because kernel modules need different ones, this is basically a verbatim copy of kernel.bbclass and module-base.bbclass
122 unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
123 cd ${S}/cetools/packages/ti/sdo/linuxutils/cmem
125 # This sadly breaks doing -c compile more than once, but I don't have a better solution
126 if [ $(echo ${KERNEL_VERSION} | cut -c5,6) -gt 26 ] ; then
127 patch -p0 < ${WORKDIR}/cmemk-class-device-27.diff
131 oe_runmake KERNEL_PATH=${STAGING_KERNEL_DIR} \
132 KERNEL_SRC=${STAGING_KERNEL_DIR} \
133 KERNEL_VERSION=${KERNEL_VERSION} \
134 CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
140 install -d ${D}/${bindir}
141 install ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE/*gpp ${D}/${bindir} || true
143 install -d ${D}/${datadir}/dsplink
144 for i in $(find ${DSPLINK}/dsp/BUILD/ -name "*.out") ; do
145 install ${i} ${D}/${datadir}/dsplink
148 install -d ${D}/${libdir}
149 install -m 0755 ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE/dsplink.lib ${D}/${libdir}
151 install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp
152 cp ${DSPLINK}/gpp/BUILD/EXPORT/RELEASE/dsplinkk.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/
153 cp ${S}/cetools/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp || true
154 cp ${S}/cetools/packages/ti/bios/power/${DSPPOWERSOC}/lpm/*.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp || true
155 cp ${S}/cetools/packages/ti/bios/power/modules/${DSPPOWERSOC}/lpm/*.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp || true
159 # Codec Engine and friends need a complete tree, so stage it all
161 install -d ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/dsplink
162 cp -pPr ${S}/* ${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/dsplink/
165 pkg_postinst_dsplink-module () {
170 update-modules || true
173 pkg_postrm_dsplink-module () {
174 update-modules || true
177 PACKAGES =+ "dsplink-apps dsplink-module ti-lpm-module ti-cmemk-module"
178 FILES_dsplink-module = "${sysconfdir} /lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/dsplinkk.ko"
179 FILES_dsplink-apps = "${bindir}/* ${datadir}/dsplink/* ${libdir}/dsplink.lib"
181 FILES_ti-lpm-module = "/lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/*lpm*ko"
183 pkg_postinst_ti-lpm-module () {
188 update-modules || true
191 pkg_postrm_ti-lpm-module () {
192 update-modules || true
195 FILES_ti-cmemk-module = "${sysconfdir} /lib/modules/${KERNEL_VERSION}/kernel/drivers/dsp/cmemk.ko"
197 pkg_postinst_ti-cmemk-module () {
202 update-modules || true
205 pkg_postrm_ti-cmemk-module () {
206 update-modules || true
211 INHIBIT_PACKAGE_STRIP = "1"
213 PACKAGE_ARCH = "${MACHINE_ARCH}"