add vdsl mei driver
Signed-off-by: John Crispin <blogic@openwrt.org> SVN-Revision: 36024
This commit is contained in:
parent
ae30b0c511
commit
ef93053696
2 changed files with 358 additions and 0 deletions
60
package/platform/lantiq/ltq-vdsl-mei/Makefile
Normal file
60
package/platform/lantiq/ltq-vdsl-mei/Makefile
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
# Copyright (C) 2012 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:=ltq-vdsl-vr9-mei
|
||||||
|
PKG_VERSION:=1.2.0
|
||||||
|
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_MD5SUM:=cf2fccc1bc72390b2aec46650abf2f20
|
||||||
|
PKG_FIXUP:=autoreconf
|
||||||
|
PKG_MAINTAINER:=John Crispin <blogic@openwrt.org>
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define KernelPackage/ltq-vdsl-vr9-mei
|
||||||
|
TITLE:=mei driver for vdsl
|
||||||
|
SECTION:=sys
|
||||||
|
SUBMENU:=Network Devices
|
||||||
|
DEPENDS:=@TARGET_lantiq_xway +kmod-ltq-ifxos
|
||||||
|
FILES:=$(PKG_BUILD_DIR)/src/drv_mei_cpe.ko
|
||||||
|
AUTOLOAD:=$(call AutoLoad,50,drv_mei_cpe)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define KernelPackage/ltq-vdsl-vr9-mei/description
|
||||||
|
Lantiq MEI CPE Kernel Module Driver
|
||||||
|
endef
|
||||||
|
|
||||||
|
#DEBUG=-DDEBUG_PRINT=1
|
||||||
|
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--enable-kernelincl="$(LINUX_DIR)/include" \
|
||||||
|
--enable-device=vr9 \
|
||||||
|
--with-max-device=1 \
|
||||||
|
--with-lines-per-device=1 \
|
||||||
|
--enable-debug \
|
||||||
|
--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-linux-26 \
|
||||||
|
--enable-kernelbuild="$(LINUX_DIR)" \
|
||||||
|
ARCH=$(LINUX_KARCH)
|
||||||
|
|
||||||
|
define Build/InstallDev
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include/vdsl
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/src/drv_mei_cpe_api_intern.h $(1)/usr/include/vdsl/
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/src/drv_mei_cpe_api_atm_ptm_intern.h $(1)/usr/include/vdsl/
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/src/drv_mei_cpe_interface.h $(1)/usr/include/vdsl
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/src/drv_mei_cpe_config.h $(1)/usr/include/vdsl/
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/src/cmv_message_format.h $(1)/usr/include/vdsl/
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call KernelPackage,ltq-vdsl-vr9-mei))
|
298
package/platform/lantiq/ltq-vdsl-mei/patches/100-compat.patch
Normal file
298
package/platform/lantiq/ltq-vdsl-mei/patches/100-compat.patch
Normal file
|
@ -0,0 +1,298 @@
|
||||||
|
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 2012-11-28 15:14:10.421633418 +0100
|
||||||
|
@@ -20,7 +20,6 @@
|
||||||
|
/* get at first the driver configuration */
|
||||||
|
#include "drv_mei_cpe_config.h"
|
||||||
|
|
||||||
|
-#include "ifx_types.h"
|
||||||
|
#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 2012-11-28 15:14:10.421633418 +0100
|
||||||
|
@@ -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 2012-11-28 15:14:56.637634577 +0100
|
||||||
|
@@ -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 2012-11-28 15:14:10.429633419 +0100
|
||||||
|
@@ -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 @@
|
||||||
|
#include <linux/poll.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
-#include <asm/ifx/ifx_types.h>
|
||||||
|
-
|
||||||
|
#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 2012-11-28 15:14:10.429633419 +0100
|
||||||
|
@@ -40,12 +40,6 @@
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#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 2012-11-28 15:14:10.429633419 +0100
|
||||||
|
@@ -25,11 +25,7 @@
|
||||||
|
#include "ifx_types.h"
|
||||||
|
#include "drv_mei_cpe_os.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>
|
||||||
|
|
||||||
|
/** 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 2012-11-28 15:24:56.269649609 +0100
|
||||||
|
@@ -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>
|
||||||
|
|
||||||
|
+#include <linux/device.h>
|
||||||
|
#include <linux/ioport.h>
|
||||||
|
#include <linux/irq.h>
|
||||||
|
#include <asm/io.h>
|
||||||
|
@@ -87,6 +85,8 @@
|
||||||
|
#include "drv_mei_cpe_device_cntrl.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#define INT_NUM_IM4_IRL30 (INT_NUM_IM4_IRL0 + 30)
|
||||||
|
+
|
||||||
|
/* ===================================
|
||||||
|
extern function declarations
|
||||||
|
=================================== */
|
||||||
|
@@ -122,7 +122,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);
|
||||||
|
|
||||||
|
static unsigned int MEI_Poll (struct file *filp, poll_table *table);
|
||||||
|
@@ -137,7 +137,7 @@
|
||||||
|
|
||||||
|
static void MEI_IfxFreeIrq(unsigned int usedIrq, void *pUsedDevId);
|
||||||
|
|
||||||
|
-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
|
||||||
|
|
||||||
|
#if CONFIG_PROC_FS
|
||||||
|
@@ -194,7 +194,9 @@
|
||||||
|
/* =================================== */
|
||||||
|
/* Local variables (LINUX) */
|
||||||
|
/* =================================== */
|
||||||
|
-static IFX_uint8_t major_number = 0;
|
||||||
|
+#define MEI_MAJOR 105
|
||||||
|
+
|
||||||
|
+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 +244,7 @@
|
||||||
|
MEI_Write,
|
||||||
|
poll:
|
||||||
|
MEI_Poll,
|
||||||
|
- ioctl:
|
||||||
|
+ unlocked_ioctl:
|
||||||
|
MEI_Ioctl,
|
||||||
|
open:
|
||||||
|
MEI_OpenOS,
|
||||||
|
@@ -457,7 +459,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)
|
||||||
|
{
|
||||||
|
int ret = 0, retSize = sizeof(IOCTL_MEI_ioctl_t);
|
||||||
|
@@ -1242,7 +1246,7 @@
|
||||||
|
\remark
|
||||||
|
None.
|
||||||
|
*/
|
||||||
|
-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 +1695,7 @@
|
||||||
|
static int __init MEI_module_init (void)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
+ static struct class *dsl_class;
|
||||||
|
|
||||||
|
printk(KERN_INFO "%s" MEI_DRV_CRLF, &MEI_WHATVERSION[4]);
|
||||||
|
printk(KERN_INFO "(c) Copyright 2009, Infineon Technologies AG" MEI_DRV_CRLF);
|
||||||
|
@@ -1730,6 +1735,8 @@
|
||||||
|
return (result);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ dsl_class = class_create(THIS_MODULE, "ifx_mei");
|
||||||
|
+ device_create(dsl_class, NULL, MKDEV(MEI_MAJOR, 0), NULL, "ifx_mei");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
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 2012-11-28 15:14:10.433633419 +0100
|
||||||
|
@@ -37,6 +37,7 @@
|
||||||
|
|
||||||
|
#include "cmv_message_format.h"
|
||||||
|
|
||||||
|
+#include <lantiq_soc.h>
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
Local macro definition
|
||||||
|
@@ -1527,32 +1528,35 @@
|
||||||
|
return IFX_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#define PMU_DFE BIT(9)
|
||||||
|
+
|
||||||
|
IFX_int32_t MEI_BasicChipInit(IFX_void_t)
|
||||||
|
{
|
||||||
|
/* 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)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
- }
|
||||||
|
+ }*/
|
||||||
|
|
||||||
|
return IFX_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
IFX_int32_t MEI_BasicChipExit(IFX_void_t)
|
||||||
|
{
|
||||||
|
- 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);
|
||||||
|
|
||||||
|
return IFX_SUCCESS;
|
||||||
|
}
|
Loading…
Reference in a new issue