--- a/src/include/drv_dsl_cpe_device_danube.h
+++ b/src/include/drv_dsl_cpe_device_danube.h
@@ -24,7 +24,7 @@
    #include "drv_dsl_cpe_simulator_danube.h"
 #else
 /* Include for the low level driver interface header file */
-#include "asm/ifx/ifx_mei_bsp.h"
+#include "mei/ifxmips_mei_interface.h"
 #endif /* defined(DSL_CPE_SIMULATOR_DRIVER) && defined(WIN32)*/
 
 #define DSL_MAX_LINE_NUMBER 1
--- 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/device.h>
 
 #include "drv_dsl_cpe_api.h"
 #include "drv_dsl_cpe_api_ioctl.h"
@@ -34,9 +35,13 @@
 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);
 
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36))
 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,
+                         DSL_uint_t nCommand, unsigned long nArg);
+#endif
 static int DSL_DRV_Open(DSL_DRV_inode_t * ino, DSL_DRV_file_t * fil);
 
 static int DSL_DRV_Release(DSL_DRV_inode_t * ino, DSL_DRV_file_t * fil);
@@ -72,7 +77,11 @@
    open:    DSL_DRV_Open,
    release: DSL_DRV_Release,
    write:   DSL_DRV_Write,
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36))
    ioctl:   DSL_DRV_Ioctls,
+#else
+   unlocked_ioctl:   DSL_DRV_Ioctls,
+#endif
    poll:    DSL_DRV_Poll
 };
 #else
@@ -168,10 +177,17 @@
    \return  Success or failure.
    \ingroup Internal
 */
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36))
 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,
+   DSL_uint_t nCommand,
+   unsigned long nArg)
+#endif
 {
    DSL_int_t nErr=0;
    DSL_boolean_t bIsInKernel;
@@ -216,16 +232,7 @@
          }
       }
    }
-
-   if (pINode == DSL_NULL)
-   {
-      bIsInKernel = DSL_TRUE;
-   }
-   else
-   {
-      bIsInKernel = DSL_FALSE;
-   }
-
+   bIsInKernel = DSL_FALSE;
    if ( (_IOC_TYPE(nCommand) == DSL_IOC_MAGIC_CPE_API) ||
         (_IOC_TYPE(nCommand) == DSL_IOC_MAGIC_CPE_API_G997) ||
         (_IOC_TYPE(nCommand) == DSL_IOC_MAGIC_CPE_API_PM) ||
@@ -1058,6 +1065,7 @@
 /* Entry point of driver */
 int __init DSL_ModuleInit(void)
 {
+   struct class *dsl_class;
    DSL_int_t i;
 
    printk(DSL_DRV_CRLF DSL_DRV_CRLF "Infineon CPE API Driver version: %s" DSL_DRV_CRLF,
@@ -1104,7 +1112,8 @@
    }
 
    DSL_DRV_DevNodeInit();
-
+   dsl_class = class_create(THIS_MODULE, "dsl_cpe_api");
+   device_create(dsl_class, NULL, MKDEV(DRV_DSL_CPE_API_DEV_MAJOR, 0), NULL, "dsl_cpe_api");
    return 0;
 }
 
--- a/src/include/drv_dsl_cpe_os_linux.h
+++ b/src/include/drv_dsl_cpe_os_linux.h
@@ -17,17 +17,17 @@
 #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>
 #include <linux/ctype.h>
 #include <linux/version.h>
 #include <linux/spinlock.h>
-
+#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>
