# HG changeset patch
# User Florian Pose <fp@igh-essen.com>
# Date 1223542848 0
# Node ID 642048176899cc8d6bf9d1a3fd0a284e16044ecd
# Parent  d64ed42e0d113a3866a4eca91a0f07f65e4e454b
Applied patch by Mario Witkowski to support the new class/device
interface from kernel 2.6.26.

diff -r d64ed42e0d11 -r 642048176899 master/master.c
--- a/master/master.c	Thu Oct 02 15:38:35 2008 +0000
+++ b/master/master.c	Thu Oct 09 09:00:48 2008 +0000
@@ -167,12 +167,16 @@
     if (ec_cdev_init(&master->cdev, master, device_number))
         goto out_clear_fsm;
     
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 15)
-    master->class_device = class_device_create(class,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26)
+    master->class_device = device_create(class, NULL,
+            MKDEV(MAJOR(device_number), master->index),
+            "EtherCAT%u", master->index);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 15)
+    master->class_device = class_device_create(class, NULL,
             MKDEV(MAJOR(device_number), master->index),
             NULL, "EtherCAT%u", master->index);
 #else
-    master->class_device = class_device_create(class, NULL,
+    master->class_device = class_device_create(class,
             MKDEV(MAJOR(device_number), master->index),
             NULL, "EtherCAT%u", master->index);
 #endif
@@ -204,7 +208,11 @@
         ec_master_t *master /**< EtherCAT master */
         )
 {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26)
+    device_unregister(master->class_device);
+#else
     class_device_unregister(master->class_device);
+#endif
     ec_cdev_clear(&master->cdev);
 #ifdef EC_EOE
     ec_master_clear_eoe_handlers(master);
diff -r d64ed42e0d11 -r 642048176899 master/master.h
--- a/master/master.h	Thu Oct 02 15:38:35 2008 +0000
+++ b/master/master.h	Thu Oct 09 09:00:48 2008 +0000
@@ -41,6 +41,7 @@
 #ifndef __EC_MASTER_H__
 #define __EC_MASTER_H__
 
+#include <linux/version.h>
 #include <linux/list.h>
 #include <linux/timer.h>
 #include <linux/wait.h>
@@ -88,7 +89,12 @@
     unsigned int reserved; /**< \a True, if the master is in use. */
 
     ec_cdev_t cdev; /**< Master character device. */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26)
+    struct device *class_device; /**< Master class device. */
+#else
     struct class_device *class_device; /**< Master class device. */
+#endif
+
     struct semaphore master_sem; /**< Master semaphore. */
 
     ec_device_t main_device; /**< EtherCAT main device. */