[OpenWrt-Devel] [PATCH] lantiq: Update to the latest DSL driver / application versions

Martin Blumenstingl martin.blumenstingl at googlemail.com
Tue Sep 8 14:10:41 EDT 2015


Thanks to Sylwester Petela for testing my patch (successfully on an
ADSL connection) and for pointing out some configuration mistakes.
Others (including me) have also successfully tested this extensively
on VDSL connections.

Signed-off-by: Martin Blumenstingl <martin.blumenstingl at googlemail.com>
---
 package/kernel/lantiq/ltq-ifxos/Makefile           |   9 +-
 .../lantiq/ltq-ifxos/patches/100-compat.patch      |  27 +-
 package/kernel/lantiq/ltq-vdsl-mei/Makefile        |   9 +-
 .../lantiq/ltq-vdsl-mei/patches/100-compat.patch   | 496 ++++++++++-----------
 package/kernel/lantiq/ltq-vdsl/Makefile            |  12 +-
 .../lantiq/ltq-vdsl/patches/100-compat.patch       | 156 ++-----
 package/network/config/ltq-vdsl-app/Makefile       |  13 +-
 .../network/config/ltq-vdsl-app/files/dsl_control  | 106 -----
 .../config/ltq-vdsl-app/patches/100-compat.patch   |  34 +-
 9 files changed, 316 insertions(+), 546 deletions(-)

diff --git a/package/kernel/lantiq/ltq-ifxos/Makefile b/package/kernel/lantiq/ltq-ifxos/Makefile
index 3758752..9919a9b 100644
--- a/package/kernel/lantiq/ltq-ifxos/Makefile
+++ b/package/kernel/lantiq/ltq-ifxos/Makefile
@@ -7,11 +7,12 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=lib_ifxos
-PKG_VERSION:=1.5.14
+PKG_VERSION:=1.5.19
+PKG_RELEASE:=1
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_RELEASE:=3
-PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
-PKG_MD5SUM:=bc107f9d8ff6bed4c2760a2817bbb029
+PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_URL:=https://github.com/xdarklight/$(PKG_NAME)/archive/v$(PKG_VERSION)
+PKG_MD5SUM:=39eace039ae4c3dde4da96bfdbee2721
 PKG_MAINTAINER:=John Crispin <blogic at openwrt.org>
 
 PKG_USE_MIPS16:=0
diff --git a/package/kernel/lantiq/ltq-ifxos/patches/100-compat.patch b/package/kernel/lantiq/ltq-ifxos/patches/100-compat.patch
index db2dd8b..dcd260e 100644
--- a/package/kernel/lantiq/ltq-ifxos/patches/100-compat.patch
+++ b/package/kernel/lantiq/ltq-ifxos/patches/100-compat.patch
@@ -1,27 +1,14 @@
---- a/configure.in
-+++ b/configure.in
-@@ -64,7 +64,7 @@ dnl Set kernel build path
- AC_ARG_ENABLE(kernelbuild,
- 	AS_HELP_STRING(--enable-kernelbuild=x,Set the target kernel build path (only for kernel 2.6.x)),
- 	[
--		if test -e $enableval/include/linux/autoconf.h; then
-+		if test -e $enableval/include/linux/autoconf.h -o -e $enableval/include/generated/autoconf.h; then
- 			AC_SUBST([KERNEL_BUILD_PATH],[$enableval])
- 		else
- 			AC_MSG_ERROR([The kernel build directory is not valid or not configured!])
 --- a/src/linux/ifxos_linux_thread_drv.c
 +++ b/src/linux/ifxos_linux_thread_drv.c
-@@ -34,8 +34,8 @@
- #include <linux/sched.h>
- #include <linux/version.h>
- #include <linux/completion.h>
--#include <linux/smp_lock.h>
+@@ -38,6 +38,7 @@
+ #include <linux/smp_lock.h>
+ #endif
  #include <linux/signal.h>
 +#include <linux/kthread.h>
  
  
  #include "ifx_types.h"
-@@ -68,10 +68,6 @@
+@@ -70,10 +71,6 @@
  #if ( defined(IFXOS_HAVE_THREAD) && (IFXOS_HAVE_THREAD == 1) )
  
  
@@ -32,7 +19,7 @@
  /* ============================================================================
     IFX Linux adaptation - Kernel Thread handling
     ========================================================================= */
-@@ -96,9 +92,9 @@ IFXOS_STATIC IFX_int32_t IFXOS_KernelThr
+@@ -98,9 +95,9 @@ IFXOS_STATIC IFX_int32_t IFXOS_KernelThr
     - IFX_SUCCESS on success
     - IFX_ERROR on error
  */
@@ -44,7 +31,7 @@
     IFX_int32_t retVal          = IFX_ERROR;
  #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
     struct task_struct *kthread = current;
-@@ -139,7 +135,7 @@ IFXOS_STATIC IFX_int32_t IFXOS_KernelThr
+@@ -141,7 +138,7 @@ IFXOS_STATIC IFX_int32_t IFXOS_KernelThr
     /* let others run */
     unlock_kernel();
  #else
@@ -53,7 +40,7 @@
  
     /* Enable signals in Kernel >= 2.6 */
     allow_signal(SIGKILL);
-@@ -218,9 +214,7 @@ IFX_int32_t IFXOS_ThreadInit(
+@@ -221,9 +218,7 @@ IFX_int32_t IFXOS_ThreadInit(
           init_completion(&pThrCntrl->thrCompletion);
  
           /* start kernel thread via the wrapper function */
diff --git a/package/kernel/lantiq/ltq-vdsl-mei/Makefile b/package/kernel/lantiq/ltq-vdsl-mei/Makefile
index 17d7755..0f9f48d 100644
--- a/package/kernel/lantiq/ltq-vdsl-mei/Makefile
+++ b/package/kernel/lantiq/ltq-vdsl-mei/Makefile
@@ -7,14 +7,14 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=ltq-vdsl-vr9-mei
-PKG_VERSION:=1.2.0
+PKG_VERSION:=1.4.8.4
 PKG_RELEASE:=1
 
 PKG_BASE_NAME:=drv_mei_cpe
 PKG_SOURCE:=$(PKG_BASE_NAME)-$(PKG_VERSION).tar.gz
 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_BASE_NAME)-$(PKG_VERSION)
-PKG_SOURCE_URL:=http://downloads.openwrt.org/sources/
-PKG_MD5SUM:=cf2fccc1bc72390b2aec46650abf2f20
+PKG_SOURCE_URL:=https://github.com/xdarklight/$(PKG_BASE_NAME)/archive/v$(PKG_VERSION)
+PKG_MD5SUM:=30570722dc7f19ff2f0228838043f2a2
 PKG_FIXUP:=autoreconf
 PKG_MAINTAINER:=John Crispin <blogic at openwrt.org>
 PKG_USE_MIPS16:=0
@@ -49,9 +49,10 @@ CONFIGURE_ARGS += \
 	--enable-error_print \
 	--enable-ifxos-include="-I$(STAGING_DIR)/usr/include/ifxos/" \
 	--enable-ifxos-library="-L$(STAGING_DIR)/usr/lib" \
-	--enable-add_drv_cflags="$(DEBUG) -DMEI_DRV_ATM_PTM_INTERFACE_ENABLE=1 -fno-pic -mno-abicalls -mlong-calls -O2 -g0" \
+	--enable-add_drv_cflags="$(DEBUG) -DMEI_DRV_ATM_PTM_INTERFACE_ENABLE=1 -DMEI_EXPORT_INTERNAL_API=1 -DMEI_SUPPORT_DSM=0 -fno-pic -mno-abicalls -mlong-calls -O2 -g0" \
 	--enable-linux-26 \
 	--enable-kernelbuild="$(LINUX_DIR)" \
+	--enable-drv_test_appl=0 \
 	ARCH=$(LINUX_KARCH)
 
 define Build/InstallDev
diff --git a/package/kernel/lantiq/ltq-vdsl-mei/patches/100-compat.patch b/package/kernel/lantiq/ltq-vdsl-mei/patches/100-compat.patch
index f63d52c..c0e69a9 100644
--- a/package/kernel/lantiq/ltq-vdsl-mei/patches/100-compat.patch
+++ b/package/kernel/lantiq/ltq-vdsl-mei/patches/100-compat.patch
@@ -1,8 +1,6 @@
-Index: drv_mei_cpe-1.2.0/src/drv_mei_cpe_common.c
-===================================================================
---- drv_mei_cpe-1.2.0.orig/src/drv_mei_cpe_common.c	2011-10-26 00:49:51.000000000 +0200
-+++ drv_mei_cpe-1.2.0/src/drv_mei_cpe_common.c	2013-09-01 21:04:12.197022086 +0200
-@@ -20,7 +20,6 @@
+--- a/src/drv_mei_cpe_common.c
++++ b/src/drv_mei_cpe_common.c
+@@ -19,7 +19,6 @@
  /* get at first the driver configuration */
  #include "drv_mei_cpe_config.h"
  
@@ -10,312 +8,270 @@ Index: drv_mei_cpe-1.2.0/src/drv_mei_cpe_common.c
  #include "drv_mei_cpe_os.h"
  #include "drv_mei_cpe_dbg.h"
  
-Index: drv_mei_cpe-1.2.0/configure.in
-===================================================================
---- drv_mei_cpe-1.2.0.orig/configure.in	2012-01-20 17:41:07.000000000 +0100
-+++ drv_mei_cpe-1.2.0/configure.in	2013-09-01 21:04:12.197022086 +0200
-@@ -140,7 +140,7 @@
- AC_ARG_ENABLE(kernelbuild,
-    AC_HELP_STRING([--enable-kernelbuild=x],[Set the target kernel build path]),
-     [
--        if test -e $enableval/include/linux/autoconf.h; then
-+        if test -e $enableval/include/generated/autoconf.h; then
-             AC_SUBST([KERNEL_BUILD_PATH],[$enableval])
-         else
-             AC_MSG_ERROR([The kernel build directory is not valid or not configured!])
-Index: drv_mei_cpe-1.2.0/configure
-===================================================================
---- drv_mei_cpe-1.2.0.orig/configure	2012-01-20 17:50:02.000000000 +0100
-+++ drv_mei_cpe-1.2.0/configure	2013-09-01 21:04:14.361022179 +0200
-@@ -617,6 +617,7 @@
- am__fastdepCC_FALSE
- am__fastdepCC_TRUE
- CCDEPMODE
-+am__nodep
- AMDEPBACKSLASH
- AMDEP_FALSE
- AMDEP_TRUE
-@@ -2367,11 +2368,11 @@
- 
- # We need awk for the "check" target.  The system "awk" is bad on
- # some platforms.
--# Always define AMTAR for backward compatibility.
-+# Always define AMTAR for backward compatibility.  Yes, it's still used
-+# in the wild :-(  We should find a proper way to deprecate it ...
-+AMTAR='$${TAR-tar}'
- 
--AMTAR=${AMTAR-"${am_missing_run}tar"}
--
--am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
-+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
- 
- 
- 
-@@ -3219,6 +3220,7 @@
- if test "x$enable_dependency_tracking" != xno; then
-   am_depcomp="$ac_aux_dir/depcomp"
-   AMDEPBACKSLASH='\'
-+  am__nodep='_no'
- fi
-  if test "x$enable_dependency_tracking" != xno; then
-   AMDEP_TRUE=
-@@ -3243,6 +3245,7 @@
-   # instance it was reported that on HP-UX the gcc test will end up
-   # making a dummy file named `D' -- because `-MD' means `put the output
-   # in D'.
-+  rm -rf conftest.dir
-   mkdir conftest.dir
-   # Copy depcomp to subdir because otherwise we won't find it if we're
-   # using a relative directory.
-@@ -3302,7 +3305,7 @@
- 	break
-       fi
-       ;;
--    msvisualcpp | msvcmsys)
-+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-       # This compiler won't grok `-c -o', but also, the minuso test has
-       # not run yet.  These depmodes are late enough in the game, and
-       # so weak that their functioning should not be impacted.
-@@ -3656,7 +3659,7 @@
- # Check whether --enable-kernelbuild was given.
- if test "${enable_kernelbuild+set}" = set; then :
-   enableval=$enable_kernelbuild;
--        if test -e $enableval/include/linux/autoconf.h; then
-+        if test -e $enableval/include/generated/autoconf.h; then
-             KERNEL_BUILD_PATH=$enableval
- 
-         else
-Index: drv_mei_cpe-1.2.0/src/drv_mei_cpe_linux.h
-===================================================================
---- drv_mei_cpe-1.2.0.orig/src/drv_mei_cpe_linux.h	2011-07-25 20:41:02.000000000 +0200
-+++ drv_mei_cpe-1.2.0/src/drv_mei_cpe_linux.h	2013-09-01 21:04:12.197022086 +0200
-@@ -34,8 +34,6 @@
- #include <linux/sched.h>
- #include <linux/interrupt.h>
- 
--#include <asm/ifx/irq.h>
--
- #if (MEI_DRV_IFXOS_ENABLE == 0)
- 
- #include <linux/version.h>
-@@ -44,8 +42,6 @@
+--- a/src/drv_mei_cpe_linux.h
++++ b/src/drv_mei_cpe_linux.h
+@@ -51,12 +51,6 @@
  #include <linux/poll.h>
  #include <linux/types.h>
  
--#include <asm/ifx/ifx_types.h>
+-#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0))
+-   #include <asm/ifx/ifx_types.h>
+-#else
+-   #include <ifx_types.h>
+-#endif
 -
  #endif /* #if (MEI_DRV_IFXOS_ENABLE == 0)*/
  
  /* ============================================================================
-Index: drv_mei_cpe-1.2.0/src/drv_mei_cpe_mei_vr9.h
-===================================================================
---- drv_mei_cpe-1.2.0.orig/src/drv_mei_cpe_mei_vr9.h	2011-07-25 20:41:02.000000000 +0200
-+++ drv_mei_cpe-1.2.0/src/drv_mei_cpe_mei_vr9.h	2013-09-01 21:04:12.197022086 +0200
-@@ -40,12 +40,6 @@
- #endif
- #endif
+--- a/src/drv_mei_cpe_linux.c
++++ b/src/drv_mei_cpe_linux.c
+@@ -98,6 +98,8 @@
  
--#ifdef LINUX
--   #include <asm/ifx/ifx_pmu.h>
--#else
--   #error "Please check PMU driver path!"
--#endif
--
- /* ============================================================================
-    Module      :  RCU register address and bits
-    ========================================================================= */
-Index: drv_mei_cpe-1.2.0/src/drv_mei_cpe_api_atm_ptm_intern.c
-===================================================================
---- drv_mei_cpe-1.2.0.orig/src/drv_mei_cpe_api_atm_ptm_intern.c	2011-07-25 20:41:02.000000000 +0200
-+++ drv_mei_cpe-1.2.0/src/drv_mei_cpe_api_atm_ptm_intern.c	2013-09-01 21:04:12.197022086 +0200
-@@ -25,11 +25,7 @@
- #include "ifx_types.h"
- #include "drv_mei_cpe_os.h"
+ #include "drv_mei_cpe_api_atm_ptm_intern.h"
  
--#ifdef LINUX
--   #include <asm/ifx/ifx_atm.h>
--#else
--   #error "ATM/PTM internal interface is only supported for Linux!"
--#endif
-+#include <lantiq_atm.h>
++#include <lantiq_soc.h>
++
+ /* ===================================
+    extern function declarations
+    =================================== */
+@@ -1783,7 +1785,9 @@ static int __init MEI_module_init (void)
+       return (result);
+    }
  
- /** get interface and configuration */
- #include "drv_mei_cpe_interface.h"
-Index: drv_mei_cpe-1.2.0/src/drv_mei_cpe_linux.c
-===================================================================
---- drv_mei_cpe-1.2.0.orig/src/drv_mei_cpe_linux.c	2011-07-25 20:41:02.000000000 +0200
-+++ drv_mei_cpe-1.2.0/src/drv_mei_cpe_linux.c	2013-09-01 21:04:12.197022086 +0200
-@@ -32,11 +32,9 @@
- #include <linux/module.h>
- #include <linux/version.h>
- 
--#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
--#include <linux/utsrelease.h>
--#endif
--#include <linux/init.h>
-+#include <generated/utsrelease.h>
++#if 0
+    ppa_callback_set(LTQ_MEI_SHOWTIME_CHECK, (void *)ltq_mei_atm_showtime_check);
++#endif
+ 
+    return 0;
+ }
+@@ -1963,7 +1967,9 @@ static void MEI_module_exit (void)
+             ("MEI_DRV: Chipset Basic Exit failed" MEI_DRV_CRLF));
+    }
  
-+#include <linux/device.h>
- #include <linux/ioport.h>
- #include <linux/irq.h>
- #include <asm/io.h>
-@@ -67,6 +65,9 @@
++#if 0
+    ppa_callback_set(LTQ_MEI_SHOWTIME_CHECK, (void *)NULL);
++#endif
  
- #include "drv_mei_cpe_msg_process.h"
+    /* touch one time this variable to avoid that the linker will remove it */
+    debug_level = MEI_DRV_PRN_LEVEL_OFF;
+@@ -2120,21 +2126,32 @@ static int MEI_InitModuleBasics(void)
+ }
  
-+#undef MEI_SUPPORT_PROCFS_CONFIG
-+#undef CONFIG_PROC_FS
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0))
++
++#define PMU_DFE         BIT(9)
 +
- #if (MEI_SUPPORT_PROCFS_CONFIG == 1)
- #include "drv_mei_cpe_linux_proc_config.h"
- #endif /* MEI_SUPPORT_PROCFS_CONFIG */
-@@ -87,6 +88,8 @@
- #include "drv_mei_cpe_device_cntrl.h"
+ static int MEI_SysClkEnable(struct clk *clk)
+ {
++#if 0
+    if (IS_ERR(clk))
+       return -1;
+    clk_enable(clk);
++#else
++   ltq_pmu_enable(PMU_DFE);
++#endif
+ 
+    return 0;
+ }
+ 
+ static int MEI_SysClkDisable(struct clk *clk)
+ {
++#if 0
+    if (IS_ERR(clk))
+       return -1;
+    clk_disable(clk);
+    clk_put(clk);
++#else
++   ltq_pmu_disable(PMU_DFE);
++#endif
+ 
+    return 0;
+ }
+@@ -2454,11 +2471,15 @@ IFX_int32_t MEI_IoctlInitDevice(
+             pMeiDev->eModePoll = e_MEI_DEV_ACCESS_MODE_IRQ;
+             pMeiDev->intMask   = ME_ARC2ME_INTERRUPT_UNMASK_ALL;
+ 
++#if 1
++            virq = (IFX_uint32_t)pInitDev->usedIRQ;
++#else
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0))
+             virq = (IFX_uint32_t)pInitDev->usedIRQ;
+ #else
+             virq = irq_create_mapping(NULL, (IFX_uint32_t)pInitDev->usedIRQ);
  #endif
++#endif
+ 
+             pTmpXCntrl = MEI_VrxXDevToIrqListAdd(
+                                           MEI_DRV_LINENUM_GET(pMeiDev),
+--- a/src/drv_mei_cpe_api_atm_ptm_intern.c
++++ b/src/drv_mei_cpe_api_atm_ptm_intern.c
+@@ -193,6 +193,51 @@ int ifx_mei_atm_led_blink(void)
+     return IFX_SUCCESS;
+ }
  
-+#define INT_NUM_IM4_IRL30 (INT_NUM_IM4_IRL0 + 30)
++#if MEI_MAX_DFE_CHAN_DEVICES > 1
++#error "Compat functions do not support MEI_MAX_DFE_CHAN_DEVICES > 1 yet"
++#else
++int (*ifx_mei_atm_showtime_enter)(struct port_cell_info *, void *) = NULL;
++int (*ifx_mei_atm_showtime_exit)(void) = NULL;
 +
- /* ===================================
-    extern function declarations
-    =================================== */
-@@ -122,7 +125,7 @@
-                      size_t length,
-                      loff_t * ppos);
- 
--static int MEI_Ioctl( struct inode *inode, struct file *filp,
-+static long MEI_Ioctl(struct file *filp,
-                         unsigned int nCmd, unsigned long nArgument);
++ltq_ifx_mei_atm_showtime_enter_compat(IFX_uint8_t dslLineNum,
++				      struct port_cell_info *cellInfo,
++				      void *xdata) {
++	if (ifx_mei_atm_showtime_enter)
++		return ifx_mei_atm_showtime_enter(cellInfo, xdata);
++
++	return -e_MEI_ERR_OP_FAILED;
++}
++
++ltq_ifx_mei_atm_showtime_exit_compat(IFX_uint8_t dslLineNum) {
++	if (ifx_mei_atm_showtime_exit)
++		return ifx_mei_atm_showtime_exit();
++
++	return -e_MEI_ERR_OP_FAILED;
++}
++
++void* ppa_callback_get(e_ltq_mei_cb_type type) {
++	switch (type) {
++		case LTQ_MEI_SHOWTIME_ENTER:
++			return &ltq_ifx_mei_atm_showtime_enter_compat;
++		case LTQ_MEI_SHOWTIME_EXIT:
++			return &ltq_ifx_mei_atm_showtime_exit_compat;
++			break;
++	}
++
++	BUG();
++}
++
++int ifx_mei_atm_showtime_check(int *is_showtime,
++                              struct port_cell_info *port_cell,
++                              void **xdata_addr) {
++	return ltq_mei_atm_showtime_check(0, is_showtime, port_cell, xdata_addr);
++}
++
++EXPORT_SYMBOL(ifx_mei_atm_showtime_enter);
++EXPORT_SYMBOL(ifx_mei_atm_showtime_exit);
++EXPORT_SYMBOL(ifx_mei_atm_showtime_check);
++#endif
++
+ EXPORT_SYMBOL (MEI_InternalXtmSwhowtimeEntrySignal);
+ EXPORT_SYMBOL (MEI_InternalXtmSwhowtimeExitSignal);
+ EXPORT_SYMBOL(ifx_mei_atm_led_blink);
+--- a/src/drv_mei_cpe_api_atm_ptm_intern.h
++++ b/src/drv_mei_cpe_api_atm_ptm_intern.h
+@@ -21,7 +21,6 @@
  
- static unsigned int MEI_Poll (struct file *filp, poll_table *table);
-@@ -137,7 +140,7 @@
+ #include "drv_mei_cpe_config.h"
+ #include "drv_mei_cpe_interface.h"
+-#include <net/ppa_stack_al.h>
  
- static void MEI_IfxFreeIrq(unsigned int usedIrq, void *pUsedDevId);
+ #if (MEI_EXPORT_INTERNAL_API == 1) && (MEI_DRV_ATM_PTM_INTERFACE_ENABLE == 1)
  
--static irqreturn_t MEI_InterruptLinux(int irq, void *dev_id, struct pt_regs *regs);
-+static irqreturn_t MEI_InterruptLinux(int irq, void *dev_id);
- #endif
+@@ -42,8 +41,20 @@ extern IFX_int32_t MEI_InternalXtmSwhowt
+                               MEI_DYN_CNTRL_T        *pMeiDynCntrl,
+                               MEI_XTM_ShowtimeExit_t *pArgXtm);
  
- #if CONFIG_PROC_FS
-@@ -194,7 +197,9 @@
- /* =================================== */
- /* Local variables (LINUX)             */
- /* =================================== */
--static IFX_uint8_t major_number = 0;
-+#define MEI_MAJOR       105
++#if 1
++typedef enum {
++	LTQ_MEI_SHOWTIME_ENTER,
++	LTQ_MEI_SHOWTIME_EXIT
++} e_ltq_mei_cb_type;
 +
-+static IFX_uint8_t major_number = MEI_MAJOR;
- #ifdef MODULE
- #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
- MODULE_PARM(major_number, "b");
-@@ -242,7 +247,7 @@
-         MEI_Write,
-     poll:
-         MEI_Poll,
--    ioctl:
-+    unlocked_ioctl:
-         MEI_Ioctl,
-     open:
-         MEI_OpenOS,
-@@ -457,7 +462,7 @@
-    0 and positive values - success,
-    negative value - ioctl failed
- */
--static int MEI_Ioctl( struct inode *inode, struct file *filp,
-+static long MEI_Ioctl(struct file *filp,
-                             unsigned int nCmd, unsigned long nArgument)
++typedef void (*ltq_mei_atm_showtime_enter_t)(IFX_uint8_t, struct port_cell_info *, void *);
++typedef void (*ltq_mei_atm_showtime_exit_t)(IFX_uint8_t);
++
++void* ppa_callback_get(e_ltq_mei_cb_type type);
++#else
+ extern int ppa_callback_set(e_ltq_mei_cb_type type, void *func);
+ extern void* ppa_callback_get(e_ltq_mei_cb_type type);
++#endif
+ 
+ int ltq_mei_atm_showtime_check (
+                               const unsigned char line_idx,
+--- a/src/drv_mei_cpe_device_vrx.c
++++ b/src/drv_mei_cpe_device_vrx.c
+@@ -27,13 +27,6 @@
+ #include "drv_mei_cpe_mei_interface.h"
+ #include "drv_mei_cpe_api.h"
+ 
+-#if defined(LINUX)
+-#  if (LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0))
+-#    include "ifx_pcie.h"
+-#  else
+-#    include "lantiq_pcie.h"
+-#  endif
+-#endif /* #if defined(LINUX)*/
+ 
+ IFX_int32_t MEI_GPIntProcess(MEI_MeiRegVal_t processInt, MEI_DEV_T *pMeiDev)
  {
-    int ret = 0, retSize = sizeof(IOCTL_MEI_ioctl_t);
-@@ -1242,7 +1247,7 @@
- \remark
-    None.
+@@ -81,6 +74,7 @@ IFX_int32_t MEI_GetChipInfo(MEI_DEV_T *p
  */
--static irqreturn_t MEI_InterruptLinux(int irq, void *dev_id, struct pt_regs *regs)
-+static irqreturn_t MEI_InterruptLinux(int irq, void *dev_id)
- {
-    IFX_int32_t    meiIntCnt = 0;
-    MEIX_CNTRL_T *pMeiXCntrlList = (MEIX_CNTRL_T*)dev_id;
-@@ -1691,6 +1696,7 @@
- static int __init MEI_module_init (void)
+ IFX_int32_t MEI_VR10_PcieEntitiesCheck(IFX_uint8_t nEntityNum)
  {
-    int result;
-+   static struct class *dsl_class;
++#if 0
+    IFX_uint32_t pcie_entitiesNum;
  
-    printk(KERN_INFO "%s" MEI_DRV_CRLF, &MEI_WHATVERSION[4]);
-    printk(KERN_INFO "(c) Copyright 2009, Infineon Technologies AG" MEI_DRV_CRLF);
-@@ -1730,6 +1736,8 @@
-       return (result);
+    /* get information from pcie driver */
+@@ -101,6 +95,9 @@ IFX_int32_t MEI_VR10_PcieEntitiesCheck(I
     }
  
-+   dsl_class = class_create(THIS_MODULE, "ifx_mei");
-+   device_create(dsl_class, NULL, MKDEV(MEI_MAJOR, 0), NULL, "ifx_mei");
-    return 0;
+    return IFX_SUCCESS;
++#else
++   return IFX_ERROR;
++#endif
  }
  
-Index: drv_mei_cpe-1.2.0/src/drv_mei_cpe_mei_access_vr9.c
-===================================================================
---- drv_mei_cpe-1.2.0.orig/src/drv_mei_cpe_mei_access_vr9.c	2011-07-25 20:41:02.000000000 +0200
-+++ drv_mei_cpe-1.2.0/src/drv_mei_cpe_mei_access_vr9.c	2013-09-01 21:04:12.197022086 +0200
-@@ -37,6 +37,7 @@
- 
- #include "cmv_message_format.h"
+ /**
+@@ -115,6 +112,7 @@ IFX_int32_t MEI_VR10_PcieEntitiesCheck(I
+ */
+ IFX_int32_t MEI_VR10_PcieEntityInit(MEI_MEI_DRV_CNTRL_T *pMeiDrvCntrl)
+ {
++#if 0
+    IFX_uint8_t entityNum;
+    ifx_pcie_ep_dev_t MEI_pcie_ep_dev;
  
-+#include <lantiq_soc.h>
+@@ -137,6 +135,9 @@ IFX_int32_t MEI_VR10_PcieEntityInit(MEI_
+    pMeiDrvCntrl->MEI_pcie_irq = MEI_pcie_ep_dev.irq;
  
- /* ============================================================================
-    Local macro definition
-@@ -1527,32 +1528,35 @@
-    return IFX_ERROR;
+    return IFX_SUCCESS;
++#else
++   return IFX_ERROR;
++#endif
  }
  
-+#define PMU_DFE         BIT(9)
-+
- IFX_int32_t MEI_BasicChipInit(IFX_void_t)
+ /**
+@@ -151,6 +152,7 @@ IFX_int32_t MEI_VR10_PcieEntityInit(MEI_
+ */
+ IFX_int32_t MEI_VR10_PcieEntityFree(IFX_uint8_t entityNum)
  {
-    /* Power up MEI */
--   DSL_DFE_PMU_SETUP(IFX_PMU_ENABLE);
--
--   if (ifx_pmu_pg_dsl_dfe_enable() != 0)
-+//   DSL_DFE_PMU_SETUP(IFX_PMU_ENABLE);
-+ltq_pmu_enable(PMU_DFE);
-+  /* if (ifx_pmu_pg_dsl_dfe_enable() != 0)
++#if 0
+    if (ifx_pcie_ep_dev_info_release(entityNum))
     {
-       PRN_ERR_USR_NL( MEI_MEI_ACCESS, MEI_DRV_PRN_LEVEL_ERR,
-             ("MEI: ERROR - DSL DFE PG enable failed!" MEI_DRV_CRLF));
-       return IFX_ERROR;
--   }
-+   }*/
+       PRN_ERR_USR_NL( MEI_DRV, MEI_DRV_PRN_LEVEL_ERR,
+@@ -160,6 +162,9 @@ IFX_int32_t MEI_VR10_PcieEntityFree(IFX_
+    }
  
     return IFX_SUCCESS;
++#else
++   return IFX_ERROR;
++#endif
  }
  
- IFX_int32_t MEI_BasicChipExit(IFX_void_t)
+ /**
+@@ -174,6 +179,7 @@ IFX_int32_t MEI_VR10_PcieEntityFree(IFX_
+ */
+ IFX_int32_t MEI_VR10_InternalInitDevice(MEI_DYN_CNTRL_T *pMeiDynCntrl)
  {
--   if (ifx_pmu_pg_dsl_dfe_disable() != 0)
-+/*   if (ifx_pmu_pg_dsl_dfe_disable() != 0)
-    {
-       PRN_ERR_USR_NL( MEI_MEI_ACCESS, MEI_DRV_PRN_LEVEL_ERR,
-             ("MEI: ERROR - DSL DFE PG disable failed!" MEI_DRV_CRLF));
-       return IFX_ERROR;
-    }
--
-+*/
-    /* Power down MEI */
--   DSL_DFE_PMU_SETUP(IFX_PMU_DISABLE);
-+//   DSL_DFE_PMU_SETUP(IFX_PMU_DISABLE);
-+ltq_pmu_disable(PMU_DFE);
++#if 0
+    IFX_int32_t         retVal;
+    IOCTL_MEI_devInit_t InitDev;
+    MEI_DEV_T           *pMeiDev = pMeiDynCntrl->pMeiDev;
+@@ -198,5 +204,8 @@ IFX_int32_t MEI_VR10_InternalInitDevice(
+    *MEI_GPIO_U32REG(GPIO_P0_ALSEL1) &= ~((1 << 0) | (1 << 3) | (1 << 8));
  
     return IFX_SUCCESS;
++#else
++   return IFX_ERROR;
++#endif
  }
-Index: drv_mei_cpe-1.2.0/src/Makefile.am
-===================================================================
---- drv_mei_cpe-1.2.0.orig/src/Makefile.am	2013-09-01 21:05:24.581025175 +0200
-+++ drv_mei_cpe-1.2.0/src/Makefile.am	2013-09-01 21:05:30.765025452 +0200
-@@ -97,8 +97,6 @@
- 	drv_mei_cpe_dbg_driver.h\
- 	drv_mei_cpe_linux.c\
- 	drv_mei_cpe_linux.h\
--	drv_mei_cpe_linux_proc_config.c\
--	drv_mei_cpe_linux_proc_config.h\
- 	drv_mei_cpe_vxworks.c\
- 	drv_mei_cpe_vxworks.h\
- 	drv_mei_cpe_vxworks_bsp.c\
+ 
diff --git a/package/kernel/lantiq/ltq-vdsl/Makefile b/package/kernel/lantiq/ltq-vdsl/Makefile
index d14d4bc..617d9bf 100644
--- a/package/kernel/lantiq/ltq-vdsl/Makefile
+++ b/package/kernel/lantiq/ltq-vdsl/Makefile
@@ -7,14 +7,14 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=ltq-vdsl-vr9
-PKG_VERSION:=4.11.4
+PKG_VERSION:=4.16.2.4
 PKG_RELEASE:=1
 
 PKG_BASE_NAME:=drv_dsl_cpe_api_vrx
 PKG_SOURCE:=$(PKG_BASE_NAME)-$(PKG_VERSION).tar.gz
-PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/drv_dsl_cpe_api-$(PKG_VERSION)
-PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources/
-PKG_MD5SUM:=b6d9c1e3c5db1bfcd6e81bb2f582cadb
+PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_BASE_NAME)-$(PKG_VERSION)
+PKG_SOURCE_URL:=https://github.com/xdarklight/$(PKG_BASE_NAME)/archive/v$(PKG_VERSION)
+PKG_MD5SUM:=0a3e35d199eb8936f3e8f61bb074223a
 
 PKG_USE_MIPS16:=0
 
@@ -48,16 +48,18 @@ CONFIGURE_ARGS += --enable-kernel-include="$(LINUX_DIR)/include" \
 	--with-lines-per-device="1" \
 	--with-channels-per-line="1" \
 	--enable-vrx \
+	--enable-vrx-device=vr9 \
 	--enable-ifxos \
 	--enable-ifxos-include="-I$(STAGING_DIR)/usr/include/ifxos" \
 	--enable-driver-include="-I$(STAGING_DIR)/usr/include/vdsl" \
-	--enable-add-drv-cflags="-DMODULE -DINCLUDE_DSL_ATM_PTM_INTERFACE_SUPPORT -DDSL_DEBUG_DISABLE" \
+	--enable-add-drv-cflags="-DMODULE -DINCLUDE_DSL_ATM_PTM_INTERFACE_SUPPORT" \
 	--enable-adsl-led=no \
 	--enable-adsl-mib=no \
 	--enable-dsl-ceoc=no \
 	--enable-dsl-bonding=no \
 	--enable-linux-26 \
 	--enable-kernelbuild="$(LINUX_DIR)" \
+	--enable-debug-prints=no \
 	KERNEL_ARCH=mips
 
 CONFIGURE_ARGS += --enable-model=full
diff --git a/package/kernel/lantiq/ltq-vdsl/patches/100-compat.patch b/package/kernel/lantiq/ltq-vdsl/patches/100-compat.patch
index 5abe4b2..e68a6f0 100644
--- a/package/kernel/lantiq/ltq-vdsl/patches/100-compat.patch
+++ b/package/kernel/lantiq/ltq-vdsl/patches/100-compat.patch
@@ -1,51 +1,17 @@
-Index: drv_dsl_cpe_api-4.11.4/src/include/drv_dsl_cpe_os_linux.h
-===================================================================
---- drv_dsl_cpe_api-4.11.4.orig/src/include/drv_dsl_cpe_os_linux.h	2011-10-26 00:35:29.000000000 +0200
-+++ drv_dsl_cpe_api-4.11.4/src/include/drv_dsl_cpe_os_linux.h	2012-11-28 23:05:38.766342592 +0100
-@@ -17,7 +17,7 @@
- #endif
- 
- #include <asm/ioctl.h>
--#include <linux/autoconf.h>
-+#include <generated/autoconf.h>
- #include <linux/module.h>
- #include <linux/kernel.h>
- #include <linux/init.h>
-@@ -28,7 +28,7 @@
- #include <linux/sched.h>
- 
- #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17))
--   #include <linux/utsrelease.h>
-+   #include <generated/utsrelease.h>
- #endif
- 
- #include <linux/types.h>
-@@ -40,7 +40,6 @@
- #include <linux/delay.h>
- #include <linux/poll.h>
- #include <asm/uaccess.h>
--#include <linux/smp_lock.h>
- 
- #ifdef INCLUDE_DSL_CPE_API_IFXOS_SUPPORT
- /** IFXOS includes*/
-Index: drv_dsl_cpe_api-4.11.4/src/Makefile.in
-===================================================================
---- drv_dsl_cpe_api-4.11.4.orig/src/Makefile.in	2012-03-05 15:24:31.000000000 +0100
-+++ drv_dsl_cpe_api-4.11.4/src/Makefile.in	2012-11-28 23:05:38.770342592 +0100
-@@ -72,7 +72,7 @@
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -63,7 +63,7 @@ POST_UNINSTALL = :
  
  # the headerfile of linux kernels 2.6.x contain to much arithmetic
  # with void pointers (which is allowed for gcc!)
-- at KERNEL_2_6_FALSE@am__append_8 = -Wpointer-arith
-+ at KERNEL_2_6_FALSE@am__append_8 =
+- at KERNEL_2_6_FALSE@am__append_6 = -Wpointer-arith
++ at KERNEL_2_6_FALSE@am__append_6 =
  subdir = src
- DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
- ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-Index: drv_dsl_cpe_api-4.11.4/src/common/drv_dsl_cpe_os_linux.c
-===================================================================
---- drv_dsl_cpe_api-4.11.4.orig/src/common/drv_dsl_cpe_os_linux.c	2011-10-26 00:35:28.000000000 +0200
-+++ drv_dsl_cpe_api-4.11.4/src/common/drv_dsl_cpe_os_linux.c	2012-11-28 23:05:38.770342592 +0100
-@@ -12,6 +12,7 @@
+ DIST_COMMON = $(drv_dsl_cpe_api_include_HEADERS) $(srcdir)/Makefile.am \
+ 	$(srcdir)/Makefile.in
+--- a/src/common/drv_dsl_cpe_os_linux.c
++++ b/src/common/drv_dsl_cpe_os_linux.c
+@@ -11,6 +11,7 @@
  
  #define DSL_INTERN
  
@@ -53,37 +19,21 @@ Index: drv_dsl_cpe_api-4.11.4/src/common/drv_dsl_cpe_os_linux.c
  #include "drv_dsl_cpe_api.h"
  #include "drv_dsl_cpe_api_ioctl.h"
  
-@@ -34,7 +35,7 @@
- static DSL_ssize_t DSL_DRV_Write(DSL_DRV_file_t *pFile, const DSL_char_t * pBuf,
-                                  DSL_DRV_size_t nSize, DSL_DRV_offset_t * pLoff);
- 
--static DSL_int_t DSL_DRV_Ioctls(DSL_DRV_inode_t * pINode, DSL_DRV_file_t * pFile,
-+static long DSL_DRV_Ioctls(DSL_DRV_file_t * pFile,
-                          DSL_uint_t nCommand, unsigned long nArg);
- 
- static int DSL_DRV_Open(DSL_DRV_inode_t * ino, DSL_DRV_file_t * fil);
-@@ -71,7 +72,7 @@
-    open:    DSL_DRV_Open,
-    release: DSL_DRV_Release,
-    write:   DSL_DRV_Write,
--   ioctl:   DSL_DRV_Ioctls,
-+   unlocked_ioctl:   DSL_DRV_Ioctls,
-    poll:    DSL_DRV_Poll
- };
- #else
-@@ -172,7 +173,7 @@
-    \return  Success or failure.
-    \ingroup Internal
- */
--static DSL_int_t DSL_DRV_Ioctls(DSL_DRV_inode_t * pINode,
-+static long DSL_DRV_Ioctls(
-    DSL_DRV_file_t * pFile,
-    DSL_uint_t nCommand,
-    unsigned long nArg)
-@@ -222,14 +223,7 @@
-       }
+@@ -238,24 +239,10 @@ static DSL_long_t DSL_DRV_Ioctls(DSL_DRV
     }
  
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+-   if (pFile->f_dentry != DSL_NULL)
+-   {
+-      pINode = pFile->f_dentry->d_inode;
+-   }
+-   else
+-   {
+-      pINode = DSL_NULL;
+-   }
++   pINode = file_inode(pFile);
+ #endif
+ 
 -   if (pINode == DSL_NULL)
 -   {
 -      bIsInKernel = DSL_TRUE;
@@ -95,54 +45,36 @@ Index: drv_dsl_cpe_api-4.11.4/src/common/drv_dsl_cpe_os_linux.c
  
     if ( (_IOC_TYPE(nCommand) == DSL_IOC_MAGIC_CPE_API) ||
          (_IOC_TYPE(nCommand) == DSL_IOC_MAGIC_CPE_API_G997) ||
-@@ -1082,6 +1076,7 @@
+@@ -1102,6 +1089,9 @@ static void DSL_DRV_DebugInit(void)
+    return;
+ }
+ 
++static struct class *dsl_class;
++static dev_t dsl_devt;
++
+ /* Entry point of driver */
  int __init DSL_ModuleInit(void)
  {
-    DSL_int_t i;
-+   static struct class *dsl_class;
- 
-    printk(DSL_DRV_CRLF DSL_DRV_CRLF "Lantiq CPE API Driver version: %s" DSL_DRV_CRLF,
-       &(dsl_cpe_api_version[4]));
-@@ -1127,6 +1122,10 @@
+@@ -1140,6 +1130,10 @@ int __init DSL_ModuleInit(void)
  
     DSL_DRV_DevNodeInit();
  
 +   dsl_class = class_create(THIS_MODULE, "dsl_cpe_api0");
-+   device_create(dsl_class, NULL, MKDEV(DRV_DSL_CPE_API_DEV_MAJOR, 0), NULL, "dsl_cpe_api0");
-+
++   dsl_devt = MKDEV(DRV_DSL_CPE_API_DEV_MAJOR, 0);
++   device_create(dsl_class, NULL, dsl_devt, NULL, "dsl_cpe_api0");
 +
     return 0;
  }
  
-Index: drv_dsl_cpe_api-4.11.4/src/device/drv_dsl_cpe_msg_vrx.c
-===================================================================
---- drv_dsl_cpe_api-4.11.4.orig/src/device/drv_dsl_cpe_msg_vrx.c	2012-03-05 11:25:21.000000000 +0100
-+++ drv_dsl_cpe_api-4.11.4/src/device/drv_dsl_cpe_msg_vrx.c	2012-11-28 23:06:46.418344288 +0100
-@@ -685,6 +685,7 @@
-    DSL_ProfileType_t nProfile = DSL_PROFILE_LAST;
-    DSL_G997_XTUSystemEnablingData_t data = {{0,0,0,0,0,0,0,0}};
- 
-+   //printk("%s:%s[%d]\n", __FILE__, __func__, __LINE__);
-    DSL_DEBUG( DSL_DBG_MSG,
-       (pContext, SYS_DBG_MSG"DSL[%02d]: IN - DSL_DRV_VXX_SendMsgSelectedProfileVdsl2Get"
-       DSL_DRV_CRLF, DSL_DEV_NUM(pContext)));
-@@ -985,8 +988,10 @@
- 
-    /* Check consistency of XTSE status setting - Only one bit should be set at
-       a time */
-+   //printk("XTSE (%d) - ", DSL_G997_NUM_XTSE_OCTETS);
-    for (i = 0, nBitCount = 0; i < DSL_G997_NUM_XTSE_OCTETS; i++)
-    {
-+      //printk("%02X ", data.XTSE[i]);
-       for (j = 0; j < 8; j++)
-       {
-          if ( ((data.XTSE[i] >> j) & 0x01) != 0)
-@@ -996,6 +1001,8 @@
-       }
-    }
+@@ -1147,6 +1141,11 @@ void __exit DSL_ModuleCleanup(void)
+ {
+    printk("Module will be unloaded"DSL_DRV_CRLF);
  
-+	//printk("\n");
++   device_destroy(dsl_class, dsl_devt);
++   dsl_devt = NULL;
++   class_destroy(dsl_class);
++   dsl_class = NULL;
 +
-    if (nBitCount > 1)
-    {
-       DSL_DEBUG( DSL_DBG_ERR,
+    unregister_chrdev(nMajorNum, DRV_DSL_CPE_API_DEV_NAME);
+ 
+    DSL_DRV_Cleanup();
diff --git a/package/network/config/ltq-vdsl-app/Makefile b/package/network/config/ltq-vdsl-app/Makefile
index be86275..061a966 100644
--- a/package/network/config/ltq-vdsl-app/Makefile
+++ b/package/network/config/ltq-vdsl-app/Makefile
@@ -7,13 +7,13 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=ltq-vdsl-app
-PKG_VERSION:=4.11.4
+PKG_VERSION:=4.16.2.4
 PKG_RELEASE:=1
 PKG_BASE_NAME:=dsl_cpe_control_vrx
 PKG_SOURCE:=$(PKG_BASE_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://downloads.openwrt.org/sources/
-PKG_MD5SUM:=e9152ced26a91fbeefa4f34badb97484
-PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/dsl_cpe_control-$(PKG_VERSION)
+PKG_SOURCE_URL:=https://github.com/xdarklight/$(PKG_BASE_NAME)/archive/v$(PKG_VERSION)
+PKG_MD5SUM:=487925ef5327ea38c544035b388de8bb
+PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_BASE_NAME)-$(PKG_VERSION)
 PKG_LICENSE:=BSD-2-Clause
 
 PKG_BUILD_DEPENDS:=kmod-ltq-vdsl-vr9
@@ -25,7 +25,7 @@ define Package/ltq-vdsl-app
   CATEGORY:=Network
   TITLE:=Lantiq VDSL userland tool
   URL:=http://www.lantiq.com/
-  DEPENDS:=@TARGET_lantiq_xrx200 +libpthread
+  DEPENDS:=@TARGET_lantiq_xrx200 +libpthread +librt
 endef
 
 define Package/ltq-vdsl-app/description
@@ -43,7 +43,7 @@ CONFIGURE_ARGS += \
 	--enable-ifxos \
 	--enable-ifxos-include="-I$(STAGING_DIR)/usr/include/ifxos" \
 	--enable-ifxos-library="-I$(STAGING_DIR)/usr/lib" \
-	--enable-dsl-ceoc \
+	--disable-dsl-ceoc \
 	--enable-dsl-pm-total \
 	--enable-dsl-pm-showtime \
 	--enable-dsl-pm-line-counters \
@@ -53,6 +53,7 @@ CONFIGURE_ARGS += \
 	--enable-deprecated \
 	--disable-soap-support \
 	--enable-dsl-bonding=no \
+	--enable-debug-prints=err \
 	--disable-dti
 
 ifeq ($(CONFIG_IFX_CLI),y)
diff --git a/package/network/config/ltq-vdsl-app/files/dsl_control b/package/network/config/ltq-vdsl-app/files/dsl_control
index bededb2..394e1c0 100644
--- a/package/network/config/ltq-vdsl-app/files/dsl_control
+++ b/package/network/config/ltq-vdsl-app/files/dsl_control
@@ -12,7 +12,6 @@ SERVICE_DAEMONIZE=1
 SERVICE_WRITE_PID=1
 
 [ -f /lib/functions/lantiq_dsl.sh ] && . /lib/functions/lantiq_dsl.sh
-XDSL_CTRL=vdsl_cpe_control
 
 # G.992.1 Annex A
 # G.992.2 Annex A
@@ -38,105 +37,14 @@ xtse_adsl_j="10 00 10 40 00 04 01 00"
 
 xtse_vdsl="00 00 00 00 00 00 00 07"
 
-xdsl_scr() {
-	val=`echo $2 | sed "s/ / 0x/g"`
-	echo "[WaitForConfiguration]={
-#G997XTUSEC_g997xtusecs 0x$val
-}
-
-[WaitForLinkActivate]={
-}
-
-[WaitForRestart]={
-}
-
-[Common]={
-}" > /tmp/$1.scr
-}
-
-# A43
-tone_adsl_a="0x142"
-tone_vdsl_a="0x142"
-
-# A43 + V43
-tone_adsl_av="0x142"
-tone_vdsl_av="0x146"
-
-# B43
-tone_adsl_b="0x1"
-tone_vdsl_b="0x1"
-
-# B43 + V43
-tone_adsl_bv="0x1"
-tone_vdsl_bv="0x5"
-
-lowlevel_cfg() {
-	echo "# VRX Low Level Configuration File
-#
-# Parameters must be separated by tabs or spaces.
-# Empty lines and comments will be ignored.
-#
-
-# nFilter
-#
-# NA     = -1
-# OFF    = 0
-# ISDN   = 1
-# POTS   = 2
-# POTS_2 = 3
-# POTS_3 = 4
-#
-#  (dec)
-    -1
-
-# nHsToneGroupMode nHsToneGroup_A       nHsToneGroup_V    nHsToneGroup_AV
-#
-# NA     = -1      NA         = -1      see               see
-# AUTO   = 0       VDSL2_B43  = 0x0001  nHsToneGroup_A    nHsToneGroup_A
-# MANUAL = 1       VDSL2_A43  = 0x0002
-#                  VDSL2_V43  = 0x0004
-#                  VDSL1_V43P = 0x0008
-#                  VDSL1_V43I = 0x0010
-#                  ADSL1_C43  = 0x0020
-#                  ADSL2_J43  = 0x0040
-#                  ADSL2_B43C = 0x0080
-#                  ADSL2_A43C = 0x0100
-#
-#  (dec)           (hex)                (hex)             (hex)
-     1             $1			$2		 0x0
-
-#   nBaseAddr     nIrqNum
-#
-#     (hex)        (dec)
-    0x1e116000      63
-
-# nUtopiaPhyAdr   nUtopiaBusWidth      nPosPhyParity
-#                 default(16b) = 0     NA   = -1
-#                 8-bit        = 1     ODD  = 0
-#                 16-bit       = 2
-#
-#
-#    (hex)            (dec)                (dec)
-      0xFF              0                    0
-
-# bNtrEnable
-#
-#  (dec)
-    0" > /tmp/lowlevel.cfg
-}
-
 start() {
 	local annex
 	local firmware
-	local tone
-	local tone_adsl
-	local tone_vdsl
 	local xtse
 	local xtse_adsl
 	local mode
 
 	config_load network
-	config_get tone dsl tone
 	config_get annex dsl annex
 	config_get firmware dsl firmware
 	config_get xfer_mode dsl xfer_mode
@@ -158,33 +66,19 @@ start() {
 	if [ "${xtse_adsl}" ]; then
 		xtse=$xtse_adsl
 	else
-		xtse_adsl=$xtse_adsl_a
 		xtse=$xtse_vdsl
 	fi
 
-	eval "tone_adsl=\"\${tone_adsl_$tone}\""
-	[ -z "${tone_adsl}" ] && tone_adsl=$tone_adsl_av
-
-	eval "tone_vdsl=\"\${tone_vdsl_$tone}\""
-	[ -z "${tone_vdsl}" ] && tone_vdsl=$tone_vdsl_av
-		
 	[ -z "${firmware}" ] && firmware=/lib/firmware/vdsl.bin
 	[ -f "${firmware}" ] || {
 		echo failed to find $firmware
 		return 1
 	}
 
-	xdsl_scr adsl "${xtse_adsl}"
-	xdsl_scr vdsl "${xtse_vdsl}"
-	lowlevel_cfg "${tone_adsl}" "${tone_vdsl}"
-
 	service_start /sbin/vdsl_cpe_control \
 			-i `echo $xtse | sed "s/ /_/g"` \
 			-n /sbin/dsl_notify.sh \
 			-f ${firmware} \
-			-a /tmp/adsl.scr \
-			-A /tmp/vdsl.scr \
-			-l /tmp/lowlevel.cfg \
 			-M ${mode}
 }
 
diff --git a/package/network/config/ltq-vdsl-app/patches/100-compat.patch b/package/network/config/ltq-vdsl-app/patches/100-compat.patch
index da56232..eeedc54 100644
--- a/package/network/config/ltq-vdsl-app/patches/100-compat.patch
+++ b/package/network/config/ltq-vdsl-app/patches/100-compat.patch
@@ -1,26 +1,22 @@
-Index: dsl_cpe_control-4.11.4/src/dsl_cpe_init_cfg.c
-===================================================================
---- dsl_cpe_control-4.11.4.orig/src/dsl_cpe_init_cfg.c	2011-10-26 00:35:26.000000000 +0200
-+++ dsl_cpe_control-4.11.4/src/dsl_cpe_init_cfg.c	2012-11-28 15:53:10.857692092 +0100
-@@ -43,7 +43,7 @@
-    {
-    DSL_CPE_LL_CFG_SET(-1, -1, DSL_DEV_HS_TONE_GROUP_VDSL2_B43, \
-       DSL_DEV_HS_TONE_GROUP_VDSL2_B43, DSL_DEV_HS_TONE_GROUP_VDSL2_B43, \
+--- a/src/dsl_cpe_init_cfg.c
++++ b/src/dsl_cpe_init_cfg.c
+@@ -38,7 +38,7 @@ DSL_InitData_t gInitCfgData =
+       DSL_DEV_HS_TONE_GROUP_CLEANED, \
+       DSL_DEV_HS_TONE_GROUP_CLEANED, \
+       DSL_DEV_HS_TONE_GROUP_CLEANED, \
 -      0x1E116000, 0x37, -1),
 +      0x1E116000, 0x3f, -1),
- #endif
- 
- #if defined(INCLUDE_DSL_CPE_API_VINAX)
-Index: dsl_cpe_control-4.11.4/src/dsl_cpe_control.c
-===================================================================
---- dsl_cpe_control-4.11.4.orig/src/dsl_cpe_control.c	2012-01-13 15:15:34.000000000 +0100
-+++ dsl_cpe_control-4.11.4/src/dsl_cpe_control.c	2012-11-28 15:53:23.465692408 +0100
-@@ -6432,7 +6432,7 @@
-    for (nDevice = 0; nDevice < DSL_CPE_MAX_DEVICE_NUMBER; nDevice++)
+    DSL_CPE_SIC_SET(DSL_TC_ATM, DSL_EMF_TC_CLEANED, DSL_EMF_TC_CLEANED, DSL_SYSTEMIF_MII, \
+                    DSL_TC_EFM, DSL_EMF_TC_CLEANED, DSL_EMF_TC_CLEANED, DSL_SYSTEMIF_MII),
+    }
+--- a/src/dsl_cpe_control.c
++++ b/src/dsl_cpe_control.c
+@@ -6856,7 +6856,7 @@ DSL_int_t dsl_cpe_daemon (
+    for (nDevice = 0; nDevice < DSL_CPE_MAX_DSL_ENTITIES; nDevice++)
     {
- #if defined(INCLUDE_DSL_CPE_API_VINAX) || defined(INCLUDE_DSL_CPE_API_VRX)
+ #if defined(INCLUDE_DSL_CPE_API_VRX)
 -      sprintf (device, "%s/%d", DSL_CPE_DEVICE_NAME, nDevice);
 +      sprintf (device, "%s%d", DSL_CPE_DEVICE_NAME, nDevice);
  #else
        sprintf (device, "%s", DSL_CPE_DEVICE_NAME);
- #endif /* defined(INCLUDE_DSL_CPE_API_VINAX) || defined(INCLUDE_DSL_CPE_API_VRX)*/
+ #endif /* defined(INCLUDE_DSL_CPE_API_VRX)*/
-- 
2.5.1
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list