aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/lantiq
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/lantiq')
-rw-r--r--package/kernel/lantiq/ltq-ifxos/Makefile9
-rw-r--r--package/kernel/lantiq/ltq-ifxos/patches/100-compat.patch27
-rw-r--r--package/kernel/lantiq/ltq-vdsl-mei/Makefile9
-rw-r--r--package/kernel/lantiq/ltq-vdsl-mei/patches/100-compat.patch496
-rw-r--r--package/kernel/lantiq/ltq-vdsl/Makefile12
-rw-r--r--package/kernel/lantiq/ltq-vdsl/patches/100-compat.patch156
6 files changed, 294 insertions, 415 deletions
diff --git a/package/kernel/lantiq/ltq-ifxos/Makefile b/package/kernel/lantiq/ltq-ifxos/Makefile
index 375875227e..9919a9b088 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@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 db2dd8bc5e..dcd260ef3f 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 17d77551ae..0f9f48d573 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@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 f63d52c030..c0e69a9f35 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 d14d4bc955..617d9bfaea 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 5abe4b2084..e68a6f0ec3 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!)
--@KERNEL_2_6_FALSE@am__append_8 = -Wpointer-arith
-+@KERNEL_2_6_FALSE@am__append_8 =
+-@KERNEL_2_6_FALSE@am__append_6 = -Wpointer-arith
++@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();