Updated for 2.6.27
authorMichael Brown <mcb30@etherboot.org>
Mon, 13 Apr 2009 15:15:20 +0000 (16:15 +0100)
committerMichael Brown <mcb30@etherboot.org>
Mon, 13 Apr 2009 15:15:20 +0000 (16:15 +0100)
kernel/Makefile
kernel/kernel24-patches [deleted file]
kernel/kernel_compat.h [deleted file]
kernel/quickusb.c

index 32f9907..bdd6573 100644 (file)
@@ -12,7 +12,7 @@ KVERPARTS = $(subst ., ,$(KVER))
 KVERMAJOR = $(word 1,$(KVERPARTS))_$(word 2,$(KVERPARTS))
 
 # Compiler flags
-EXTRA_CFLAGS += -Wall -I${PWD} -I$(KSRCDIR)/drivers/usb/serial
+EXTRA_CFLAGS += -Wall -I${PWD}
 
 # For 2.6 kernel modules
 ifeq ($(KVERMAJOR),2_6)
diff --git a/kernel/kernel24-patches b/kernel/kernel24-patches
deleted file mode 100644 (file)
index 41ffeed..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-Index: quickusb.c
-===================================================================
-RCS file: /vault/cvs/mutations/quickusb/kernel/quickusb.c,v
-retrieving revision 1.18
-diff -u -r1.18 quickusb.c
---- quickusb.c 11 Jun 2006 21:26:39 -0000      1.18
-+++ quickusb.c 11 Jun 2006 21:30:16 -0000
-@@ -509,8 +509,16 @@
-  *
-  */
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
- static int quickusb_probe ( struct usb_interface *interface,
-                           const struct usb_device_id *id ) {
-+      struct usb_device *usb = interface_to_usbdev ( interface );
-+#else
-+static void * quickusb_probe ( struct usb_device *usb,
-+                             unsigned int intf,
-+                             const struct usb_device_id *id ) {
-+      struct usb_interface *interface = usb_ifnum_to_if ( usb, intf );
-+#endif
-       struct quickusb_device *quickusb = NULL;
-       struct quickusb_device *pre_existing_quickusb;
-       unsigned int board = 0;
-@@ -528,7 +536,7 @@
-       memset ( quickusb, 0, sizeof ( *quickusb ) );
-       kref_init ( &quickusb->kref );
-       INIT_LIST_HEAD ( &quickusb_list );
--      quickusb->usb = usb_get_dev ( interface_to_usbdev ( interface ) );
-+      quickusb->usb = usb_get_dev ( usb );
-       quickusb->interface = interface;
-       for ( i = 0 ; i < QUICKUSB_MAX_GPPIO ; i++ ) {
-               quickusb->gppio[i].quickusb = quickusb;
-@@ -579,11 +587,21 @@
-       }
-  out:
-       up ( &quickusb_lock );
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
-       return rc;
-+#else
-+      return ( ( rc == 0 ) ? quickusb : ERR_PTR ( rc ) );
-+#endif
- }
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
- static void quickusb_disconnect ( struct usb_interface *interface ) {
-       struct quickusb_device *quickusb = usb_get_intfdata ( interface );
-+#else
-+static void quickusb_disconnect ( struct usb_device *usb,
-+                                void *intf_data ) {
-+      struct quickusb_device *quickusb = intf_data;
-+#endif
-       printk ( KERN_INFO "quickusb%d disconnected\n", quickusb->board );
diff --git a/kernel/kernel_compat.h b/kernel/kernel_compat.h
deleted file mode 100644 (file)
index c166678..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-#ifndef QUICKUSB_KERNEL_COMPAT_H
-#define QUICKUSB_KERNEL_COMPAT_H
-
-#include <linux/version.h>
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-
-#include <asm/atomic.h>
-#include <linux/slab.h>
-#include <linux/usb.h>
-
-#define __user
-
-struct device;
-
-struct kref {
-       atomic_t refcount;
-};
-
-static inline void kref_init ( struct kref *kref ) {
-       atomic_set ( &kref->refcount, 1 );
-}
-
-static inline void kref_get ( struct kref *kref ) {
-       atomic_inc ( &kref->refcount );
-}
-
-static inline void kref_put ( struct kref *kref,
-                             void (*release) ( struct kref *kref ) ) {
-       if ( atomic_dec_and_test ( &kref->refcount ) )
-               release ( kref );
-}
-
-#define container_of(ptr, type, member) ( {                    \
-       const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
-       (type *)( (char *)__mptr - offsetof(type,member) ); } )
-
-static inline struct usb_device *usb_get_dev ( struct usb_device *usb ) {
-       usb_inc_dev_use ( usb );
-       return usb;
-}
-
-static inline void usb_put_dev ( struct usb_device *usb ) {
-       usb_free_dev ( usb );
-}
-
-static inline unsigned iminor ( struct inode *inode ) {
-       return MINOR ( inode->i_rdev );
-}
-
-static inline struct class_simple *class_simple_create ( struct module *owner,
-                                                        const char *name ) {
-       return NULL;
-}
-
-static inline void class_simple_destroy ( struct class_simple *class ) {
-       /* Do nothing */
-}
-
-#define class_simple_device_add(...) NULL
-
-static inline void class_simple_device_remove ( dev_t dev ) {
-       /* Do nothing */
-}
-
-static struct file_operations quickusb_fops;
-
-static inline int devfs_mk_cdev ( dev_t dev, umode_t mode,
-                                 const char *name ) {
-       devfs_handle_t devfs_handle;
-
-       devfs_handle = devfs_register ( NULL, name, DEVFS_FL_DEFAULT,
-                                       MAJOR ( dev ), MINOR ( dev ),
-                                       mode, &quickusb_fops, NULL );
-       return ( devfs_handle == NULL ) ? -EIO : 0;
-}
-
-static inline void devfs_remove ( const char *name ) {
-       devfs_handle_t devfs_handle;
-
-       devfs_handle = devfs_get_handle ( NULL, name, 0, 0,
-                                         DEVFS_SPECIAL_CHR, 0 );
-       if ( ! devfs_handle ) {
-               printk ( "Aargh: can't find %s to unregister it\n",
-                        name );
-               return;
-       }
-
-       devfs_unregister ( devfs_handle );
-}
-
-#define module_param( name, type, perm ) MODULE_PARM ( name, "i" )
-
-#define usb_set_intfdata(...) do { } while ( 0 )
-
-#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) */
-
-#endif /* QUICKUSB_KERNEL_COMPAT_H */
-
-/*
- * Local variables:
- *  c-basic-offset: 8
- *  c-indent-level: 8
- *  tab-width: 8
- * End:
- */
index 76c1da5..b5da10f 100644 (file)
 
 #include <linux/module.h>
 #include <linux/fs.h>
-#include <linux/devfs_fs_kernel.h>
 #include <linux/usb.h>
 #include <linux/tty.h>
-#include <asm/uaccess.h>
-#include "usb-serial.h"
+#include <linux/usb/serial.h>
+#include <linux/uaccess.h>
 #include "quickusb.h"
-#include "kernel_compat.h"
 
 #define QUICKUSB_VENDOR_ID 0x0fbb
 #define QUICKUSB_DEVICE_ID 0x0001
@@ -48,7 +46,7 @@ struct quickusb_subdev {
        void *private_data;
        dev_t dev;
        unsigned char name[32];
-       struct class_device *class_dev;
+       struct device *class_dev;
 };
 
 struct quickusb_device {
@@ -393,7 +391,8 @@ static struct file_operations quickusb_hspio_data_fops = {
  *
  */
 
-static int quickusb_ttyusb_open ( struct usb_serial_port *port,
+static int quickusb_ttyusb_open ( struct tty_struct *tty,
+                                 struct usb_serial_port *port,
                                  struct file *file ) {
        struct quickusb_device *quickusb
                = usb_get_intfdata ( port->serial->interface );
@@ -403,7 +402,7 @@ static int quickusb_ttyusb_open ( struct usb_serial_port *port,
                                            QUICKUSB_HSPPMODE_SLAVE ) ) != 0 )
                return rc;
 
-       if ( ( rc = usb_serial_generic_open ( port, file ) ) != 0 )
+       if ( ( rc = usb_serial_generic_open ( tty, port, file ) ) != 0 )
                return rc;
 
        return 0;
@@ -416,9 +415,6 @@ static struct usb_serial_driver quickusb_serial = {
        },
        .open           = quickusb_ttyusb_open,
        .id_table       = quickusb_ids,
-       .num_interrupt_in = NUM_DONT_CARE,
-       .num_bulk_in    = NUM_DONT_CARE,
-       .num_bulk_out   = NUM_DONT_CARE,
        .num_ports      = 1,
 };
 
@@ -504,17 +500,9 @@ static int quickusb_register_subdev ( struct quickusb_device *quickusb,
        vsnprintf ( subdev->name, sizeof ( subdev->name ), subdev_fmt, ap );
        va_end ( ap );
 
-       /* Create devfs device */
-       if ( ( rc = devfs_mk_cdev ( subdev->dev,
-                                   ( S_IFCHR | S_IRUSR | S_IWUSR |
-                                     S_IRGRP | S_IWGRP ),
-                                   subdev->name ) ) != 0 )
-               goto err_devfs;
-
        /* Create class device */
-       subdev->class_dev = class_device_create ( quickusb_class, NULL,
-                                                 subdev->dev, &interface->dev,
-                                                 subdev->name );
+       subdev->class_dev = device_create ( quickusb_class, NULL, subdev->dev,
+                                           &interface->dev, subdev->name );
        if ( IS_ERR ( subdev->class_dev ) ) {
                rc = PTR_ERR ( subdev->class_dev );
                goto err_class;
@@ -523,8 +511,6 @@ static int quickusb_register_subdev ( struct quickusb_device *quickusb,
        return 0;
 
  err_class:
-       devfs_remove ( subdev->name );
- err_devfs:
        memset ( subdev, 0, sizeof ( *subdev ) );
        return rc;
 }
@@ -537,10 +523,7 @@ static void quickusb_deregister_subdev ( struct quickusb_device *quickusb,
                return;
 
        /* Remove class device */
-       class_device_destroy ( quickusb_class, subdev->dev );
-
-       /* Remove devfs device */
-       devfs_remove ( subdev->name );
+       device_destroy ( quickusb_class, subdev->dev );
 
        /* Clear subdev structure */
        memset ( subdev, 0, sizeof ( *subdev ) );
@@ -702,10 +685,6 @@ static struct usb_device_id quickusb_ids[] = {
 };
 
 static struct usb_driver quickusb_driver = {
-       .driver = {
-               .owner  = THIS_MODULE,
-               .name   = "quickusb",
-       },
        .name           = "quickusb",
        .probe          = quickusb_probe,
        .disconnect     = quickusb_disconnect,