Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6

* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6:
USB: new Novatel device ids for option driver
USB: berry_charge: correct dbg string for second magic command
usblp: quirk flag and device entry for Seiko Epson M129C printer
airprime: USB ID for Novatel EV620 mini PCI-E card
USB: necessary update for mos7720 driver
USB: RAZR v3i unusual_devs
USB: two more device ids for dm9601 usbnet driver
USB: fix usb-serial regression

+43 -14
+5 -1
drivers/usb/class/usblp.c
··· 202 202 203 203 #define USBLP_QUIRK_BIDIR 0x1 /* reports bidir but requires unidirectional mode (no INs/reads) */ 204 204 #define USBLP_QUIRK_USB_INIT 0x2 /* needs vendor USB init string */ 205 + #define USBLP_QUIRK_BAD_CLASS 0x4 /* descriptor uses vendor-specific Class or SubClass */ 205 206 206 207 static const struct quirk_printer_struct quirk_printers[] = { 207 208 { 0x03f0, 0x0004, USBLP_QUIRK_BIDIR }, /* HP DeskJet 895C */ ··· 219 218 { 0x0409, 0xf0be, USBLP_QUIRK_BIDIR }, /* NEC Picty920 (HP OEM) */ 220 219 { 0x0409, 0xf1be, USBLP_QUIRK_BIDIR }, /* NEC Picty800 (HP OEM) */ 221 220 { 0x0482, 0x0010, USBLP_QUIRK_BIDIR }, /* Kyocera Mita FS 820, by zut <kernel@zut.de> */ 221 + { 0x04b8, 0x0202, USBLP_QUIRK_BAD_CLASS }, /* Seiko Epson Receipt Printer M129C */ 222 222 { 0, 0 } 223 223 }; 224 224 ··· 1050 1048 ifd = &if_alt->altsetting[i]; 1051 1049 1052 1050 if (ifd->desc.bInterfaceClass != 7 || ifd->desc.bInterfaceSubClass != 1) 1053 - continue; 1051 + if (!(usblp->quirks & USBLP_QUIRK_BAD_CLASS)) 1052 + continue; 1054 1053 1055 1054 if (ifd->desc.bInterfaceProtocol < USBLP_FIRST_PROTOCOL || 1056 1055 ifd->desc.bInterfaceProtocol > USBLP_LAST_PROTOCOL) ··· 1235 1232 { USB_INTERFACE_INFO(7, 1, 1) }, 1236 1233 { USB_INTERFACE_INFO(7, 1, 2) }, 1237 1234 { USB_INTERFACE_INFO(7, 1, 3) }, 1235 + { USB_DEVICE(0x04b8, 0x0202) }, /* Seiko Epson Receipt Printer M129C */ 1238 1236 { } /* Terminating entry */ 1239 1237 }; 1240 1238
+1 -1
drivers/usb/misc/berry_charge.c
··· 69 69 return retval; 70 70 } 71 71 72 - dbg(&udev->dev, "Sending first magic command\n"); 72 + dbg(&udev->dev, "Sending second magic command\n"); 73 73 retval = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), 74 74 0xa2, 0x40, 0, 1, dummy_buffer, 0, 100); 75 75 if (retval != 0) {
+8
drivers/usb/net/dm9601.c
··· 578 578 USB_DEVICE(0x0a46, 0x9601), /* Davicom USB-100 */ 579 579 .driver_info = (unsigned long)&dm9601_info, 580 580 }, 581 + { 582 + USB_DEVICE(0x0a46, 0x6688), /* ZT6688 USB NIC */ 583 + .driver_info = (unsigned long)&dm9601_info, 584 + }, 585 + { 586 + USB_DEVICE(0x0a46, 0x0268), /* ShanTou ST268 USB NIC */ 587 + .driver_info = (unsigned long)&dm9601_info, 588 + }, 581 589 {}, // END 582 590 }; 583 591
-4
drivers/usb/serial/airprime.c
··· 18 18 19 19 static struct usb_device_id id_table [] = { 20 20 { USB_DEVICE(0x0c88, 0x17da) }, /* Kyocera Wireless KPC650/Passport */ 21 - { USB_DEVICE(0x1410, 0x1110) }, /* Novatel Wireless Merlin CDMA */ 22 - { USB_DEVICE(0x1410, 0x1130) }, /* Novatel Wireless S720 CDMA/EV-DO */ 23 - { USB_DEVICE(0x1410, 0x2110) }, /* Novatel Wireless U720 CDMA/EV-DO */ 24 - { USB_DEVICE(0x1410, 0x1430) }, /* Novatel Merlin XU870 HSDPA/3G */ 25 21 { USB_DEVICE(0x1410, 0x1100) }, /* ExpressCard34 Qualcomm 3G CDMA */ 26 22 { USB_DEVICE(0x413c, 0x8115) }, /* Dell Wireless HSDPA 5500 */ 27 23 { },
+1
drivers/usb/serial/mos7720.c
··· 1628 1628 .chars_in_buffer = mos7720_chars_in_buffer, 1629 1629 .break_ctl = mos7720_break, 1630 1630 .read_bulk_callback = mos7720_bulk_in_callback, 1631 + .read_int_callback = mos7720_interrupt_callback, 1631 1632 }; 1632 1633 1633 1634 static int __init moschip7720_init(void)
+13 -2
drivers/usb/serial/option.c
··· 109 109 #define HUAWEI_PRODUCT_E220 0x1003 110 110 111 111 #define NOVATELWIRELESS_VENDOR_ID 0x1410 112 - #define NOVATELWIRELESS_PRODUCT_U740 0x1400 113 112 114 113 #define ANYDATA_VENDOR_ID 0x16d5 115 114 #define ANYDATA_PRODUCT_ID 0x6501 ··· 151 152 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_KOI_NETWORK) }, 152 153 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) }, 153 154 { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220) }, 154 - { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID,NOVATELWIRELESS_PRODUCT_U740) }, 155 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x1100) }, /* Novatel Merlin XS620/S640 */ 156 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x1110) }, /* Novatel Merlin S620 */ 157 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x1120) }, /* Novatel Merlin EX720 */ 158 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x1130) }, /* Novatel Merlin S720 */ 159 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x1400) }, /* Novatel U730 */ 160 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x1410) }, /* Novatel U740 */ 161 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x1420) }, /* Novatel EU870 */ 162 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x1430) }, /* Novatel Merlin XU870 HSDPA/3G */ 163 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x1430) }, /* Novatel XU870 */ 164 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2100) }, /* Novatel EV620 CDMA/EV-DO */ 165 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2110) }, /* Novatel Merlin ES620 / Merlin ES720 / Ovation U720 */ 166 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2130) }, /* Novatel Merlin ES620 SM Bus */ 167 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2410) }, /* Novatel EU740 */ 155 168 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ID) }, 156 169 { } /* Terminating entry */ 157 170 };
+5 -6
drivers/usb/serial/usb-serial.c
··· 138 138 139 139 dbg("%s - %s", __FUNCTION__, serial->type->description); 140 140 141 + serial->type->shutdown(serial); 142 + 143 + /* return the minor range that this device had */ 144 + return_serial(serial); 145 + 141 146 for (i = 0; i < serial->num_ports; ++i) 142 147 serial->port[i]->open_count = 0; 143 148 ··· 152 147 device_unregister(&serial->port[i]->dev); 153 148 serial->port[i] = NULL; 154 149 } 155 - 156 - if (serial->type->shutdown) 157 - serial->type->shutdown(serial); 158 - 159 - /* return the minor range that this device had */ 160 - return_serial(serial); 161 150 162 151 /* If this is a "fake" port, we have to clean it up here, as it will 163 152 * not get cleaned up in port_release() as it was never registered with
+10
drivers/usb/storage/unusual_devs.h
··· 1411 1411 US_SC_DEVICE, US_PR_DEVICE, NULL, 1412 1412 US_FL_FIX_CAPACITY | US_FL_IGNORE_RESIDUE ), 1413 1413 1414 + /* 1415 + * Patch by Pete Zaitcev <zaitcev@redhat.com> 1416 + * Report by Mark Patton. Red Hat bz#208928. 1417 + */ 1418 + UNUSUAL_DEV( 0x22b8, 0x4810, 0x0001, 0x0001, 1419 + "Motorola", 1420 + "RAZR V3i", 1421 + US_SC_DEVICE, US_PR_DEVICE, NULL, 1422 + US_FL_FIX_CAPACITY), 1423 + 1414 1424 /* Reported by Radovan Garabik <garabik@kassiopeia.juls.savba.sk> */ 1415 1425 UNUSUAL_DEV( 0x2735, 0x100b, 0x0000, 0x9999, 1416 1426 "MPIO",