]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - lincan/src/main.c
Actual driver code for directly mapped SJA1000 into PCI mem region 0.
[lincan.git] / lincan / src / main.c
index 6463147c9196ee6b42eaa2972029437b117a03bc..c2c8b1e945ba734acc577002d6fdf21300e4ae7c 100644 (file)
@@ -36,8 +36,6 @@
 #define EXPORT_SYMTAB
 #endif
 
-#include <linux/autoconf.h>
-
 #include <linux/module.h>
 
 #include <linux/kernel.h>
 #include <linux/sched.h>
 #include <linux/poll.h>
 #include <linux/version.h>
-#include <linux/autoconf.h>
 #include <linux/interrupt.h>
 
 #if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,0))
+ #include <linux/autoconf.h>
  #include <linux/wrapper.h>
 #else
  #include <linux/device.h>
@@ -202,6 +200,13 @@ devfs_handle_t  devfs_handles[MAX_TOT_MSGOBJS];
 #endif
 #endif
 
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36))
+static int can_oldapi_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
+{
+       return can_ioctl(file, cmd, arg);
+}
+#endif /* 2.6.36 */
+
 /* Pointers to dynamically allocated memory are maintained in a linked list
  * to ease memory deallocation.
  */
@@ -215,7 +220,11 @@ struct file_operations can_fops=
        read:           can_read,
        write:          can_write,
        poll:           can_poll,
-       ioctl:          can_ioctl,
+  #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36))
+       ioctl:          can_oldapi_ioctl,
+  #else /* Linux 3.x */
+       unlocked_ioctl: can_ioctl,
+  #endif /* Linux 3.x */
        open:           can_open,
        release:        can_close,
   #ifdef CAN_ENABLE_KERN_FASYNC
@@ -369,9 +378,11 @@ int init_module(void)
                        this_dev=class_device_create(can_class, MKDEV(major, dev_minor), NULL,  "can%d", dev_minor);
                      #elif  LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,25) /* >= 2.6.15 */
                        this_dev=class_device_create(can_class, NULL, MKDEV(major, dev_minor), NULL,  "can%d", dev_minor);
-                     #else /* >= 2.6.26 */
+                     #elif  LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27)
                        this_dev=device_create_drvdata(can_class, NULL, MKDEV(major, dev_minor), objects_p[i],  "can%d", dev_minor);
-                     #endif /* >= 2.6.26 */
+                     #else /* >= 2.6.28 */
+                       this_dev=device_create(can_class, NULL, MKDEV(major, dev_minor), objects_p[i],  "can%d", dev_minor);
+                     #endif /* >= 2.6.28 */
                        if(IS_ERR(this_dev)){
                                CANMSG("problem to create device \"can%d\" in the class \"can\"\n", dev_minor);
                      #if  LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,25)