From 7db53fc00f4aa8e65c9f5e58e14861aa534b8a4f Mon Sep 17 00:00:00 2001 From: John Crispin Date: Thu, 14 Mar 2013 18:42:43 +0000 Subject: [PATCH] make adsl work with v3.8 Signed-off-by: John Crispin SVN-Revision: 36016 --- .../ltq-adsl/patches/130-linux3.8.patch | 152 ++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 package/platform/lantiq/ltq-adsl/patches/130-linux3.8.patch diff --git a/package/platform/lantiq/ltq-adsl/patches/130-linux3.8.patch b/package/platform/lantiq/ltq-adsl/patches/130-linux3.8.patch new file mode 100644 index 0000000000..21dbe6bd8d --- /dev/null +++ b/package/platform/lantiq/ltq-adsl/patches/130-linux3.8.patch @@ -0,0 +1,152 @@ +Index: drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c +=================================================================== +--- drv_dsl_cpe_api-3.24.4.4.orig/src/common/drv_dsl_cpe_os_linux.c 2013-03-14 11:44:50.318326078 +0100 ++++ drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c 2013-03-14 11:46:08.562329425 +0100 +@@ -11,6 +11,7 @@ + #ifdef __LINUX__ + + #define DSL_INTERN ++#include + #include + #include + +@@ -40,7 +41,7 @@ + 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 @@ + 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 @@ + - 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_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(¤t->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; +@@ -629,7 +606,7 @@ + if (DSL_DRV_THREAD_INIT_VALID(pThrCntrl) == DSL_FALSE) + { + /* set thread function arguments */ +- strcpy(pThrCntrl->thrParams.pName, pName); ++ snprintf(pThrCntrl->thrParams.pName, DSL_DRV_THREAD_NAME_LEN, "adsl - %s", pName); + pThrCntrl->nPriority = nPriority; + pThrCntrl->thrParams.nArg1 = nArg1; + pThrCntrl->thrParams.nArg2 = nArg2; +@@ -639,9 +616,7 @@ + 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 @@ + #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 @@ + 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 @@ + + 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, +Index: drv_dsl_cpe_api-3.24.4.4/src/include/drv_dsl_cpe_os_lint_map.h +=================================================================== +--- drv_dsl_cpe_api-3.24.4.4.orig/src/include/drv_dsl_cpe_os_lint_map.h 2009-02-24 21:44:54.000000000 +0100 ++++ drv_dsl_cpe_api-3.24.4.4/src/include/drv_dsl_cpe_os_lint_map.h 2013-03-14 11:44:50.330326079 +0100 +@@ -247,7 +247,7 @@ + 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; +Index: drv_dsl_cpe_api-3.24.4.4/src/include/drv_dsl_cpe_os_linux.h +=================================================================== +--- drv_dsl_cpe_api-3.24.4.4.orig/src/include/drv_dsl_cpe_os_linux.h 2013-03-14 11:44:50.298326077 +0100 ++++ drv_dsl_cpe_api-3.24.4.4/src/include/drv_dsl_cpe_os_linux.h 2013-03-14 11:44:50.330326079 +0100 +@@ -288,7 +288,7 @@ + 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; -- 2.30.2