# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.616   -> 1.617  
#       drivers/usb/image/mdc800.c      1.18    -> 1.19   
#       drivers/usb/misc/rio500.c       1.11    -> 1.12   
#       drivers/usb/class/printer.c     1.27    -> 1.28   
#       drivers/usb/image/scanner.c     1.22    -> 1.23   
#       drivers/usb/misc/auerswald.c    1.14    -> 1.15   
#       drivers/usb/input/hiddev.c      1.13    -> 1.14   
#       drivers/usb/usb-skeleton.c      1.13    -> 1.14   
#       drivers/usb/misc/brlvger.c      1.3     -> 1.4    
#       drivers/usb/media/dabusb.c      1.19    -> 1.20   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/07/05      [EMAIL PROTECTED]  1.617
# USB: Fixups due to the changes in struct usb_device for file_operations and minor 
number handling
# --------------------------------------------
#
diff -Nru a/drivers/usb/class/printer.c b/drivers/usb/class/printer.c
--- a/drivers/usb/class/printer.c       Fri Jul  5 14:51:01 2002
+++ b/drivers/usb/class/printer.c       Fri Jul  5 14:51:01 2002
@@ -372,7 +372,7 @@
 {
        devfs_unregister (usblp->devfs);
        usblp_table [usblp->minor] = NULL;
-       usb_deregister_dev (&usblp_driver, 1, usblp->minor);
+       usb_deregister_dev (1, usblp->minor);
        info("usblp%d: removed", usblp->minor);
 
        kfree (usblp->writeurb->transfer_buffer);
@@ -812,20 +812,10 @@
        init_waitqueue_head(&usblp->wait);
        usblp->ifnum = ifnum;
 
-       retval = usb_register_dev(&usblp_driver, 1, &usblp->minor);
+       retval = usb_register_dev(&usblp_fops, USBLP_MINOR_BASE, 1, &usblp->minor);
        if (retval) {
-               if (retval != -ENODEV) {
-                       err("Not able to get a minor for this device.");
-                       goto abort;
-               }
-               /* Look for a free usblp_table entry on our own. */
-               while (usblp_table[usblp->minor]) {
-                       usblp->minor++;
-                       if (usblp->minor >= USBLP_MINORS) {
-                               err("no more free usblp devices");
-                               goto abort;
-                       }
-               }
+               err("Not able to get a minor for this device.");
+               goto abort;
        }
 
        usblp->writeurb = usb_alloc_urb(0, GFP_KERNEL);
@@ -901,7 +891,7 @@
        return usblp;
 
 abort_minor:
-       usb_deregister_dev (&usblp_driver, 1, usblp->minor);
+       usb_deregister_dev (1, usblp->minor);
 abort:
        if (usblp) {
                usb_free_urb(usblp->writeurb);
@@ -1111,9 +1101,6 @@
        name:           "usblp",
        probe:          usblp_probe,
        disconnect:     usblp_disconnect,
-       fops:           &usblp_fops,
-       minor:          USBLP_MINOR_BASE,
-       num_minors:     USBLP_MINORS,
        id_table:       usblp_ids,
 };
 
diff -Nru a/drivers/usb/image/mdc800.c b/drivers/usb/image/mdc800.c
--- a/drivers/usb/image/mdc800.c        Fri Jul  5 14:51:01 2002
+++ b/drivers/usb/image/mdc800.c        Fri Jul  5 14:51:01 2002
@@ -401,6 +401,7 @@
  ***************************************************************************/
 
 static struct usb_driver mdc800_usb_driver;
+static struct file_operations mdc800_device_ops;
 
 /*
  * Callback to search the Mustek MDC800 on the USB Bus
@@ -476,7 +477,7 @@
 
        down (&mdc800->io_lock);
 
-       retval = usb_register_dev (&mdc800_usb_driver, 1, &mdc800->minor);
+       retval = usb_register_dev (&mdc800_device_ops, MDC800_DEVICE_MINOR_BASE, 1, 
+&mdc800->minor);
        if (retval && (retval != -ENODEV)) {
                err ("Not able to get a minor for this device.");
                return 0;
@@ -537,7 +538,7 @@
        if (mdc800->state == NOT_CONNECTED)
                return;
        
-       usb_deregister_dev (&mdc800_usb_driver, 1, mdc800->minor);
+       usb_deregister_dev (1, mdc800->minor);
 
        mdc800->state=NOT_CONNECTED;
 
@@ -942,12 +943,10 @@
  */
 static struct usb_driver mdc800_usb_driver =
 {
+       owner:          THIS_MODULE,
        name:           "mdc800",
        probe:          mdc800_usb_probe,
        disconnect:     mdc800_usb_disconnect,
-       fops:           &mdc800_device_ops,
-       minor:          MDC800_DEVICE_MINOR_BASE,
-       num_minors:     1,
        id_table:       mdc800_table
 };
 
diff -Nru a/drivers/usb/image/scanner.c b/drivers/usb/image/scanner.c
--- a/drivers/usb/image/scanner.c       Fri Jul  5 14:51:01 2002
+++ b/drivers/usb/image/scanner.c       Fri Jul  5 14:51:01 2002
@@ -971,17 +971,11 @@
        
        down(&scn_mutex);
 
-       retval = usb_register_dev(&scanner_driver, 1, &scn_minor);
+       retval = usb_register_dev(&usb_scanner_fops, SCN_BASE_MNR, 1, &scn_minor);
        if (retval) {
-               if (retval != -ENODEV) {
-                       err ("Not able to get a minor for this device.");
-                       up(&scn_mutex);
-                       return NULL;
-               }
-               for (scn_minor = 0; scn_minor < SCN_MAX_MNR; scn_minor++) {
-                       if (!p_scn_table[scn_minor])
-                               break;
-               }
+               err ("Not able to get a minor for this device.");
+               up(&scn_mutex);
+               return NULL;
        }
 
 /* Check to make sure that the last slot isn't already taken */
@@ -1112,7 +1106,7 @@
 
        dbg("disconnect_scanner: De-allocating minor:%d", scn->scn_minor);
        devfs_unregister(scn->devfs);
-       usb_deregister_dev(&scanner_driver, 1, scn->scn_minor);
+       usb_deregister_dev(1, scn->scn_minor);
        p_scn_table[scn->scn_minor] = NULL;
        usb_free_urb(scn->scn_irq);
        up (&(scn->sem));
@@ -1125,9 +1119,6 @@
        name:           "usbscanner",
        probe:          probe_scanner,
        disconnect:     disconnect_scanner,
-       fops:           &usb_scanner_fops,
-       minor:          SCN_BASE_MNR,
-       num_minors:     SCN_MAX_MNR,
        id_table:       NULL, /* This would be scanner_device_ids, but we
                                 need to check every USB device, in case
                                 we match a user defined vendor/product ID. */
diff -Nru a/drivers/usb/input/hiddev.c b/drivers/usb/input/hiddev.c
--- a/drivers/usb/input/hiddev.c        Fri Jul  5 14:51:01 2002
+++ b/drivers/usb/input/hiddev.c        Fri Jul  5 14:51:01 2002
@@ -193,7 +193,7 @@
 static void hiddev_cleanup(struct hiddev *hiddev)
 {
        devfs_unregister(hiddev->devfs);
-       usb_deregister_dev(&hiddev_driver, 1, hiddev->minor);
+       usb_deregister_dev(1, hiddev->minor);
        hiddev_table[hiddev->minor] = NULL;
        kfree(hiddev);
 }
@@ -626,21 +626,16 @@
        if (i == hid->maxapplication)
                return -1;
 
-       retval = usb_register_dev (&hiddev_driver, 1, &minor);
+       retval = usb_register_dev (&hiddev_fops, HIDDEV_MINOR_BASE, 1, &minor);
        if (retval) {
-               if (retval != -ENODEV) {
-                       err ("Not able to get a minor for this device.");
-                       return -1;
-               }
-               for (minor = 0; minor < HIDDEV_MINORS && hiddev_table[minor]; minor++);
-               if (minor == HIDDEV_MINORS) {
-                       printk(KERN_ERR "hiddev: no more free hiddev devices\n");
-                       return -1;
-               }
+               err ("Not able to get a minor for this device.");
+               return -1;
        }
 
-       if (!(hiddev = kmalloc(sizeof(struct hiddev), GFP_KERNEL)))
+       if (!(hiddev = kmalloc(sizeof(struct hiddev), GFP_KERNEL))) {
+               usb_deregister_dev (1, minor);
                return -1;
+       }
        memset(hiddev, 0, sizeof(struct hiddev));
 
        init_waitqueue_head(&hiddev->wait);
@@ -708,9 +703,6 @@
 static /* const */ struct usb_driver hiddev_driver = {
        name:           "hiddev",
        probe:          hiddev_usbd_probe,
-       fops:           &hiddev_fops,
-       minor:          HIDDEV_MINOR_BASE,
-       num_minors:     HIDDEV_MINORS,
 };
 
 int __init hiddev_init(void)
diff -Nru a/drivers/usb/media/dabusb.c b/drivers/usb/media/dabusb.c
--- a/drivers/usb/media/dabusb.c        Fri Jul  5 14:51:01 2002
+++ b/drivers/usb/media/dabusb.c        Fri Jul  5 14:51:01 2002
@@ -742,14 +742,9 @@
        if (ifnum != _DABUSB_IF && usbdev->descriptor.idProduct == 0x9999)
                return NULL;
 
-       retval = usb_register_dev (&dabusb_driver, 1, &devnum);
-       if (retval) {
-               if (retval != -ENODEV)
-                       return NULL;
-               devnum = dabusb_find_struct ();
-               if (devnum == -1)
-                       return NULL;
-       }
+       retval = usb_register_dev (&dabusb_fops, DABUSB_MINOR, 1, &devnum);
+       if (retval)
+               return NULL;
 
        s = &dabusb[devnum];
 
@@ -791,7 +786,7 @@
 
        dbg("dabusb_disconnect");
 
-       usb_deregister_dev (&dabusb_driver, 1, s->devnum);
+       usb_deregister_dev (1, s->devnum);
        s->remove_pending = 1;
        wake_up (&s->wait);
        if (s->state == _started)
@@ -814,9 +809,6 @@
        name:           "dabusb",
        probe:          dabusb_probe,
        disconnect:     dabusb_disconnect,
-       fops:           &dabusb_fops,
-       minor:          DABUSB_MINOR,
-       num_minors:     NRDABUSB,
        id_table:       dabusb_ids,
 };
 
diff -Nru a/drivers/usb/misc/auerswald.c b/drivers/usb/misc/auerswald.c
--- a/drivers/usb/misc/auerswald.c      Fri Jul  5 14:51:01 2002
+++ b/drivers/usb/misc/auerswald.c      Fri Jul  5 14:51:01 2002
@@ -1948,23 +1948,11 @@
        init_waitqueue_head (&cp->bufferwait);
 
        down (&dev_table_mutex);
-       ret = usb_register_dev (&auerswald_driver, 1, &dtindex);
+       ret = usb_register_dev (&auerswald_fops, AUER_MINOR_BASE, 1, &dtindex);
        if (ret) {
-               if (ret != -ENODEV) {
-                       err ("Not able to get a minor for this device.");
-                       up (&dev_table_mutex);
-                       goto pfail;
-               }
-               /* find a free slot in the device table */
-               for (dtindex = 0; dtindex < AUER_MAX_DEVICES; ++dtindex) {
-                       if (dev_table[dtindex] == NULL)
-                               break;
-               }
-               if ( dtindex >= AUER_MAX_DEVICES) {
-                       err ("more than %d devices plugged in, can not handle this 
device", AUER_MAX_DEVICES);
-                       up (&dev_table_mutex);
-                       goto pfail;
-               }
+               err ("Not able to get a minor for this device.");
+               up (&dev_table_mutex);
+               goto pfail;
        }
 
        /* Give the device a name */
@@ -2096,7 +2084,7 @@
        devfs_unregister (cp->devfs);
 
        /* give back our USB minor number */
-       usb_deregister_dev (&auerswald_driver, 1, cp->dtindex);
+       usb_deregister_dev (1, cp->dtindex);
 
        /* Stop the interrupt endpoint */
        auerswald_int_release (cp);
@@ -2153,9 +2141,6 @@
        name:           "auerswald",
        probe:          auerswald_probe,
        disconnect:     auerswald_disconnect,
-       fops:           &auerswald_fops,
-       minor:          AUER_MINOR_BASE,
-       num_minors:     AUER_MAX_DEVICES,
        id_table:       auerswald_ids,
 };
 
diff -Nru a/drivers/usb/misc/brlvger.c b/drivers/usb/misc/brlvger.c
--- a/drivers/usb/misc/brlvger.c        Fri Jul  5 14:51:01 2002
+++ b/drivers/usb/misc/brlvger.c        Fri Jul  5 14:51:01 2002
@@ -246,9 +246,6 @@
        name:           "brlvger",
        probe:          brlvger_probe,
        disconnect:     brlvger_disconnect,
-       fops:           &brlvger_fops,
-       minor:          BRLVGER_MINOR,
-       num_minors:     MAX_NR_BRLVGER_DEVS,
        id_table:       brlvger_ids,
 };
 
@@ -316,21 +313,10 @@
 
        down(&reserve_sem);
 
-       retval = usb_register_dev(&brlvger_driver, 1, &i);
+       retval = usb_register_dev(&brlvger_fops, BRLVGER_MINOR, 1, &i);
        if (retval) {
-               if (retval != -ENODEV) {
-                       err("Not able to get a minor for this device.");
-                       goto error;
-               }
-               for( i = 0; i < MAX_NR_BRLVGER_DEVS; i++ )
-                       if( display_table[i] == NULL )
-                               break;
-
-               if( i == MAX_NR_BRLVGER_DEVS ) {
-                       err( "This driver cannot handle more than %d "
-                                       "braille displays", MAX_NR_BRLVGER_DEVS);
-                       goto error;
-               }
+               err("Not able to get a minor for this device.");
+               goto error;
        }
 
        if( !(priv = kmalloc (sizeof *priv, GFP_KERNEL)) ){
@@ -431,7 +417,7 @@
                info("Display %d disconnecting", priv->subminor);
 
                devfs_unregister(priv->devfs);
-               usb_deregister_dev(&brlvger_driver, 1, priv->subminor);
+               usb_deregister_dev(1, priv->subminor);
 
                down(&disconnect_sem);
                display_table[priv->subminor] = NULL;
diff -Nru a/drivers/usb/misc/rio500.c b/drivers/usb/misc/rio500.c
--- a/drivers/usb/misc/rio500.c Fri Jul  5 14:51:01 2002
+++ b/drivers/usb/misc/rio500.c Fri Jul  5 14:51:01 2002
@@ -49,7 +49,11 @@
 #define DRIVER_AUTHOR "Cesar Miquel <[EMAIL PROTECTED]>"
 #define DRIVER_DESC "USB Rio 500 driver"
 
-#define RIO_MINOR   64
+#ifdef CONFIG_USB_DYNAMIC_MINORS
+       #define RIO_MINOR       0
+#else
+       #define RIO_MINOR       64
+#endif
 
 /* stall/wait timeout for rio */
 #define NAK_TIMEOUT (HZ)
@@ -65,6 +69,7 @@
         unsigned int ifnum;             /* Interface number of the USB device */
         int isopen;                     /* nz if open */
         int present;                    /* Device is present on the bus */
+       int minor;                      /* minor number assigned to us */
         char *obuf, *ibuf;              /* transfer buffers */
         char bulk_in_ep, bulk_out_ep;   /* Endpoint assignments */
         wait_queue_head_t wait_q;       /* for timeouts */
@@ -449,9 +454,16 @@
                       const struct usb_device_id *id)
 {
        struct rio_usb_data *rio = &rio_instance;
+       int retval;
 
        info("USB Rio found at address %d", dev->devnum);
 
+       retval = usb_register_dev(&usb_rio_fops, RIO_MINOR, 1, &rio->minor);
+       if (retval) {
+               err("Not able to get a minor for this device.");
+               return NULL;
+       }
+
        rio->present = 1;
        rio->rio_dev = dev;
 
@@ -486,6 +498,7 @@
        struct rio_usb_data *rio = (struct rio_usb_data *) ptr;
 
        devfs_unregister(rio->devfs);
+       usb_deregister_dev(1, rio->minor);
 
        down(&(rio->lock));
        if (rio->isopen) {
@@ -515,9 +528,6 @@
        name:           "rio500",
        probe:          probe_rio,
        disconnect:     disconnect_rio,
-       fops:           &usb_rio_fops,
-       minor:          RIO_MINOR,
-       num_minors:     1,
        id_table:       rio_table,
 };
 
diff -Nru a/drivers/usb/usb-skeleton.c b/drivers/usb/usb-skeleton.c
--- a/drivers/usb/usb-skeleton.c        Fri Jul  5 14:51:01 2002
+++ b/drivers/usb/usb-skeleton.c        Fri Jul  5 14:51:01 2002
@@ -189,9 +189,6 @@
        name:           "skeleton",
        probe:          skel_probe,
        disconnect:     skel_disconnect,
-       fops:           &skel_fops,
-       minor:          USB_SKEL_MINOR_BASE,
-       num_minors:     MAX_DEVICES,
        id_table:       skel_table,
 };
 
@@ -532,29 +529,18 @@
        }
 
        down (&minor_table_mutex);
-       retval = usb_register_dev (&skel_driver, 1, &minor);
+       retval = usb_register_dev (&skel_fops, USB_SKEL_MINOR_BASE, 1, &minor);
        if (retval) {
-               if (retval != -ENODEV) {
-                       /* something prevented us from registering this driver */
-                       err ("Not able to get a minor for this device.");
-                       goto exit;
-               }
-               /* we could not get a dynamic minor, so lets find one of our own */
-               for (minor = 0; minor < MAX_DEVICES; ++minor) {
-                       if (minor_table[minor] == NULL)
-                               break;
-               }
-               if (minor >= MAX_DEVICES) {
-                       err ("Too many devices plugged in, can not handle this 
device.");
-                       goto exit;
-               }
+               /* something prevented us from registering this driver */
+               err ("Not able to get a minor for this device.");
+               goto exit;
        }
 
        /* allocate memory for our device state and intialize it */
        dev = kmalloc (sizeof(struct usb_skel), GFP_KERNEL);
        if (dev == NULL) {
                err ("Out of memory");
-               goto exit;
+               goto exit_minor;
        }
        memset (dev, 0x00, sizeof (*dev));
        minor_table[minor] = dev;
@@ -628,6 +614,9 @@
        skel_delete (dev);
        dev = NULL;
 
+exit_minor:
+       usb_deregister_dev (1, minor);
+
 exit:
        up (&minor_table_mutex);
        return dev;
@@ -655,7 +644,7 @@
        devfs_unregister (dev->devfs);
 
        /* give back our dynamic minor */
-       usb_deregister_dev (&skel_driver, 1, minor);
+       usb_deregister_dev (1, minor);
        
        /* if the device is not opened, then we clean up right now */
        if (!dev->open_count) {


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Bringing you mounds of caffeinated joy.
http://thinkgeek.com/sf
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to