diff -ruN fritz/src/common.h fcdsl/src/common.h
--- fritz/src/common.h	2009-02-06 11:04:01.000000000 +0100
+++ fcdsl/src/common.h	2009-02-05 11:57:55.000000000 +0100
@@ -44,7 +44,7 @@
 /*---------------------------------------------------------------------------*\
 \*---------------------------------------------------------------------------*/
 typedef	long			intptr_t;
-typedef	unsigned long		uintptr_t;
+//typedef	unsigned long		uintptr_t;
 
 /*---------------------------------------------------------------------------*\
 \*---------------------------------------------------------------------------*/
diff -ruN fritz/src/driver.c fcdsl/src/driver.c
--- fritz/src/driver.c	2009-02-06 11:04:01.000000000 +0100
+++ fcdsl/src/driver.c	2009-02-06 10:50:21.000000000 +0100
@@ -120,7 +120,7 @@
 static DECLARE_WAIT_QUEUE_HEAD(capi_wait);
 static DECLARE_WAIT_QUEUE_HEAD(dbg_wait);
 
-static DECLARE_MUTEX_LOCKED(thread_sync);
+//static DECLARE_MUTEX_LOCKED(thread_sync);
 
 #define SCHED_WAKEUP_CAPI       { atomic_set (&thread_capi_flag, 1); wake_up_interruptible (&capi_wait); }
 #define SCHED_WAKEUP            { atomic_set (&got_kicked, 1); wake_up_interruptible (&wait); }
@@ -415,10 +415,10 @@
 static void exit_debug_buffer (dbg_buf_p dbp) {
 	
 	assert (dbp != NULL);
-	info (find_task_by_pid (dbp->pid) != NULL);
+	info (find_task_by_vpid (dbp->pid) != NULL);
 	LOG("Stopping debug thread...\n");
 	atomic_set (&dbp->stop, 1);
-	if (find_task_by_pid (dbp->pid)) {
+	if (find_task_by_vpid (dbp->pid)) {
 		wake_up_interruptible (&dbg_wait);
 	} else {
 		hfree (dbp);
@@ -1410,7 +1410,9 @@
 		}
 	}
 	LOG("Scheduler thread stopped.\n");
+#if 0
 	up (&thread_sync);
+#endif
 	return 0;
 } /* sched_thread */
 
@@ -1435,7 +1437,7 @@
 static void kill_thread (void) {
 
 	atomic_set (&thread_flag, 0);
-	if (NULL == find_task_by_pid (thread_pid)) {
+	if (NULL == find_task_by_vpid (thread_pid)) {
 		LOG("Thread[%d] has died before!\n", thread_pid);
 	} else {
 		if (!atomic_read (&thread_capi_flag)) {
@@ -1444,7 +1446,9 @@
 			SCHED_WAKEUP;
 		}
 		LOG("Thread signalled, waiting for termination...\n");
+#if 0
 		down (&thread_sync);
+#endif
 		LOG("Thread[%d] terminated.\n", thread_pid);
 	}
 	thread_pid = -1;
@@ -1568,10 +1572,9 @@
 
 /*---------------------------------------------------------------------------*\
 \*---------------------------------------------------------------------------*/
-int driver_init (void) {
-
+int fritz_driver_init (void) {
 	return (NULL != (capi_lib = link_library (&capi_card)));
-} /* driver_init */
+} /* fritz_driver_init */
 
 /*---------------------------------------------------------------------------*\
 \*---------------------------------------------------------------------------*/
diff -ruN fritz/src/driver.h fcdsl/src/driver.h
--- fritz/src/driver.h	2009-02-06 11:04:01.000000000 +0100
+++ fcdsl/src/driver.h	2009-02-05 12:16:52.000000000 +0100
@@ -24,7 +24,7 @@
 #define __have_driver_h__
 
 #include <asm/atomic.h>
-#include <linux/config.h>
+#include <linux/autoconf.h>
 #include <linux/skbuff.h>
 #include <linux/pci.h>
 #include <linux/spinlock.h>
@@ -161,7 +161,7 @@
 
 /*---------------------------------------------------------------------------*\
 \*---------------------------------------------------------------------------*/
-extern int driver_init (void);
+int fritz_driver_init (void);
 extern void driver_exit (void);
 
 #endif
diff -ruN fritz/src/fcdslsl.mod.c fcdsl/src/fcdslsl.mod.c
--- fritz/src/fcdslsl.mod.c	1970-01-01 01:00:00.000000000 +0100
+++ fcdsl/src/fcdslsl.mod.c	2009-02-06 10:52:43.000000000 +0100
@@ -0,0 +1,85 @@
+#include <linux/module.h>
+#include <linux/vermagic.h>
+#include <linux/compiler.h>
+
+MODULE_INFO(vermagic, VERMAGIC_STRING);
+
+struct module __this_module
+__attribute__((section(".gnu.linkonce.this_module"))) = {
+ .name = KBUILD_MODNAME,
+ .init = init_module,
+#ifdef CONFIG_MODULE_UNLOAD
+ .exit = cleanup_module,
+#endif
+ .arch = MODULE_ARCH_INIT,
+};
+
+static const struct modversion_info ____versions[]
+__used
+__attribute__((section("__versions"))) = {
+	{ 0xc3b149e3, "struct_module" },
+	{ 0x6337eb8e, "find_task_by_vpid" },
+	{ 0x4c3af445, "__request_region" },
+	{ 0xe9aaf829, "per_cpu__current_task" },
+	{ 0x12da5bb2, "__kmalloc" },
+	{ 0xe88ad327, "_spin_trylock" },
+	{ 0xd3b339d1, "attach_capi_ctr" },
+	{ 0xd6ee688f, "vmalloc" },
+	{ 0x349cba85, "strchr" },
+	{ 0xc8b57c27, "autoremove_wake_function" },
+	{ 0x2baa6586, "capilib_new_ncci" },
+	{ 0x9f823278, "register_capi_driver" },
+	{ 0x6d0da34c, "param_get_short" },
+	{ 0xaa165d27, "capilib_release_appl" },
+	{ 0x2b8eab1f, "capilib_free_ncci" },
+	{ 0xeae3dfd6, "__const_udelay" },
+	{ 0x204ea2d, "capi_ctr_handle_message" },
+	{ 0x999e8297, "vfree" },
+	{ 0xeaa456ed, "_spin_lock_irqsave" },
+	{ 0x7d11c268, "jiffies" },
+	{ 0x52e509da, "pci_set_master" },
+	{ 0x9070b3f2, "ioport_resource" },
+	{ 0x8d3894f2, "_ctype" },
+	{ 0x1b7d4074, "printk" },
+	{ 0x4403fcf, "unregister_capi_driver" },
+	{ 0xfaef0ed, "__tasklet_schedule" },
+	{ 0x94d70a31, "capi_ctr_ready" },
+	{ 0x71e8d5ba, "capilib_data_b3_req" },
+	{ 0x27147e64, "_spin_unlock_irqrestore" },
+	{ 0xafa5ffb2, "capi_ctr_reseted" },
+	{ 0x436c9468, "__alloc_skb" },
+	{ 0xfbed20d8, "ioremap_nocache" },
+	{ 0x3bd1b1f6, "msecs_to_jiffies" },
+	{ 0x2cf190e3, "request_irq" },
+	{ 0x4292364c, "schedule" },
+	{ 0xd62c833f, "schedule_timeout" },
+	{ 0x6790e61a, "kfree_skb" },
+	{ 0x8bb33e7d, "__release_region" },
+	{ 0x34d80a35, "pci_unregister_driver" },
+	{ 0xffd3c7, "init_waitqueue_head" },
+	{ 0x6989a769, "vsnprintf" },
+	{ 0x994e1983, "__wake_up" },
+	{ 0x72270e35, "do_gettimeofday" },
+	{ 0x37a0cba, "kfree" },
+	{ 0x2caa52dc, "prepare_to_wait" },
+	{ 0xedc03953, "iounmap" },
+	{ 0xe6ce972b, "__pci_register_driver" },
+	{ 0x2cd9e459, "param_set_short" },
+	{ 0x5878e0d0, "finish_wait" },
+	{ 0x7e9ebb05, "kernel_thread" },
+	{ 0x47625133, "detach_capi_ctr" },
+	{ 0x25da070, "snprintf" },
+	{ 0x943b0832, "skb_put" },
+	{ 0x7bee7dc8, "pci_enable_device" },
+	{ 0x62e32d43, "capilib_data_b3_conf" },
+	{ 0xd6c963c, "copy_from_user" },
+	{ 0xdc43a9c8, "daemonize" },
+	{ 0xf20dabd8, "free_irq" },
+};
+
+static const char __module_depends[]
+__used
+__attribute__((section(".modinfo"))) =
+"depends=kernelcapi";
+
+MODULE_ALIAS("pci:v00001244d00002700sv*sd*bc*sc*i*");
diff -ruN fritz/src/main.c fcdsl/src/main.c
--- fritz/src/main.c	2009-02-06 11:04:01.000000000 +0100
+++ fcdsl/src/main.c	2009-02-05 12:16:02.000000000 +0100
@@ -23,7 +23,7 @@
 #include <stdarg.h>
 #include <asm/uaccess.h>
 #include <linux/pci.h>
-#include <linux/config.h>
+#include <linux/autoconf.h>
 #include <linux/version.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
@@ -116,7 +116,7 @@
 		return -ENODEV;
 	}
 	NOTE("Loading...\n");
-	if (!driver_init ()) {
+	if (!fritz_driver_init()){
 		ERROR("Error: Driver library not available.\n");
 		NOTE("Not loaded.\n");
 		return -ENOSYS;
@@ -195,7 +195,7 @@
 	NOTE("-- 32 bit CAPI driver --\n");
 #endif
 
-	if (0 == (err = pci_module_init (&fcdsl2_driver))) {
+	if (0 == (err = pci_register_driver(&fcdsl2_driver))) {
 		LOG("PCI driver registered.\n");
 		register_capi_driver (&fcdsl2_capi_driver);
 		LOG("CAPI driver registered.\n");
diff -ruN fritz/src/main.h fcdsl/src/main.h
--- fritz/src/main.h	2009-02-06 11:04:01.000000000 +0100
+++ fcdsl/src/main.h	2009-02-05 12:03:07.000000000 +0100
@@ -26,6 +26,18 @@
 extern void inc_use_count (void);
 extern void dec_use_count (void);
 
+#define SA_INTERRUPT IRQF_DISABLED
+#define SA_SAMPLE_RANDOM IRQF_SAMPLE_RANDOM
+#define SA_SHIRQ IRQF_SHARED
+#define SA_PROBEIRQ IRQF_PROBE_SHARED
+#define SA_PERCPU IRQF_PERCPU
+
+#define SA_TRIGGER_LOW IRQF_TRIGGER_LOW
+#define SA_TRIGGER_HIGH IRQF_TRIGGER_HIGH
+#define SA_TRIGGER_FALLING IRQF_TRIGGER_FALLING
+#define SA_TRIGGER_RISING IRQF_TRIGGER_RISING
+#define SA_TRIGGER_MASK IRQF_TRIGGER_MASK
+
 extern char REVISION[];
 
 extern short int VCC;
diff -ruN fritz/src/tools.h fcdsl/src/tools.h
--- fritz/src/tools.h	2009-02-06 11:04:01.000000000 +0100
+++ fcdsl/src/tools.h	2009-02-05 11:57:16.000000000 +0100
@@ -71,12 +71,14 @@
 
 /*---------------------------------------------------------------------------*\
 \*---------------------------------------------------------------------------*/
+#ifndef atomic_xchg
 static inline unsigned long atomic_xchg (
 	volatile atomic_t *	v, 
 	unsigned		value
 ) {
 	return __xchg (value, &v->counter, sizeof (unsigned));
 } /* atomic_xchg */
+#endif
 
 /*---------------------------------------------------------------------------*\
 \*---------------------------------------------------------------------------*/
