mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-31 16:35:44 +00:00
kernel: add new ltq-vdsl-vr11-mei driver
This uses version 1.11.1 of the drv_mei_cpe package from the Intel UGW 8.5.2.10 for the VRX518. Signed-off-by: Martin Schiller <ms.3headeddevs@gmail.com> [updated for kernel 5.10] Signed-off-by: Jan Hoffmann <jan@3e8.eu> [update to 1.11.1, switch to tag tarball, update patches] Signed-off-by: Andre Heider <a.heider@gmail.com> [update for kernel 5.15] Signed-off-by: Jan Hoffmann <jan@3e8.eu> Signed-off-by: Andre Heider <a.heider@gmail.com>
This commit is contained in:
parent
2a0aa9eefa
commit
bc442076f2
113
package/kernel/lantiq/ltq-vdsl-vr11-mei/Makefile
Normal file
113
package/kernel/lantiq/ltq-vdsl-vr11-mei/Makefile
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
# Copyright (C) 2012 OpenWrt.org
|
||||||
|
# Copyright (C) 2015-2016 Lantiq Beteiligungs GmbH & Co KG.
|
||||||
|
#
|
||||||
|
# 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-vr11-mei
|
||||||
|
PKG_VERSION:=1.11.1
|
||||||
|
PKG_RELEASE:=$(AUTORELEASE)
|
||||||
|
PKG_BASE_NAME:=dsl_cpe_mei
|
||||||
|
|
||||||
|
UGW_VERSION=8.5.2.10
|
||||||
|
UGW_BASENAME=$(PKG_BASE_NAME)-ugw_$(UGW_VERSION)
|
||||||
|
|
||||||
|
PKG_SOURCE:=$(UGW_BASENAME).tar.bz2
|
||||||
|
PKG_SOURCE_URL:=https://gitlab.com/prpl-foundation/intel/$(PKG_BASE_NAME)/-/archive/ugw_$(UGW_VERSION)/
|
||||||
|
PKG_HASH:=337614473d50ed64de010adaed99a16103e08eea8fc67fe9d6caf155bea33d1d
|
||||||
|
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(UGW_BASENAME)
|
||||||
|
PKG_LICENSE:=GPL-2.0 BSD-2-Clause
|
||||||
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
PKG_EXTMOD_SUBDIRS:=src
|
||||||
|
|
||||||
|
PKG_FIXUP:=autoreconf
|
||||||
|
PKG_FLAGS:=nonshared
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define KernelPackage/ltq-vdsl-vr11-mei
|
||||||
|
TITLE:=mei driver for vdsl
|
||||||
|
SECTION:=sys
|
||||||
|
SUBMENU:=Network Devices
|
||||||
|
DEPENDS:=@TARGET_ipq40xx +kmod-ltq-ifxos +kmod-vrx518_tc
|
||||||
|
FILES:=$(PKG_BUILD_DIR)/src/drv_mei_cpe.ko
|
||||||
|
AUTOLOAD:=$(call AutoLoad,50,drv_mei_cpe)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define KernelPackage/ltq-vdsl-vr11-mei/description
|
||||||
|
Lantiq MEI CPE Kernel Module Driver
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
||||||
|
define Package/ltq-vdsl-vr11-mei-test
|
||||||
|
SECTION:=net
|
||||||
|
CATEGORY:=Network
|
||||||
|
TITLE:=Lantiq mei driver test tool
|
||||||
|
URL:=http://www.lantiq.com/
|
||||||
|
DEPENDS:=@TARGET_ipq40xx +kmod-ltq-vdsl-vr11-mei
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/ltq-vdsl-vr11-mei-test/description
|
||||||
|
Userland tool to directly control the mei driver, this is only needed
|
||||||
|
for test and development purposes.
|
||||||
|
endef
|
||||||
|
|
||||||
|
MAKE_FLAGS += \
|
||||||
|
$(KERNEL_MAKE_FLAGS) \
|
||||||
|
SHELL="$(BASH)"
|
||||||
|
|
||||||
|
# ltq-vdsl-app uses a header provided by the MEI driver which has some
|
||||||
|
# conditionals.
|
||||||
|
# Define the conditionals here to have the same view on both sides. If you
|
||||||
|
# change them, you need to change them for the ltq-vdsl-app as well
|
||||||
|
MEI_DRV_CFLAGS = \
|
||||||
|
-DMEI_DRV_ATM_PTM_INTERFACE_ENABLE=1 \
|
||||||
|
-DMEI_SUPPORT_DEBUG_STREAMS=1 \
|
||||||
|
-DMEI_SUPPORT_OPTIMIZED_FW_DL=1
|
||||||
|
|
||||||
|
#MEI_DRV_CFLAGS+= \
|
||||||
|
# -DMEI_SUPPORT_OPTIMIZED_FW_DL=0 \
|
||||||
|
# -DIRQ_POLLING_FORCE=99
|
||||||
|
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--enable-debug-logger-support=no
|
||||||
|
# --enable-debug-stream-support=no
|
||||||
|
|
||||||
|
# This looks weird, but it's necessary to address the right device.
|
||||||
|
# (pdev->dev.parent instead of pdev->dev)
|
||||||
|
MEI_DRV_CFLAGS+= \
|
||||||
|
-DMEI_TARGET_x86=1
|
||||||
|
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--enable-kernelincl="$(LINUX_DIR)/include" \
|
||||||
|
--enable-device=vr11 \
|
||||||
|
--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="$(MEI_DRV_CFLAGS)" \
|
||||||
|
--enable-linux-26 \
|
||||||
|
--enable-kernelbuild="$(LINUX_DIR)" \
|
||||||
|
--enable-drv_test_appl=yes \
|
||||||
|
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-vr11-mei))
|
||||||
|
|
||||||
|
define Package/ltq-vdsl-vr11-mei-test/install
|
||||||
|
$(INSTALL_DIR) $(1)/bin
|
||||||
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/mei_cpe_drv_test $(1)/bin
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,ltq-vdsl-vr11-mei-test))
|
@ -0,0 +1,88 @@
|
|||||||
|
--- a/src/drv_mei_cpe_linux.c
|
||||||
|
+++ b/src/drv_mei_cpe_linux.c
|
||||||
|
@@ -1534,7 +1534,7 @@ struct proc_entry {
|
||||||
|
char name[32];
|
||||||
|
proc_rd_callback_t rd;
|
||||||
|
proc_wr_callback_t wr;
|
||||||
|
- struct file_operations ops;
|
||||||
|
+ struct proc_ops ops;
|
||||||
|
int entity;
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -2068,16 +2068,15 @@ static int mei_proc_single_open(struct i
|
||||||
|
static void mei_proc_entry_create(struct proc_dir_entry *parent_node,
|
||||||
|
struct proc_entry *proc_entry)
|
||||||
|
{
|
||||||
|
- memset(&proc_entry->ops, 0, sizeof(struct file_operations));
|
||||||
|
- proc_entry->ops.owner = THIS_MODULE;
|
||||||
|
+ memset(&proc_entry->ops, 0, sizeof(struct proc_ops));
|
||||||
|
|
||||||
|
- proc_entry->ops.open = mei_proc_single_open;
|
||||||
|
- proc_entry->ops.release = single_release;
|
||||||
|
+ proc_entry->ops.proc_open = mei_proc_single_open;
|
||||||
|
+ proc_entry->ops.proc_release = single_release;
|
||||||
|
|
||||||
|
- proc_entry->ops.read = seq_read;
|
||||||
|
- proc_entry->ops.llseek = seq_lseek;
|
||||||
|
+ proc_entry->ops.proc_read = seq_read;
|
||||||
|
+ proc_entry->ops.proc_lseek = seq_lseek;
|
||||||
|
if (proc_entry->wr)
|
||||||
|
- proc_entry->ops.write = proc_entry->wr;
|
||||||
|
+ proc_entry->ops.proc_write = proc_entry->wr;
|
||||||
|
|
||||||
|
proc_create_data(proc_entry->name,
|
||||||
|
(S_IFREG | S_IRUGO),
|
||||||
|
--- a/src/drv_mei_cpe_linux.h
|
||||||
|
+++ b/src/drv_mei_cpe_linux.h
|
||||||
|
@@ -31,6 +31,7 @@
|
||||||
|
#include <linux/module.h>
|
||||||
|
|
||||||
|
#include <linux/sched.h>
|
||||||
|
+#include <linux/sched/signal.h>
|
||||||
|
#include <linux/interrupt.h>
|
||||||
|
#include <linux/version.h>
|
||||||
|
#include <linux/crc32.h>
|
||||||
|
@@ -122,7 +123,7 @@ typedef int (*MEI_RequestIrq_WrapLinux_t
|
||||||
|
/**
|
||||||
|
Function typedef for the Linux free_irq()
|
||||||
|
*/
|
||||||
|
-typedef void (*MEI_FreeIrq_WrapLinux_t)( unsigned int usedIrq,
|
||||||
|
+typedef const void *(*MEI_FreeIrq_WrapLinux_t)( unsigned int usedIrq,
|
||||||
|
void *usedDevId );
|
||||||
|
|
||||||
|
|
||||||
|
--- a/src/drv_mei_cpe_linux_proc_config.c
|
||||||
|
+++ b/src/drv_mei_cpe_linux_proc_config.c
|
||||||
|
@@ -1277,13 +1277,12 @@ static int mei_proc_single_open(struct i
|
||||||
|
return single_open(file, mei_seq_single_show, PDE_DATA(inode));
|
||||||
|
}
|
||||||
|
|
||||||
|
-static struct file_operations proc_ops = {
|
||||||
|
- .owner = THIS_MODULE,
|
||||||
|
- .open = mei_proc_single_open,
|
||||||
|
- .release = single_release,
|
||||||
|
- .read = seq_read,
|
||||||
|
- .llseek = seq_lseek,
|
||||||
|
- .write = MEI_ProcWriteConfig
|
||||||
|
+static struct proc_ops proc_ops = {
|
||||||
|
+ .proc_open = mei_proc_single_open,
|
||||||
|
+ .proc_release = single_release,
|
||||||
|
+ .proc_read = seq_read,
|
||||||
|
+ .proc_lseek = seq_lseek,
|
||||||
|
+ .proc_write = MEI_ProcWriteConfig
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
--- a/src/mei_cpe_appl_osmap.h
|
||||||
|
+++ b/src/mei_cpe_appl_osmap.h
|
||||||
|
@@ -38,10 +38,6 @@ extern "C"
|
||||||
|
#include <errno.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
-
|
||||||
|
-extern int snprintf (char *__restrict __s, size_t __maxlen,
|
||||||
|
- __const char *__restrict __format, ...)
|
||||||
|
- __THROW __attribute__ ((__format__ (__printf__, 3, 4)));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* ==========================================================================
|
@ -0,0 +1,20 @@
|
|||||||
|
--- a/src/drv_mei_cpe_dbg_driver.c
|
||||||
|
+++ b/src/drv_mei_cpe_dbg_driver.c
|
||||||
|
@@ -309,7 +309,7 @@ MEI_STATIC IFX_void_t MEI_DbgMsgDumpLogW
|
||||||
|
IFX_int32_t i;
|
||||||
|
unsigned short paylSize;
|
||||||
|
union {IFX_uint8_t d8[2]; IFX_uint16_t d16;} temp16;
|
||||||
|
- union {IFX_uint8_t d8[4]; IFX_uint16_t d32;} temp32;
|
||||||
|
+ union {IFX_uint8_t d8[4]; IFX_uint32_t d32;} temp32;
|
||||||
|
|
||||||
|
MEI_DbgMsgDumpLogLabel(pCmvMsg, fctOpCode);
|
||||||
|
|
||||||
|
@@ -368,7 +368,7 @@ MEI_STATIC IFX_void_t MEI_DbgMsgDumpTrcW
|
||||||
|
IFX_int32_t i;
|
||||||
|
unsigned short paylSize;
|
||||||
|
union {IFX_uint8_t d8[2]; IFX_uint16_t d16;} temp16;
|
||||||
|
- union {IFX_uint8_t d8[4]; IFX_uint16_t d32;} temp32;
|
||||||
|
+ union {IFX_uint8_t d8[4]; IFX_uint32_t d32;} temp32;
|
||||||
|
|
||||||
|
MEI_DbgMsgDumpTraceLabel(pCmvMsg, fctOpCode);
|
||||||
|
|
@ -0,0 +1,12 @@
|
|||||||
|
--- a/src/Makefile.am
|
||||||
|
+++ b/src/Makefile.am
|
||||||
|
@@ -213,8 +213,7 @@ drv_mei_cpe_common_cflags = $(AM_CFLAGS)
|
||||||
|
else
|
||||||
|
|
||||||
|
drv_mei_cpe_common_cflags = \
|
||||||
|
- $(AM_CFLAGS) -D__KERNEL__ -DLINUX -D__linux__ -DMODULE -DEXPORT_SYMTAB \
|
||||||
|
- -pipe -Wall -Wimplicit -Wunused -Wuninitialized -Wstrict-aliasing -Wno-date-time
|
||||||
|
+ -D__KERNEL__ -DLINUX -D__linux__ -DMODULE -DEXPORT_SYMTAB
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
@ -0,0 +1,10 @@
|
|||||||
|
--- a/src/drv_mei_cpe_linux.c
|
||||||
|
+++ b/src/drv_mei_cpe_linux.c
|
||||||
|
@@ -4530,7 +4530,6 @@ module_exit (MEI_module_exit);
|
||||||
|
#ifdef MODULE
|
||||||
|
MODULE_AUTHOR("www.lantiq.com");
|
||||||
|
MODULE_DESCRIPTION("MEI CPE Driver - www.lantiq.com");
|
||||||
|
-MODULE_SUPPORTED_DEVICE("MEI CPE Interface");
|
||||||
|
MODULE_LICENSE ("GPL");
|
||||||
|
#endif /* #ifdef MODULE*/
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
--- a/src/drv_mei_cpe_linux.c
|
||||||
|
+++ b/src/drv_mei_cpe_linux.c
|
||||||
|
@@ -1556,8 +1556,8 @@ static void MEI_GetVersionProc(struct se
|
||||||
|
}
|
||||||
|
|
||||||
|
seq_printf(s, "%s" MEI_DRV_CRLF, &MEI_WHATVERSION[4]);
|
||||||
|
- seq_printf(s, "Compiled on %s, %s for Linux kernel %s (jiffies: %ld)" MEI_DRV_CRLF,
|
||||||
|
- __DATE__, __TIME__, UTS_RELEASE, jiffies);
|
||||||
|
+ seq_printf(s, "Compiled for Linux kernel %s (jiffies: %ld)" MEI_DRV_CRLF,
|
||||||
|
+ UTS_RELEASE, jiffies);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
@ -0,0 +1,12 @@
|
|||||||
|
--- a/src/drv_mei_cpe_api_atm_ptm_intern.c
|
||||||
|
+++ b/src/drv_mei_cpe_api_atm_ptm_intern.c
|
||||||
|
@@ -152,6 +152,9 @@ IFX_int32_t MEI_InternalXtmSwhowtimeExit
|
||||||
|
/* Get line number*/
|
||||||
|
dslLineNum = pMeiDynCntrl->pMeiDev->meiDrvCntrl.dslLineNum;
|
||||||
|
|
||||||
|
+ g_tx_link_rate[dslLineNum][0] = 0;
|
||||||
|
+ g_tx_link_rate[dslLineNum][1] = 0;
|
||||||
|
+
|
||||||
|
#ifdef PPA_SUPPORTS_CALLBACKS
|
||||||
|
/* get NULL or function pointer */
|
||||||
|
mei_showtime_exit =
|
@ -0,0 +1,10 @@
|
|||||||
|
--- a/src/drv_mei_cpe_mei_access_vrx.c
|
||||||
|
+++ b/src/drv_mei_cpe_mei_access_vrx.c
|
||||||
|
@@ -1691,7 +1691,6 @@ IFX_int32_t MEI_InterfaceDetect(
|
||||||
|
{
|
||||||
|
MEI_REG_ACCESS_ME_VERSION_SET(pMeiDrvCntrl, 0x00000000);
|
||||||
|
hwVers = MEI_REG_ACCESS_ME_VERSION_GET(pMeiDrvCntrl);
|
||||||
|
- printk ("hwVers=0x%08X\n", hwVers);
|
||||||
|
|
||||||
|
if (MEI_DEVICE_CFG_IS_PLATFORM(e_MEI_DEV_PLATFORM_CONFIG_VR9))
|
||||||
|
{
|
Loading…
x
Reference in New Issue
Block a user