Hi,

Here's a patch against 2.5.1-pre5 from David Nelson and Frank Zago that
fixes the locking code in the USB scanner driver, and updates the device
lists for the driver.

thanks,

greg k-h




diff -Nru a/Documentation/usb/scanner.txt b/Documentation/usb/scanner.txt
--- a/Documentation/usb/scanner.txt     Mon Dec  3 13:06:56 2001
+++ b/Documentation/usb/scanner.txt     Mon Dec  3 13:06:56 2001
@@ -83,7 +83,7 @@
        `mknod /dev/usbscanner1 c 180 49`
                       . 
                       .
-       `mknod /dev/usbscanner15 180 63`
+       `mknod /dev/usbscanner15 c 180 63`
 
 
 If you foresee using only one scanner it is best to:
diff -Nru a/drivers/usb/scanner.c b/drivers/usb/scanner.c
--- a/drivers/usb/scanner.c     Mon Dec  3 13:06:56 2001
+++ b/drivers/usb/scanner.c     Mon Dec  3 13:06:56 2001
@@ -278,6 +278,28 @@
  *    - Users are now notified to consult the Documentation/usb/scanner.txt
  *      for common error messages rather than the maintainer.
  *
+ * 0.4.7  11/28/2001
+ *    - Fixed typo in Documentation/scanner.txt.  Thanks to
+ *      Karel <[EMAIL PROTECTED]> for pointing it out.
+ *    - Added ID's for a Memorex 6136u. Thanks to Álvaro Gaspar de
+ *      Valenzuela" <[EMAIL PROTECTED]>.
+ *    - Added ID's for Agfa e25.  Thanks to Heinrich 
+ *      Rust <[EMAIL PROTECTED]>.  Also reported to work with
+ *      Linux and SANE (?).
+ *    - Added Canon FB620U, D646U, and 1220U ID's.  Thanks to Paul
+ *      Rensing <[EMAIL PROTECTED]>.  For more info
+ *      on Linux support for these models, contact 
+ *      [EMAIL PROTECTED]
+ *    - Added Plustek OpticPro UT12, OpticPro U24, KYE/Genius
+ *      ColorPage-HR6 V2 ID's in addition to many "Unknown" models
+ *      under those vendors.  Thanks to
+ *      Jaeger, Gerhard" <[EMAIL PROTECTED]>.  These scanner are
+ *      apparently based upon the LM983x IC's.
+ *    - Applied Frank's patch that addressed some locking and module
+ *      referencing counts.  Thanks to both
+ *      Frank Zago <[EMAIL PROTECTED]> and
+ *      Oliver Neukum <[EMAIL PROTECTED]> for reviewing/testing.
+ *
  * TODO
  *    - Performance
  *    - Select/poll methods
@@ -324,17 +346,16 @@
        struct scn_usb_data *scn;
        unsigned char *data;
        scn = urb->context;
-       down(&(scn->sem));
+
        data = &scn->button;
        data += 0;              /* Keep gcc from complaining about unused var */
 
        if (urb->status) {
-               up(&(scn->sem));
                return;
        }
 
        dbg("irq_scanner(%d): data:%x", scn->scn_minor, *data);
-       up(&(scn->sem));
+
        return;
 }
 
@@ -358,6 +379,7 @@
 
        if (!p_scn_table[scn_minor]) {
                up(&scn_mutex);
+               MOD_DEC_USE_COUNT;
                err("open_scanner(%d): Unable to access minor data", scn_minor);
                return -ENODEV;
        }
@@ -939,6 +961,7 @@
 /* Check to make sure that the last slot isn't already taken */
        if (p_scn_table[scn_minor]) {
                err("probe_scanner: No more minor devices remaining.");
+               up(&scn_mutex);
                return NULL;
        }
 
@@ -946,6 +969,7 @@
 
        if (!(scn = kmalloc (sizeof (struct scn_usb_data), GFP_KERNEL))) {
                err("probe_scanner: Out of memory.");
+               up(&scn_mutex);
                return NULL;
        }
        memset (scn, 0, sizeof(struct scn_usb_data));
@@ -1028,9 +1052,11 @@
        if (scn->devfs == NULL)
                dbg("scanner%d: device node registration failed", scn_minor);
 
+       p_scn_table[scn_minor] = scn;
+
        up(&scn_mutex);
 
-       return p_scn_table[scn_minor] = scn;
+       return scn;
 }
 
 static void
diff -Nru a/drivers/usb/scanner.h b/drivers/usb/scanner.h
--- a/drivers/usb/scanner.h     Mon Dec  3 13:06:56 2001
+++ b/drivers/usb/scanner.h     Mon Dec  3 13:06:56 2001
@@ -86,12 +86,23 @@
        { USB_DEVICE(0x06bd, 0x2061) }, /* Another SnapScan 1212U (?)*/
        { USB_DEVICE(0x06bd, 0x0100) }, /* SnapScan Touch */
        { USB_DEVICE(0x06bd, 0x2091) }, /* SnapScan e20 */
+       { USB_DEVICE(0x06bd, 0x2095) }, /* SnapScan e25 */
        { USB_DEVICE(0x06bd, 0x2097) }, /* SnapScan e26 */
        { USB_DEVICE(0x06bd, 0x208d) }, /* Snapscan e40 */
+       /* Canon */
+       { USB_DEVICE(0x04a9, 0x2202) }, /* FB620U */
+       { USB_DEVICE(0x04a9, 0x220b) }, /* D646U */
+       { USB_DEVICE(0x04a9, 0x2207) }, /* 1220U */
        /* Colorado -- See Primax/Colorado below */
        /* Epson -- See Seiko/Epson below */
        /* Genius */
        { USB_DEVICE(0x0458, 0x2001) }, /* ColorPage-Vivid Pro */
+       { USB_DEVICE(0x0458, 0x2007) }, /* ColorPage HR6 V2 */
+       { USB_DEVICE(0x0458, 0x2008) }, /* Unknown */
+       { USB_DEVICE(0x0458, 0x2009) }, /* Unknown */
+       { USB_DEVICE(0x0458, 0x2013) }, /* Unknown */
+       { USB_DEVICE(0x0458, 0x2015) }, /* Unknown  */
+       { USB_DEVICE(0x0458, 0x2016) }, /* Unknown  */
        /* Hewlett Packard */
        { USB_DEVICE(0x03f0, 0x0205) }, /* 3300C */
        { USB_DEVICE(0x03f0, 0x0405) }, /* 3400C */
@@ -108,6 +119,8 @@
        { USB_DEVICE(0x0638, 0x0268) }, /* 1200U */
        /* Lifetec */
        { USB_DEVICE(0x05d8, 0x4002) }, /* Lifetec LT9385 */
+       /* Memorex */
+       { USB_DEVICE(0x0461, 0x0346) }, /* 6136u - repackaged Primax ? */
        /* Microtek -- No longer supported - Enable SCSI and USB Microtek in kernel 
config */
        //      { USB_DEVICE(0x05da, 0x0099) }, /* ScanMaker X6 - X6U */
        //      { USB_DEVICE(0x05da, 0x0094) }, /* Phantom 336CX - C3 */
@@ -128,6 +141,19 @@
        { USB_DEVICE(0x0400, 0x1001) }, /* BearPaw 2400 */
        { USB_DEVICE(0x055f, 0x0008) }, /* 1200 CU Plus */
        { USB_DEVICE(0x0ff5, 0x0010) }, /* BearPaw 1200F */
+       /* Plustek */
+       { USB_DEVICE(0x07b3, 0x0017) }, /* OpticPro UT12 */
+       { USB_DEVICE(0x07b3, 0x0011) }, /* OpticPro UT24 */
+       { USB_DEVICE(0x07b3, 0x0005) }, /* Unknown */
+       { USB_DEVICE(0x07b3, 0x0007) }, /* Unknown */
+       { USB_DEVICE(0x07b3, 0x000F) }, /* Unknown */
+       { USB_DEVICE(0x07b3, 0x0010) }, /* Unknown */
+       { USB_DEVICE(0x07b3, 0x0012) }, /* Unknown */
+       { USB_DEVICE(0x07b3, 0x0013) }, /* Unknown */
+       { USB_DEVICE(0x07b3, 0x0014) }, /* Unknown */
+       { USB_DEVICE(0x07b3, 0x0015) }, /* Unknown */
+       { USB_DEVICE(0x07b3, 0x0016) }, /* Unknown */
+       { USB_DEVICE(0x07b3, 0x0012) }, /* Unknown */
        /* Primax/Colorado */
        { USB_DEVICE(0x0461, 0x0300) }, /* G2-300 #1 */
        { USB_DEVICE(0x0461, 0x0380) }, /* G2-600 #1 */

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to