aboutsummaryrefslogtreecommitdiffstats
path: root/package/ltq-tapidemo
diff options
context:
space:
mode:
Diffstat (limited to 'package/ltq-tapidemo')
-rw-r--r--package/ltq-tapidemo/Config.in47
-rw-r--r--package/ltq-tapidemo/Makefile82
-rw-r--r--package/ltq-tapidemo/files/bringup_tapidemo89
-rw-r--r--package/ltq-tapidemo/patches/100-ifxmips.patch61
-rw-r--r--package/ltq-tapidemo/patches/110-filename.patch141
5 files changed, 420 insertions, 0 deletions
diff --git a/package/ltq-tapidemo/Config.in b/package/ltq-tapidemo/Config.in
new file mode 100644
index 000000000..a799eddd0
--- /dev/null
+++ b/package/ltq-tapidemo/Config.in
@@ -0,0 +1,47 @@
+choice
+ prompt "board selection"
+ depends on PACKAGE_ltq-tapidemo
+ default VOICE_CPE_TAPIDEMO_BOARD_EASY50712_V3 if TARGET_lantiq_danube
+ default VOICE_CPE_TAPIDEMO_BOARD_EASY508xx if TARGET_lantiq_ar9
+ default VOICE_CPE_TAPIDEMO_BOARD_EASY80910 if TARGET_lantiq_vr9
+ help
+ Select the target platform.
+
+ config VOICE_CPE_TAPIDEMO_BOARD_EASY50712
+ bool "Danube reference board"
+
+ config VOICE_CPE_TAPIDEMO_BOARD_EASY50712_V3
+ bool "Danube reference board V3"
+
+ config VOICE_CPE_TAPIDEMO_BOARD_EASY508xx
+ bool "AR9/GR9 reference board"
+
+ config VOICE_CPE_TAPIDEMO_BOARD_EASY80910
+ bool "VR9 reference board"
+endchoice
+
+config VOICE_CPE_TAPIDEMO_QOS
+ bool "enable QOS support"
+ depends on PACKAGE_ltq-tapidemo
+ select PACKAGE_kmod-ltq-kpi2udp
+ default y
+ help
+ Option to enable the KPI2UDP RTP packet acceleration path
+ (highly recommended for VoIP).
+
+config VOICE_CPE_TAPIDEMO_FAX_T.38_FW
+ bool "enable T.38 fax relay"
+ depends on (TARGET_lantiq_ar9 || TARGET_lantiq_vr9) && PACKAGE_ltq-tapidemo
+ default n
+ help
+ enable T.38 fax relay demo.
+
+config VOICE_CPE_TAPIDEMO_FW_FILE
+ string "override default firmware file"
+ depends on PACKAGE_ltq-tapidemo
+ default "falcon_voip_fw.bin" if TARGET_lantiq_falcon
+
+config VOICE_CPE_TAPIDEMO_BBD_FILE
+ string "override default coefficient file"
+ depends on PACKAGE_ltq-tapidemo
+ default "falcon_bbd.bin" if TARGET_lantiq_falcon
diff --git a/package/ltq-tapidemo/Makefile b/package/ltq-tapidemo/Makefile
new file mode 100644
index 000000000..f4ac64601
--- /dev/null
+++ b/package/ltq-tapidemo/Makefile
@@ -0,0 +1,82 @@
+#
+# Copyright (C) 2008-2010 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
+
+PKG_NAME:=tapidemo
+PKG_VERSION:=5.1.0.53
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
+PKG_MD5SUM:=c970becc46b2935fb9e18f795d4e8469
+
+PKG_FIXUP:=autoreconf
+
+include $(INCLUDE_DIR)/ltqtapi.mk
+include $(INCLUDE_DIR)/package.mk
+
+define Package/ltq-tapidemo
+ SUBMENU:=Telephony
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=TAPIdemo application for Lantiq boards
+ URL:=http://www.lantiq.com/
+ DEPENDS:=$(LTQ_TAPI_DEPENDS) +libpthread
+ MAINTAINER:=John Crispin <blogic@openwrt.org>
+ MENU:=1
+endef
+
+define Package/ltq-tapidemo/description
+ Voice Access mini-PBX Demo Application
+endef
+
+define Package/ltq-tapidemo/config
+ source "$(SOURCE)/Config.in"
+endef
+
+TARGET_LDFLAGS+=-lpthread
+
+CONFIGURE_ARGS += \
+ ARCH=$(LINUX_KARCH) \
+ --enable-linux-26 \
+ --enable-kernelincl="$(LINUX_DIR)/include" \
+ --with-drvincl="$(STAGING_DIR)/usr/include" \
+ --with-ifxos-incl=$(STAGING_DIR)/usr/include/ifxos \
+ --with-ifxos-lib=$(STAGING_DIR)/usr/lib \
+ $(call autoconf_bool,CONFIG_VOICE_CPE_TAPI_QOS,qos) \
+ $(call autoconf_bool,CONFIG_VOICE_CPE_TAPIDEMO_FAX_T,fax-t38) \
+ --enable-trace \
+ --enable-fs
+
+ifeq ($(CONFIG_VOICE_CPE_TAPIDEMO_BOARD_EASY50712),y)
+ CONFIGURE_ARGS += --enable-boardname=EASY50712
+endif
+ifeq ($(CONFIG_VOICE_CPE_TAPIDEMO_BOARD_EASY50712_V3),y)
+ CONFIGURE_ARGS += --enable-boardname=EASY50712_V3
+endif
+ifeq ($(CONFIG_VOICE_CPE_TAPIDEMO_BOARD_EASY508xx),y)
+ CONFIGURE_ARGS += --enable-boardname=EASY508XX
+endif
+ifeq ($(CONFIG_VOICE_CPE_TAPIDEMO_BOARD_EASY80910),y)
+ CONFIGURE_ARGS += --enable-boardname=EASY508XX
+endif
+ifneq ($(CONFIG_VOICE_CPE_TAPIDEMO_FW_FILE),)
+ CONFIGURE_ARGS += --with-fw-file="$(strip $(subst ",, $(CONFIG_VOICE_CPE_TAPIDEMO_FW_FILE)))"
+endif
+ifneq ($(CONFIG_VOICE_CPE_TAPIDEMO_BBD_FILE), "")
+CONFIGURE_ARGS += --with-bbd-file="$(strip $(subst ",, $(CONFIG_VOICE_CPE_TAPIDEMO_BBD_FILE)))"
+endif
+
+define Package/ltq-tapidemo/install
+ $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tapidemo $(1)/usr/sbin
+ $(INSTALL_BIN) ./files/bringup_tapidemo $(1)/etc/init.d/tapidemo
+endef
+
+$(eval $(call BuildPackage,ltq-tapidemo))
diff --git a/package/ltq-tapidemo/files/bringup_tapidemo b/package/ltq-tapidemo/files/bringup_tapidemo
new file mode 100644
index 000000000..6eb13d25f
--- /dev/null
+++ b/package/ltq-tapidemo/files/bringup_tapidemo
@@ -0,0 +1,89 @@
+#!/bin/sh /etc/rc.common
+# (C) 2008 openwrt.org
+
+START=96
+
+[ ! -f /dev/vmmc10 ] && {
+ mknod /dev/vmmc10 c 122 10
+ mknod /dev/vmmc11 c 122 11
+ mknod /dev/vmmc12 c 122 12
+ mknod /dev/vmmc13 c 122 13
+ mknod /dev/vmmc14 c 122 14
+ mknod /dev/vmmc15 c 122 15
+ mknod /dev/vmmc16 c 122 16
+ mknod /dev/vmmc17 c 122 17
+ mknod /dev/vmmc18 c 122 18
+}
+
+TD_EXTRA_FLAGS_FXO=
+TD_EXTRA_FLAGS_KPI2UDP=
+TD_DOWNLOAD_PATH=/lib/firmware/
+DEV_NODE_TERIDIAN=ter10
+
+ # Show help
+help()
+{
+ echo "Usage:"
+ echo " - $0 WAN-IF-NAME - start TAPIDEMO without FXO support"
+ echo " - $0 WAN-IF-NAME fxo - start TAPIDEMO with FXO support."
+ echo " - $0 stop - stop TAPIDEMO"
+}
+
+# Check if device node for Teridian exists
+checkFxoSupport()
+{
+ if [ ! -e /dev/$DEV_NODE_TERIDIAN ];then
+ echo "FXO support is disabled. Can not find required driver's device node."
+ else
+ TD_EXTRA_FLAGS_FXO="-x"
+ fi
+}
+
+# Check if module drv_kpi2udp is loaded
+checkKpi2UdpSupport()
+{
+ tmp=`cat /proc/modules | grep 'drv_kpi2udp '`
+ if [ "$tmp" != "" ]; then
+ TD_EXTRA_FLAGS_KPI2UDP="-q"
+ fi
+}
+
+start()
+{
+ TD_WANIF=$1
+
+ TD_WANIF_IP=`ifconfig $TD_WANIF | grep 'inet addr:' | cut -f2 -d: | cut -f1 -d' '`
+ if [ "$TD_WANIF_IP" = "" ]; then
+ echo "Error, getting IP address for network device $TD_WANIF failed."
+ exit 1
+ fi
+
+ if [ "$2" = "" ];then
+ # FXO support is disabled.
+ continue
+ elif [ "$2" = "fxo" ];then
+ checkFxoSupport
+ else
+ echo "Error, unknown second parameter."
+ help
+ exit 1
+ fi
+
+ checkKpi2UdpSupport
+
+ if [ -r /etc/rc.conf ]; then
+ . /etc/rc.conf
+ fi
+
+ TD_DEBUG_LEVEL=$tapiDebugLevel
+ if [ "$TD_DEBUG_LEVEL" = "" ]; then
+ TD_DEBUG_LEVEL=3
+ fi
+
+ /usr/sbin/tapidemo -d $TD_DEBUG_LEVEL $TD_EXTRA_FLAGS_FXO $TD_EXTRA_FLAGS_KPI2UDP -i $TD_WANIF_IP -l $TD_DOWNLOAD_PATH &
+}
+
+stop()
+{
+ killall tapidemo > /dev/null 2> /dev/null
+}
diff --git a/package/ltq-tapidemo/patches/100-ifxmips.patch b/package/ltq-tapidemo/patches/100-ifxmips.patch
new file mode 100644
index 000000000..3dde8304f
--- /dev/null
+++ b/package/ltq-tapidemo/patches/100-ifxmips.patch
@@ -0,0 +1,61 @@
+--- a/src/board_easy50712.c
++++ b/src/board_easy50712.c
+@@ -32,7 +32,9 @@
+ #ifdef OLD_BSP
+ #include "asm/danube/port.h"
+ #else
+- #include "asm/ifx/ifx_gpio.h"
++#ifdef FXO
++# include "asm/ifx/ifx_gpio.h"
++#endif
+ #endif
+
+ /* ============================= */
+--- a/src/board_easy508xx.c
++++ b/src/board_easy508xx.c
+@@ -32,8 +32,6 @@
+ #endif /* FXO */
+ #include "pcm.h"
+
+-#include "asm/ifx/ifx_gpio.h"
+-
+ #ifdef TD_DECT
+ #include "td_dect.h"
+ #endif /* TD_DECT */
+--- a/src/common.c
++++ b/src/common.c
+@@ -7117,7 +7117,7 @@ IFX_return_t Common_GPIO_ClosePort(IFX_c
+ IFX_return_t Common_GPIO_ReservePin(IFX_int32_t nFd, IFX_int32_t nPort,
+ IFX_int32_t nPin, IFX_int32_t nModule)
+ {
+-#ifndef OLD_BSP
++#if !defined(OLD_BSP) && defined(IFX_GPIO_IOC_PIN_RESERVE)
+ TD_PARAMETER_CHECK((NO_GPIO_FD >= nFd), nFd, IFX_ERROR);
+
+ IFX_return_t nRet;
+@@ -7155,7 +7155,7 @@ IFX_return_t Common_GPIO_ReservePin(IFX_
+ IFX_return_t Common_GPIO_FreePin(IFX_int32_t nFd, IFX_int32_t nPort,
+ IFX_int32_t nPin, IFX_int32_t nModule)
+ {
+-#ifndef OLD_BSP
++#if !defined(OLD_BSP) && defined(IFX_GPIO_IOC_PIN_RESERVE)
+ TD_PARAMETER_CHECK((NO_GPIO_FD >= nFd), nFd, IFX_ERROR);
+
+ IFX_return_t nRet;
+--- a/src/common.h
++++ b/src/common.h
+@@ -79,12 +79,12 @@
+ #ifdef OLD_BSP
+ #include "asm/danube/port.h"
+ #else
+- #include "asm/ifx/ifx_gpio.h"
++ /*#include "asm/ifx/ifx_gpio.h"*/
+ #endif
+ #endif
+
+ #if (defined(AR9) || defined(VR9))
+- #include "asm/ifx/ifx_gpio.h"
++ /*#include "asm/ifx/ifx_gpio.h"*/
+ #endif
+
+ #ifdef TD_DECT
diff --git a/package/ltq-tapidemo/patches/110-filename.patch b/package/ltq-tapidemo/patches/110-filename.patch
new file mode 100644
index 000000000..73c2e977b
--- /dev/null
+++ b/package/ltq-tapidemo/patches/110-filename.patch
@@ -0,0 +1,141 @@
+--- a/configure.in
++++ b/configure.in
+@@ -1665,6 +1665,30 @@ AC_ARG_WITH(cflags,
+ ]
+ )
+
++dnl overwrite default FW file name
++AC_ARG_WITH(fw-file,
++ AS_HELP_STRING(
++ [--with-fw-file=val],
++ [overwrite default FW file name]
++ ),
++ [
++ AC_MSG_RESULT([using firmware file $withval])
++ AC_DEFINE_UNQUOTED([TD_FW_FILE], ["$withval"], [using firmware file])
++ ]
++)
++
++dnl overwrite default BBD file name
++AC_ARG_WITH(bbd-file,
++ AS_HELP_STRING(
++ [--with-bbd-file=val],
++ [overwrite default BBD file name]
++ ),
++ [
++ AC_MSG_RESULT([using BBD file $withval])
++ AC_DEFINE_UNQUOTED([TD_BBD_FILE], ["$withval"], [using BBD file])
++ ]
++)
++
+ AC_CONFIG_FILES([Makefile])
+ AC_CONFIG_FILES([src/Makefile])
+
+--- a/src/device_vmmc.c
++++ b/src/device_vmmc.c
+@@ -49,40 +49,55 @@
+
+
+ #ifdef USE_FILESYSTEM
++#ifdef TD_BBD_FILE
++ IFX_char_t* sBBD_CRAM_File_VMMC = TD_BBD_FILE;
++ IFX_char_t* sBBD_CRAM_File_VMMC_Old = TD_BBD_FILE;
++#else
++ /** File holding coefficients. */
++#ifdef DANUBE
++ /** Prepare file names for DANUBE */
++ IFX_char_t* sBBD_CRAM_File_VMMC = "danube_bbd.bin";
++ IFX_char_t* sBBD_CRAM_File_VMMC_Old = "danube_bbd_fxs.bin";
++#elif AR9
++ IFX_char_t* sBBD_CRAM_File_VMMC = "ar9_bbd.bin";
++ IFX_char_t* sBBD_CRAM_File_VMMC_Old = "ar9_bbd_fxs.bin";
++#elif VINAX
++ IFX_char_t* sBBD_CRAM_File_VMMC = "bbd.bin";
++ IFX_char_t* sBBD_CRAM_File_VMMC_Old = "";
++#elif VR9
++ IFX_char_t* sBBD_CRAM_File_VMMC = "vr9_bbd.bin";
++ IFX_char_t* sBBD_CRAM_File_VMMC_Old = "vr9_bbd_fxs.bin";
++#else
++#endif
++#endif /* TD_BBD_FILE */
++#ifdef TD_FW_FILE
++ IFX_char_t* sPRAMFile_VMMC = TD_FW_FILE;
++ IFX_char_t* sPRAMFile_VMMC_Old = TD_FW_FILE;
++ IFX_char_t* sDRAMFile_VMMC = "";
++#else
+ #ifdef DANUBE
+ /** Prepare file names for DANUBE */
+ IFX_char_t* sPRAMFile_VMMC = "voice_danube_firmware.bin";
+ IFX_char_t* sPRAMFile_VMMC_Old = "danube_firmware.bin";
+ IFX_char_t* sDRAMFile_VMMC = "";
+- /** File holding coefficients. */
+- IFX_char_t* sBBD_CRAM_File_VMMC = "danube_bbd.bin";
+- IFX_char_t* sBBD_CRAM_File_VMMC_Old = "danube_bbd_fxs.bin";
+ #elif AR9
+ /** Prepare file names for AR9 */
+ IFX_char_t* sPRAMFile_VMMC = "voice_ar9_firmware.bin";
+ IFX_char_t* sPRAMFile_VMMC_Old = "ar9_firmware.bin";
+ IFX_char_t* sDRAMFile_VMMC = "";
+- /** File holding coefficients. */
+- IFX_char_t* sBBD_CRAM_File_VMMC = "ar9_bbd.bin";
+- IFX_char_t* sBBD_CRAM_File_VMMC_Old = "ar9_bbd_fxs.bin";
+ #elif VINAX
+ /** Prepare file names for VINAX */
+ IFX_char_t* sPRAMFile_VMMC = "voice_vinax_firmware.bin";
+ IFX_char_t* sPRAMFile_VMMC_Old = "firmware.bin";
+ IFX_char_t* sDRAMFile_VMMC = "";
+- /** File holding coefficients. */
+- IFX_char_t* sBBD_CRAM_File_VMMC = "bbd.bin";
+- IFX_char_t* sBBD_CRAM_File_VMMC_Old = "";
+ #elif VR9
+ /** Prepare file names for VR9 */
+ IFX_char_t* sPRAMFile_VMMC = "voice_vr9_firmware.bin";
+ IFX_char_t* sPRAMFile_VMMC_Old = "vr9_firmware.bin";
+ IFX_char_t* sDRAMFile_VMMC = "";
+- /** File holding coefficients. */
+- IFX_char_t* sBBD_CRAM_File_VMMC = "vr9_bbd.bin";
+- IFX_char_t* sBBD_CRAM_File_VMMC_Old = "vr9_bbd_fxs.bin";
+ #else
+ #endif
++#endif /* TD_FW_FILE */
+ #endif /* USE_FILESYSTEM */
+
+ /** Device names */
+--- a/src/common.c
++++ b/src/common.c
+@@ -509,6 +509,10 @@ IFX_return_t Common_CheckDownloadPath(IF
+ if (IFX_TRUE != Common_FindBBD_CRAM(pCpuDevice, psPath, psFile))
+ {
+ ret = IFX_ERROR;
++ if(bPrintTrace)
++ TRACE(TAPIDEMO, DBG_LEVEL_LOW,
++ ("Download path %s does not contain the required file %s.\n",
++ psPath, psFile));
+ }
+
+ if ((IFX_SUCCESS == ret) &&
+@@ -521,6 +525,10 @@ IFX_return_t Common_CheckDownloadPath(IF
+ {
+ ret = Common_CheckFileExists(psFile);
+ }
++ if(bPrintTrace && ret != IFX_SUCCESS)
++ TRACE(TAPIDEMO, DBG_LEVEL_LOW,
++ ("Download path %s does not contain the required file %s.\n",
++ psPath, psFile));
+ }
+ #ifndef TAPI_VERSION4
+ if (IFX_SUCCESS == ret)
+@@ -532,13 +540,6 @@ IFX_return_t Common_CheckDownloadPath(IF
+ }
+ #endif
+
+- if (IFX_ERROR == ret)
+- {
+- if(bPrintTrace)
+- TRACE(TAPIDEMO, DBG_LEVEL_LOW,
+- ("Download path %s does not contain the required files.\n",
+- psPath));
+- }
+
+ return ret;
+ } /* Common_CheckDownloadPath */