Initial commit

This commit is contained in:
domenico
2025-06-24 15:51:28 +02:00
commit 22031d9dab
6862 changed files with 1462554 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
config LANTIQ_DSL_DEBUG
bool "verbose debugging"
depends on PACKAGE_kmod-ltq-dsl
help
Say Y, if you need ltq-dsl to display debug messages.

View File

@@ -0,0 +1,93 @@
#
# Copyright (C) 2011 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-adsl
PKG_VERSION:=3.24.4.4
PKG_RELEASE:=2
PKG_SOURCE:=drv_dsl_cpe_api_danube-$(PKG_VERSION).tar.gz
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/ltq-dsl-$(BUILD_VARIANT)/drv_dsl_cpe_api-$(PKG_VERSION)
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources/
PKG_HASH:=eb2ed59715d3bf4e8a1460bbbe2f1660039e0a9f9d72afb1b2b16590094eb33c
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
PKG_CHECK_FORMAT_SECURITY:=0
PKG_ASLR_PIE:=0
PKG_FIXUP:=autoreconf
include $(INCLUDE_DIR)/package.mk
define KernelPackage/ltq-adsl-template
SECTION:=sys
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
TITLE:=adsl driver for $(1)
URL:=http://www.lantiq.com/
VARIANT:=$(1)
DEPENDS:=@$(2) +kmod-ltq-adsl-$(1)-mei
FILES:=$(PKG_BUILD_DIR)/src/drv_dsl_cpe_api.ko
AUTOLOAD:=$(call AutoLoad,51,drv_dsl_cpe_api)
endef
KernelPackage/ltq-adsl-danube=$(call KernelPackage/ltq-adsl-template,danube,(TARGET_lantiq_xway||TARGET_lantiq_xway_legacy))
KernelPackage/ltq-adsl-ar9=$(call KernelPackage/ltq-adsl-template,ar9,TARGET_lantiq_xway)
KernelPackage/ltq-adsl-ase=$(call KernelPackage/ltq-adsl-template,ase,TARGET_lantiq_ase)
define KernelPackage/ltq-dsl/config
source "$(SOURCE)/Config.in"
endef
IFX_DSL_MAX_DEVICE=1
IFX_DSL_LINES_PER_DEVICE=1
IFX_DSL_CHANNELS_PER_LINE=1
CONFIGURE_ARGS += --enable-kernel-include="$(LINUX_DIR)/include" \
--with-max-device="$(IFX_DSL_MAX_DEVICE)" \
--with-lines-per-device="$(IFX_DSL_LINES_PER_DEVICE)" \
--with-channels-per-line="$(IFX_DSL_CHANNELS_PER_LINE)" \
--disable-dsl-delt-static \
--disable-adsl-led \
--enable-dsl-ceoc \
--enable-dsl-pm \
--enable-dsl-pm-total \
--enable-dsl-pm-history \
--enable-dsl-pm-showtime \
--enable-dsl-pm-channel-counters \
--enable-dsl-pm-datapath-counters \
--enable-dsl-pm-line-counters \
--enable-dsl-pm-channel-thresholds \
--enable-dsl-pm-datapath-thresholds \
--enable-dsl-pm-line-thresholds \
--enable-dsl-pm-optional-parameters \
--enable-linux-26 \
--enable-kernelbuild="$(LINUX_DIR)" \
ARCH=$(LINUX_KARCH)
CONFIG_TAG_danube:=DANUBE
CONFIG_TAG_ase:=AMAZON_SE
CONFIG_TAG_ar9:=AR9
CONFIGURE_ARGS += --enable-add-drv-cflags="-DMODULE -DCONFIG_$(CONFIG_TAG_$(BUILD_VARIANT))"
CONFIGURE_ARGS += --enable-danube
ifeq ($(CONFIG_LANTIQ_DSL_DEBUG),y)
CONFIGURE_ARGS += \
--enable-debug=yes \
--enable-debug-prints=yes
EXTRA_CFLAGS += -DDEBUG
endif
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/adsl
$(CP) $(PKG_BUILD_DIR)/src/include/drv_dsl_cpe_*.h $(1)/usr/include/adsl/
endef
$(eval $(call KernelPackage,ltq-adsl-danube))
$(eval $(call KernelPackage,ltq-adsl-ase))
$(eval $(call KernelPackage,ltq-adsl-ar9))

View File

@@ -0,0 +1,32 @@
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -253,10 +253,7 @@ else
drv_dsl_cpe_api_common_mod_cflags =
endif
-drv_dsl_cpe_api_common_cflags = -DLINUX -D__LINUX__ -D__KERNEL__ -DEXPORT_SYMTAB \
- -pipe -Wall -Wformat -Wimplicit -Wunused -Wswitch -Wcomment -Winline \
- -Wuninitialized -Wparentheses -Wsign-compare -Wreturn-type \
- -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common
+drv_dsl_cpe_api_common_cflags = -DLINUX -D__LINUX__ -D__KERNEL__ -DEXPORT_SYMTAB
if DSL_DBG_MAX_LEVEL_SET
drv_dsl_cpe_api_common_cflags += -DDSL_DBG_MAX_LEVEL=$(DSL_DBG_MAX_LEVEL_PRE)
@@ -266,7 +263,7 @@ endif
drv_dsl_cpe_api_target_cflags = $(ADD_DRV_CFLAGS)
# compile cflags
-drv_dsl_cpe_api_compile_cflags = $(EXTRA_DRV_CFLAGS)
+drv_dsl_cpe_api_compile_cflags =
if !KERNEL_2_6
# the headerfile of linux kernels 2.6.x contain to much arithmetic
@@ -314,7 +311,7 @@ drv_dsl_cpe_api.ko: $(drv_dsl_cpe_api_SO
@echo -e "# drv_dsl_cpe_api: Generated to build Linux 2.6.x kernel object" > $(PWD)/Kbuild
@echo -e "obj-m := $(subst .ko,.o,$@)" >> $(PWD)/Kbuild
@echo -e "$(subst .ko,,$@)-y := $(drv_dsl_cpe_api_OBJS)" >> $(PWD)/Kbuild
- @echo -e "EXTRA_CFLAGS := $(CFLAGS) -DHAVE_CONFIG_H $(drv_dsl_cpe_api_CFLAGS) $(DSL_DRIVER_INCL_PATH) $(IFXOS_INCLUDE_PATH) -I@abs_srcdir@/include -I$(PWD)/include" >> $(PWD)/Kbuild
+ @echo -e "EXTRA_CFLAGS := -DHAVE_CONFIG_H $(drv_dsl_cpe_api_CFLAGS) $(DSL_DRIVER_INCL_PATH) $(IFXOS_INCLUDE_PATH) -I@abs_srcdir@/include -I$(PWD)/include" >> $(PWD)/Kbuild
$(MAKE) ARCH=@KERNEL_ARCH@ -C @KERNEL_BUILD_PATH@ O=@KERNEL_BUILD_PATH@ M=$(PWD) modules
clean-generic:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,11 @@
--- a/src/device/drv_dsl_cpe_device_danube.c
+++ b/src/device/drv_dsl_cpe_device_danube.c
@@ -4069,7 +4069,7 @@ static DSL_Error_t DSL_DRV_DANUBE_XTUSys
DSL_CTX_WRITE(pContext, nErrCode, xtseCurr, xtseCurr);
- for (nRetry = 0; nRetry < 20; nRetry++)
+ for (nRetry = 0; nRetry < 20 && bStatusUpdated == DSL_FALSE; nRetry++)
{
/* Get STAT1 info*/
nErrCode = DSL_DRV_DANUBE_CmvRead(pContext, DSL_CMV_GROUP_STAT,

View File

@@ -0,0 +1,70 @@
--- a/src/common/drv_dsl_cpe_os_linux.c
+++ b/src/common/drv_dsl_cpe_os_linux.c
@@ -12,6 +12,7 @@
#define DSL_INTERN
#include <linux/device.h>
+#include <linux/platform_device.h>
#include "drv_dsl_cpe_api.h"
#include "drv_dsl_cpe_api_ioctl.h"
@@ -1063,7 +1064,7 @@ static void DSL_DRV_DebugInit(void)
#endif
/* Entry point of driver */
-int __init DSL_ModuleInit(void)
+static int __devinit ltq_adsl_probe(struct platform_device *pdev)
{
struct class *dsl_class;
DSL_int_t i;
@@ -1117,7 +1118,7 @@ int __init DSL_ModuleInit(void)
return 0;
}
-void __exit DSL_ModuleCleanup(void)
+static int __devexit ltq_adsl_remove(struct platform_device *pdev)
{
printk("Module will be unloaded"DSL_DRV_CRLF);
@@ -1132,7 +1133,7 @@ void __exit DSL_ModuleCleanup(void)
(DSL_uint8_t**)&g_BndFpgaBase);
#endif /* defined(INCLUDE_DSL_CPE_API_VINAX) && defined(INCLUDE_DSL_BONDING)*/
- return;
+ return 0;
}
#ifndef _lint
@@ -1148,8 +1149,30 @@ module_param(debug_level, byte, 0);
MODULE_PARM_DESC(debug_level, "set to get more (1) or fewer (4) debug outputs");
#endif /* #ifndef DSL_DEBUG_DISABLE*/
-module_init(DSL_ModuleInit);
-module_exit(DSL_ModuleCleanup);
+static const struct of_device_id ltq_adsl_match[] = {
+#ifdef CONFIG_DANUBE
+ { .compatible = "lantiq,adsl-danube"},
+#elif defined CONFIG_AMAZON_SE
+ { .compatible = "lantiq,adsl-ase"},
+#elif defined CONFIG_AR9
+ { .compatible = "lantiq,adsl-arx100"},
+#endif
+ {},
+};
+MODULE_DEVICE_TABLE(of, ltq_adsl_match);
+
+static struct platform_driver ltq_adsl_driver = {
+ .probe = ltq_adsl_probe,
+ .remove = __devexit_p(ltq_adsl_remove),
+ .driver = {
+ .name = "adsl",
+ .owner = THIS_MODULE,
+ .of_match_table = ltq_adsl_match,
+ },
+};
+
+module_platform_driver(ltq_adsl_driver);
+
#endif /* #ifndef _lint*/
//EXPORT_SYMBOL(DSL_ModuleInit);

View File

@@ -0,0 +1,137 @@
--- a/src/common/drv_dsl_cpe_os_linux.c
+++ b/src/common/drv_dsl_cpe_os_linux.c
@@ -11,6 +11,7 @@
#ifdef __LINUX__
#define DSL_INTERN
+#include <linux/kthread.h>
#include <linux/device.h>
#include <linux/platform_device.h>
@@ -40,7 +41,7 @@ static DSL_ssize_t DSL_DRV_Write(DSL_DRV
static DSL_int_t DSL_DRV_Ioctls(DSL_DRV_inode_t * pINode, DSL_DRV_file_t * pFile,
DSL_uint_t nCommand, unsigned long nArg);
#else
-static DSL_int_t DSL_DRV_Ioctls(DSL_DRV_file_t * pFile,
+static long DSL_DRV_Ioctls(DSL_DRV_file_t * pFile,
DSL_uint_t nCommand, unsigned long nArg);
#endif
static int DSL_DRV_Open(DSL_DRV_inode_t * ino, DSL_DRV_file_t * fil);
@@ -184,7 +185,7 @@ static DSL_int_t DSL_DRV_Ioctls(DSL_DRV_
DSL_uint_t nCommand,
unsigned long nArg)
#else
-static DSL_int_t DSL_DRV_Ioctls(
+static long DSL_DRV_Ioctls(
DSL_DRV_file_t * pFile,
DSL_uint_t nCommand,
unsigned long nArg)
@@ -521,9 +522,9 @@ DSL_void_t* DSL_IoctlMemCpyTo(
- IFX_SUCCESS on success
- IFX_ERROR on error
*/
-DSL_DRV_STATIC DSL_int32_t DSL_DRV_KernelThreadStartup(
- DSL_DRV_ThreadCtrl_t *pThrCntrl)
+static int DSL_DRV_KernelThreadStartup(void *data)
{
+ DSL_DRV_ThreadCtrl_t *pThrCntrl = (DSL_DRV_ThreadCtrl_t*) data;
DSL_int32_t retVal = -1;
#ifndef _lint
@@ -546,30 +547,6 @@ DSL_DRV_STATIC DSL_int32_t DSL_DRV_Kerne
(DSL_NULL, "ENTER - Kernel Thread Startup <%s>" DSL_DRV_CRLF,
pThrCntrl->thrParams.pName));
- /* do LINUX specific setup */
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
- daemonize();
- reparent_to_init();
-
- /* lock the kernel. A new kernel thread starts without
- the big kernel lock, regardless of the lock state
- of the creator (the lock level is *not* inheritated)
- */
- lock_kernel();
-
- /* Don't care about any signals. */
- siginitsetinv(&current->blocked, 0);
-
- /* set name of this process */
- strcpy(kthread->comm, pThrCntrl->thrParams.pName);
-
- /* let others run */
- unlock_kernel();
-#else
- daemonize(pThrCntrl->thrParams.pName);
-
-#endif
-
/*DSL_DRV_ThreadPriorityModify(pThrCntrl->nPriority);*/
pThrCntrl->thrParams.bRunning = 1;
@@ -639,9 +616,7 @@ DSL_int32_t DSL_DRV_ThreadInit(
init_completion(&pThrCntrl->thrCompletion);
/* start kernel thread via the wrapper function */
- pThrCntrl->pid = kernel_thread( (DSL_DRV_KERNEL_THREAD_StartRoutine)DSL_DRV_KernelThreadStartup,
- (void *)pThrCntrl,
- DSL_DRV_DRV_THREAD_OPTIONS);
+ pThrCntrl->pid = kthread_run(DSL_DRV_KernelThreadStartup, (void *)pThrCntrl, pThrCntrl->thrParams.pName);
pThrCntrl->bValid = DSL_TRUE;
@@ -1064,12 +1039,12 @@ static void DSL_DRV_DebugInit(void)
#endif
/* Entry point of driver */
-static int __devinit ltq_adsl_probe(struct platform_device *pdev)
+static int ltq_adsl_probe(struct platform_device *pdev)
{
struct class *dsl_class;
DSL_int_t i;
- printk(DSL_DRV_CRLF DSL_DRV_CRLF "Infineon CPE API Driver version: %s" DSL_DRV_CRLF,
+ printk("Infineon CPE API Driver version: %s" DSL_DRV_CRLF,
&(dsl_cpe_api_version[4]));
DSL_DRV_MemSet( ifxDevices, 0, sizeof(DSL_devCtx_t) * DSL_DRV_MAX_DEVICE_NUMBER );
@@ -1118,7 +1093,7 @@ static int __devinit ltq_adsl_probe(stru
return 0;
}
-static int __devexit ltq_adsl_remove(struct platform_device *pdev)
+static int ltq_adsl_remove(struct platform_device *pdev)
{
printk("Module will be unloaded"DSL_DRV_CRLF);
@@ -1163,7 +1138,7 @@ MODULE_DEVICE_TABLE(of, ltq_adsl_match);
static struct platform_driver ltq_adsl_driver = {
.probe = ltq_adsl_probe,
- .remove = __devexit_p(ltq_adsl_remove),
+ .remove = ltq_adsl_remove,
.driver = {
.name = "adsl",
.owner = THIS_MODULE,
--- a/src/include/drv_dsl_cpe_os_lint_map.h
+++ b/src/include/drv_dsl_cpe_os_lint_map.h
@@ -247,7 +247,7 @@ typedef struct
DSL_DRV_ThreadFunction_t pThrFct;
/** Kernel thread process ID */
- DSL_int32_t pid;
+ struct task_struct *pid;
/** requested kernel thread priority */
DSL_int32_t nPriority;
--- a/src/include/drv_dsl_cpe_os_linux.h
+++ b/src/include/drv_dsl_cpe_os_linux.h
@@ -288,7 +288,7 @@ typedef struct
DSL_DRV_ThreadFunction_t pThrFct;
/** Kernel thread process ID */
- DSL_int32_t pid;
+ struct task_struct *pid;
/** requested kernel thread priority */
DSL_int32_t nPriority;

View File

@@ -0,0 +1,30 @@
--- a/src/include/drv_dsl_cpe_os_linux.h
+++ b/src/include/drv_dsl_cpe_os_linux.h
@@ -214,12 +214,25 @@ static inline int dsl_mutex_lock(struct
#define DSL_DRV_MUTEX_LOCK(id) down_interruptible(&(id))
#define DSL_DRV_MUTEX_UNLOCK(id) up(&(id))
#endif
+
+static inline long
+ugly_hack_sleep_on_timeout(wait_queue_head_t *q, long timeout)
+{
+ DEFINE_WAIT(wait);
+
+ prepare_to_wait(q, &wait, TASK_INTERRUPTIBLE);
+ timeout = schedule_timeout(timeout);
+ finish_wait(q, &wait);
+
+ return timeout;
+}
+
#define DSL_DRV_INIT_WAKELIST(name,queue) init_waitqueue_head(&(queue))
#define DSL_DRV_WAKEUP_WAKELIST(queue) wake_up_interruptible(&(queue))
#define DSL_DRV_INIT_EVENT(name,ev) init_waitqueue_head(&(ev))
/* wait for an event, timeout is measured in ms */
-#define DSL_DRV_WAIT_EVENT_TIMEOUT(ev,t) interruptible_sleep_on_timeout(&(ev), (t) * HZ / 1000)
-#define DSL_DRV_WAIT_EVENT(ev) interruptible_sleep_on(&(ev))
+#define DSL_DRV_WAIT_EVENT_TIMEOUT(ev,t) ugly_hack_sleep_on_timeout(&(ev), (t) * HZ / 1000)
+#define DSL_DRV_WAIT_EVENT(ev) ugly_hack_sleep_on_timeout(&(ev), MAX_SCHEDULE_TIMEOUT)
#define DSL_DRV_WAKEUP_EVENT(ev) wake_up_interruptible(&(ev))
#define DSL_DRV_TimeMSecGet() DSL_DRV_ElapsedTimeMSecGet(0)
#define DSL_WAIT(ms) msleep(ms)