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: use MII hooks only if CONFIG_MII is enabled
USB Storage: unusual_devs.h entry for Sony Ericsson P990i
USB: xpad: additional USB id's added
USB: fix compiler issues with newer gcc versions
USB: HID: add blacklist AIRcable USB, little beautification
USB: usblp: fix system suspend for some systems
USB: failure in usblp's error path
usbtouchscreen: use endpoint address from endpoint descriptor
USB: sierra: Fix id for Sierra Wireless MC8755 in new table
USB: new VID/PID-combos for cp2101
hid-core: big-endian fix fix
USB: usb-storage: Unusual_dev update
USB: add another sierra wireless device id

+144 -59
-6
Documentation/usb/usb-serial.txt
··· 428 See http://www.uuhaus.de/linux/palmconnect.html for up-to-date 429 information on this driver. 430 431 - AIRcable USB Dongle Bluetooth driver 432 - If there is the cdc_acm driver loaded in the system, you will find that the 433 - cdc_acm claims the device before AIRcable can. This is simply corrected 434 - by unloading both modules and then loading the aircable module before 435 - cdc_acm module 436 - 437 Generic Serial driver 438 439 If your device is not one of the above listed devices, compatible with
··· 428 See http://www.uuhaus.de/linux/palmconnect.html for up-to-date 429 information on this driver. 430 431 Generic Serial driver 432 433 If your device is not one of the above listed devices, compatible with
+1 -2
drivers/usb/class/usblp.c
··· 722 usblp->wcomplete = 0; 723 err = usb_submit_urb(usblp->writeurb, GFP_KERNEL); 724 if (err) { 725 if (err != -ENOMEM) 726 count = -EIO; 727 else ··· 1203 down (&usblp->sem); 1204 /* we take no more IO */ 1205 usblp->sleeping = 1; 1206 - /* we wait for anything printing */ 1207 - wait_event (usblp->wait, usblp->wcomplete || !usblp->present); 1208 usblp_unlink_urbs(usblp); 1209 up (&usblp->sem); 1210 mutex_unlock (&usblp_mutex);
··· 722 usblp->wcomplete = 0; 723 err = usb_submit_urb(usblp->writeurb, GFP_KERNEL); 724 if (err) { 725 + usblp->wcomplete = 1; 726 if (err != -ENOMEM) 727 count = -EIO; 728 else ··· 1202 down (&usblp->sem); 1203 /* we take no more IO */ 1204 usblp->sleeping = 1; 1205 usblp_unlink_urbs(usblp); 1206 up (&usblp->sem); 1207 mutex_unlock (&usblp_mutex);
+1 -2
drivers/usb/core/hub.c
··· 1188 1189 #ifdef CONFIG_USB_OTG 1190 #include "otg_whitelist.h" 1191 #endif 1192 1193 /** ··· 1290 * (Includes HNP test device.) 1291 */ 1292 if (udev->bus->b_hnp_enable || udev->bus->is_b_host) { 1293 - static int __usb_port_suspend(struct usb_device *, 1294 - int port1); 1295 err = __usb_port_suspend(udev, udev->bus->otg_port); 1296 if (err < 0) 1297 dev_dbg(&udev->dev, "HNP fail, %d\n", err);
··· 1188 1189 #ifdef CONFIG_USB_OTG 1190 #include "otg_whitelist.h" 1191 + static int __usb_port_suspend(struct usb_device *, int port1); 1192 #endif 1193 1194 /** ··· 1289 * (Includes HNP test device.) 1290 */ 1291 if (udev->bus->b_hnp_enable || udev->bus->is_b_host) { 1292 err = __usb_port_suspend(udev, udev->bus->otg_port); 1293 if (err < 0) 1294 dev_dbg(&udev->dev, "HNP fail, %d\n", err);
+46 -17
drivers/usb/input/hid-core.c
··· 270 * Read data value from item. 271 */ 272 273 - static __inline__ __u32 item_udata(struct hid_item *item) 274 { 275 switch (item->size) { 276 case 1: return item->data.u8; ··· 280 return 0; 281 } 282 283 - static __inline__ __s32 item_sdata(struct hid_item *item) 284 { 285 switch (item->size) { 286 case 1: return item->data.s8; ··· 727 * done by hand. 728 */ 729 730 - static __inline__ __s32 snto32(__u32 value, unsigned n) 731 { 732 switch (n) { 733 case 8: return ((__s8)value); ··· 741 * Convert a signed 32-bit integer to a signed n-bit integer. 742 */ 743 744 - static __inline__ __u32 s32ton(__s32 value, unsigned n) 745 { 746 - __s32 a = value >> (n - 1); 747 if (a && a != -1) 748 return value < 0 ? 1 << (n - 1) : (1 << (n - 1)) - 1; 749 return value & ((1 << n) - 1); ··· 751 752 /* 753 * Extract/implement a data field from/to a little endian report (bit array). 754 */ 755 756 static __inline__ __u32 extract(__u8 *report, unsigned offset, unsigned n) 757 { 758 - u32 x; 759 760 report += offset >> 3; /* adjust byte index */ 761 - offset &= 8 - 1; 762 - x = get_unaligned((u32 *) report); 763 - x = le32_to_cpu(x); 764 - x = (x >> offset) & ((1 << n) - 1); 765 - return x; 766 } 767 768 static __inline__ void implement(__u8 *report, unsigned offset, unsigned n, __u32 value) 769 { 770 - u32 x; 771 772 report += offset >> 3; 773 - offset &= 8 - 1; 774 - x = get_unaligned((u32 *)report); 775 - x &= cpu_to_le32(~((((__u32) 1 << n) - 1) << offset)); 776 - x |= cpu_to_le32(value << offset); 777 - put_unaligned(x,(u32 *)report); 778 } 779 780 /* ··· 1640 #define USB_VENDOR_ID_SUN 0x0430 1641 #define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab 1642 1643 /* 1644 * Alphabetically sorted blacklist by quirk type. 1645 */ ··· 1660 { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_22, HID_QUIRK_IGNORE }, 1661 { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_23, HID_QUIRK_IGNORE }, 1662 { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_24, HID_QUIRK_IGNORE }, 1663 { USB_VENDOR_ID_ALCOR, USB_DEVICE_ID_ALCOR_USBRS232, HID_QUIRK_IGNORE }, 1664 { USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD, HID_QUIRK_IGNORE }, 1665 { USB_VENDOR_ID_CODEMERCS, USB_DEVICE_ID_CODEMERCS_IOW40, HID_QUIRK_IGNORE },
··· 270 * Read data value from item. 271 */ 272 273 + static u32 item_udata(struct hid_item *item) 274 { 275 switch (item->size) { 276 case 1: return item->data.u8; ··· 280 return 0; 281 } 282 283 + static s32 item_sdata(struct hid_item *item) 284 { 285 switch (item->size) { 286 case 1: return item->data.s8; ··· 727 * done by hand. 728 */ 729 730 + static s32 snto32(__u32 value, unsigned n) 731 { 732 switch (n) { 733 case 8: return ((__s8)value); ··· 741 * Convert a signed 32-bit integer to a signed n-bit integer. 742 */ 743 744 + static u32 s32ton(__s32 value, unsigned n) 745 { 746 + s32 a = value >> (n - 1); 747 if (a && a != -1) 748 return value < 0 ? 1 << (n - 1) : (1 << (n - 1)) - 1; 749 return value & ((1 << n) - 1); ··· 751 752 /* 753 * Extract/implement a data field from/to a little endian report (bit array). 754 + * 755 + * Code sort-of follows HID spec: 756 + * http://www.usb.org/developers/devclass_docs/HID1_11.pdf 757 + * 758 + * While the USB HID spec allows unlimited length bit fields in "report 759 + * descriptors", most devices never use more than 16 bits. 760 + * One model of UPS is claimed to report "LINEV" as a 32-bit field. 761 + * Search linux-kernel and linux-usb-devel archives for "hid-core extract". 762 */ 763 764 static __inline__ __u32 extract(__u8 *report, unsigned offset, unsigned n) 765 { 766 + u64 x; 767 + 768 + WARN_ON(n > 32); 769 770 report += offset >> 3; /* adjust byte index */ 771 + offset &= 7; /* now only need bit offset into one byte */ 772 + x = get_unaligned((u64 *) report); 773 + x = le64_to_cpu(x); 774 + x = (x >> offset) & ((1ULL << n) - 1); /* extract bit field */ 775 + return (u32) x; 776 } 777 778 + /* 779 + * "implement" : set bits in a little endian bit stream. 780 + * Same concepts as "extract" (see comments above). 781 + * The data mangled in the bit stream remains in little endian 782 + * order the whole time. It make more sense to talk about 783 + * endianness of register values by considering a register 784 + * a "cached" copy of the little endiad bit stream. 785 + */ 786 static __inline__ void implement(__u8 *report, unsigned offset, unsigned n, __u32 value) 787 { 788 + u64 x; 789 + u64 m = (1ULL << n) - 1; 790 + 791 + WARN_ON(n > 32); 792 + 793 + WARN_ON(value > m); 794 + value &= m; 795 796 report += offset >> 3; 797 + offset &= 7; 798 + 799 + x = get_unaligned((u64 *)report); 800 + x &= cpu_to_le64(~(m << offset)); 801 + x |= cpu_to_le64(((u64) value) << offset); 802 + put_unaligned(x, (u64 *) report); 803 } 804 805 /* ··· 1615 #define USB_VENDOR_ID_SUN 0x0430 1616 #define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab 1617 1618 + #define USB_VENDOR_ID_AIRCABLE 0x16CA 1619 + #define USB_DEVICE_ID_AIRCABLE1 0x1502 1620 + 1621 /* 1622 * Alphabetically sorted blacklist by quirk type. 1623 */ ··· 1632 { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_22, HID_QUIRK_IGNORE }, 1633 { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_23, HID_QUIRK_IGNORE }, 1634 { USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_24, HID_QUIRK_IGNORE }, 1635 + { USB_VENDOR_ID_AIRCABLE, USB_DEVICE_ID_AIRCABLE1, HID_QUIRK_IGNORE }, 1636 { USB_VENDOR_ID_ALCOR, USB_DEVICE_ID_ALCOR_USBRS232, HID_QUIRK_IGNORE }, 1637 { USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD, HID_QUIRK_IGNORE }, 1638 { USB_VENDOR_ID_CODEMERCS, USB_DEVICE_ID_CODEMERCS_IOW40, HID_QUIRK_IGNORE },
+1 -1
drivers/usb/input/usbtouchscreen.c
··· 640 type->max_press, 0, 0); 641 642 usb_fill_int_urb(usbtouch->irq, usbtouch->udev, 643 - usb_rcvintpipe(usbtouch->udev, 0x81), 644 usbtouch->data, type->rept_size, 645 usbtouch_irq, usbtouch, endpoint->bInterval); 646
··· 640 type->max_press, 0, 0); 641 642 usb_fill_int_urb(usbtouch->irq, usbtouch->udev, 643 + usb_rcvintpipe(usbtouch->udev, endpoint->bEndpointAddress), 644 usbtouch->data, type->rept_size, 645 usbtouch_irq, usbtouch, endpoint->bInterval); 646
+40 -1
drivers/usb/input/xpad.c
··· 2 * X-Box gamepad - v0.0.6 3 * 4 * Copyright (c) 2002 Marko Friedemann <mfr@bmx-chemnitz.de> 5 * 2005 Dominic Cerquetti <binary1230@yahoo.com> 6 * 2006 Adam Buchbinder <adam.buchbinder@gmail.com> 7 * ··· 33 * - ITO Takayuki for providing essential xpad information on his website 34 * - Vojtech Pavlik - iforce driver / input subsystem 35 * - Greg Kroah-Hartman - usb-skeleton driver 36 * 37 * TODO: 38 * - fine tune axes (especially trigger axes) ··· 59 * - fixed d-pad to axes mapping 60 * 61 * 2002-07-17 - 0.0.5 : simplified d-pad handling 62 */ 63 64 #include <linux/kernel.h> ··· 102 { 0x045e, 0x0202, "Microsoft X-Box pad v1 (US)", MAP_DPAD_TO_AXES }, 103 { 0x045e, 0x0289, "Microsoft X-Box pad v2 (US)", MAP_DPAD_TO_AXES }, 104 { 0x045e, 0x0285, "Microsoft X-Box pad (Japan)", MAP_DPAD_TO_AXES }, 105 - { 0x05fd, 0x107a, "InterAct 'PowerPad Pro' X-Box pad (Germany)", MAP_DPAD_TO_AXES }, 106 { 0x0c12, 0x8809, "RedOctane Xbox Dance Pad", MAP_DPAD_TO_BUTTONS }, 107 { 0x0000, 0x0000, "Generic X-Box pad", MAP_DPAD_UNKNOWN } 108 }; 109
··· 2 * X-Box gamepad - v0.0.6 3 * 4 * Copyright (c) 2002 Marko Friedemann <mfr@bmx-chemnitz.de> 5 + * 2004 Oliver Schwartz <Oliver.Schwartz@gmx.de>, 6 + * Steven Toth <steve@toth.demon.co.uk>, 7 + * Franz Lehner <franz@caos.at>, 8 + * Ivan Hawkes <blackhawk@ivanhawkes.com> 9 * 2005 Dominic Cerquetti <binary1230@yahoo.com> 10 * 2006 Adam Buchbinder <adam.buchbinder@gmail.com> 11 * ··· 29 * - ITO Takayuki for providing essential xpad information on his website 30 * - Vojtech Pavlik - iforce driver / input subsystem 31 * - Greg Kroah-Hartman - usb-skeleton driver 32 + * - XBOX Linux project - extra USB id's 33 * 34 * TODO: 35 * - fine tune axes (especially trigger axes) ··· 54 * - fixed d-pad to axes mapping 55 * 56 * 2002-07-17 - 0.0.5 : simplified d-pad handling 57 + * 58 + * 2004-10-02 - 0.0.6 : DDR pad support 59 + * - borrowed from the XBOX linux kernel 60 + * - USB id's for commonly used dance pads are present 61 + * - dance pads will map D-PAD to buttons, not axes 62 + * - pass the module paramater 'dpad_to_buttons' to force 63 + * the D-PAD to map to buttons if your pad is not detected 64 */ 65 66 #include <linux/kernel.h> ··· 90 { 0x045e, 0x0202, "Microsoft X-Box pad v1 (US)", MAP_DPAD_TO_AXES }, 91 { 0x045e, 0x0289, "Microsoft X-Box pad v2 (US)", MAP_DPAD_TO_AXES }, 92 { 0x045e, 0x0285, "Microsoft X-Box pad (Japan)", MAP_DPAD_TO_AXES }, 93 + { 0x045e, 0x0287, "Microsoft Xbox Controller S", MAP_DPAD_TO_AXES }, 94 { 0x0c12, 0x8809, "RedOctane Xbox Dance Pad", MAP_DPAD_TO_BUTTONS }, 95 + { 0x044f, 0x0f07, "Thrustmaster, Inc. Controller", MAP_DPAD_TO_AXES }, 96 + { 0x046d, 0xca84, "Logitech Xbox Cordless Controller", MAP_DPAD_TO_AXES }, 97 + { 0x046d, 0xca88, "Logitech Compact Controller for Xbox", MAP_DPAD_TO_AXES }, 98 + { 0x05fd, 0x1007, "Mad Catz Controller (unverified)", MAP_DPAD_TO_AXES }, 99 + { 0x05fd, 0x107a, "InterAct 'PowerPad Pro' X-Box pad (Germany)", MAP_DPAD_TO_AXES }, 100 + { 0x0738, 0x4516, "Mad Catz Control Pad", MAP_DPAD_TO_AXES }, 101 + { 0x0738, 0x4522, "Mad Catz LumiCON", MAP_DPAD_TO_AXES }, 102 + { 0x0738, 0x4526, "Mad Catz Control Pad Pro", MAP_DPAD_TO_AXES }, 103 + { 0x0738, 0x4536, "Mad Catz MicroCON", MAP_DPAD_TO_AXES }, 104 + { 0x0738, 0x4540, "Mad Catz Beat Pad", MAP_DPAD_TO_BUTTONS }, 105 + { 0x0738, 0x4556, "Mad Catz Lynx Wireless Controller", MAP_DPAD_TO_AXES }, 106 + { 0x0738, 0x6040, "Mad Catz Beat Pad Pro", MAP_DPAD_TO_BUTTONS }, 107 + { 0x0c12, 0x8802, "Zeroplus Xbox Controller", MAP_DPAD_TO_AXES }, 108 + { 0x0c12, 0x8810, "Zeroplus Xbox Controller", MAP_DPAD_TO_AXES }, 109 + { 0x0c12, 0x9902, "HAMA VibraX - *FAULTY HARDWARE*", MAP_DPAD_TO_AXES }, 110 + { 0x0e4c, 0x1097, "Radica Gamester Controller", MAP_DPAD_TO_AXES }, 111 + { 0x0e4c, 0x2390, "Radica Games Jtech Controller", MAP_DPAD_TO_AXES}, 112 + { 0x0e6f, 0x0003, "Logic3 Freebird wireless Controller", MAP_DPAD_TO_AXES }, 113 + { 0x0e6f, 0x0005, "Eclipse wireless Controller", MAP_DPAD_TO_AXES }, 114 + { 0x0e6f, 0x0006, "Edge wireless Controller", MAP_DPAD_TO_AXES }, 115 + { 0x0e8f, 0x0201, "SmartJoy Frag Xpad/PS2 adaptor", MAP_DPAD_TO_AXES }, 116 + { 0x0f30, 0x0202, "Joytech Advanced Controller", MAP_DPAD_TO_AXES }, 117 + { 0x0f30, 0x8888, "BigBen XBMiniPad Controller", MAP_DPAD_TO_AXES }, 118 + { 0x102c, 0xff0c, "Joytech Wireless Advanced Controller", MAP_DPAD_TO_AXES }, 119 + { 0x12ab, 0x8809, "Xbox DDR dancepad", MAP_DPAD_TO_BUTTONS }, 120 + { 0x1430, 0x8888, "TX6500+ Dance Pad (first generation)", MAP_DPAD_TO_BUTTONS }, 121 + { 0xffff, 0xffff, "Chinese-made Xbox Controller", MAP_DPAD_TO_AXES }, 122 { 0x0000, 0x0000, "Generic X-Box pad", MAP_DPAD_UNKNOWN } 123 }; 124
+7 -1
drivers/usb/net/Kconfig
··· 92 To compile this driver as a module, choose M here: the 93 module will be called rtl8150. 94 95 config USB_USBNET 96 tristate "Multi-purpose USB Networking Framework" 97 ---help--- 98 This driver supports several kinds of network links over USB, 99 with "minidrivers" built around a common network driver core ··· 134 tristate "ASIX AX88xxx Based USB 2.0 Ethernet Adapters" 135 depends on USB_USBNET && NET_ETHERNET 136 select CRC32 137 - select MII 138 default y 139 help 140 This option adds support for ASIX AX88xxx based USB 2.0 ··· 215 config USB_NET_MCS7830 216 tristate "MosChip MCS7830 based Ethernet adapters" 217 depends on USB_USBNET 218 help 219 Choose this option if you're using a 10/100 Ethernet USB2 220 adapter based on the MosChip 7830 controller. This includes
··· 92 To compile this driver as a module, choose M here: the 93 module will be called rtl8150. 94 95 + config USB_USBNET_MII 96 + tristate 97 + default n 98 + 99 config USB_USBNET 100 tristate "Multi-purpose USB Networking Framework" 101 + select MII if USBNET_MII != n 102 ---help--- 103 This driver supports several kinds of network links over USB, 104 with "minidrivers" built around a common network driver core ··· 129 tristate "ASIX AX88xxx Based USB 2.0 Ethernet Adapters" 130 depends on USB_USBNET && NET_ETHERNET 131 select CRC32 132 + select USB_USBNET_MII 133 default y 134 help 135 This option adds support for ASIX AX88xxx based USB 2.0 ··· 210 config USB_NET_MCS7830 211 tristate "MosChip MCS7830 based Ethernet adapters" 212 depends on USB_USBNET 213 + select USB_USBNET_MII 214 help 215 Choose this option if you're using a 10/100 Ethernet USB2 216 adapter based on the MosChip 7830 controller. This includes
+32 -26
drivers/usb/net/usbnet.c
··· 669 * they'll probably want to use this base set. 670 */ 671 672 int usbnet_get_settings (struct net_device *net, struct ethtool_cmd *cmd) 673 { 674 struct usbnet *dev = netdev_priv(net); ··· 702 } 703 EXPORT_SYMBOL_GPL(usbnet_set_settings); 704 705 - 706 - void usbnet_get_drvinfo (struct net_device *net, struct ethtool_drvinfo *info) 707 - { 708 - struct usbnet *dev = netdev_priv(net); 709 - 710 - /* REVISIT don't always return "usbnet" */ 711 - strncpy (info->driver, driver_name, sizeof info->driver); 712 - strncpy (info->version, DRIVER_VERSION, sizeof info->version); 713 - strncpy (info->fw_version, dev->driver_info->description, 714 - sizeof info->fw_version); 715 - usb_make_path (dev->udev, info->bus_info, sizeof info->bus_info); 716 - } 717 - EXPORT_SYMBOL_GPL(usbnet_get_drvinfo); 718 - 719 u32 usbnet_get_link (struct net_device *net) 720 { 721 struct usbnet *dev = netdev_priv(net); ··· 719 } 720 EXPORT_SYMBOL_GPL(usbnet_get_link); 721 722 u32 usbnet_get_msglevel (struct net_device *net) 723 { 724 struct usbnet *dev = netdev_priv(net); ··· 761 } 762 EXPORT_SYMBOL_GPL(usbnet_set_msglevel); 763 764 - int usbnet_nway_reset(struct net_device *net) 765 - { 766 - struct usbnet *dev = netdev_priv(net); 767 - 768 - if (!dev->mii.mdio_write) 769 - return -EOPNOTSUPP; 770 - 771 - return mii_nway_restart(&dev->mii); 772 - } 773 - EXPORT_SYMBOL_GPL(usbnet_nway_reset); 774 - 775 /* drivers may override default ethtool_ops in their bind() routine */ 776 static struct ethtool_ops usbnet_ethtool_ops = { 777 .get_settings = usbnet_get_settings, 778 .set_settings = usbnet_set_settings, 779 - .get_drvinfo = usbnet_get_drvinfo, 780 .get_link = usbnet_get_link, 781 .nway_reset = usbnet_nway_reset, 782 .get_msglevel = usbnet_get_msglevel, 783 .set_msglevel = usbnet_set_msglevel, 784 };
··· 669 * they'll probably want to use this base set. 670 */ 671 672 + #if defined(CONFIG_MII) || defined(CONFIG_MII_MODULE) 673 + #define HAVE_MII 674 + 675 int usbnet_get_settings (struct net_device *net, struct ethtool_cmd *cmd) 676 { 677 struct usbnet *dev = netdev_priv(net); ··· 699 } 700 EXPORT_SYMBOL_GPL(usbnet_set_settings); 701 702 u32 usbnet_get_link (struct net_device *net) 703 { 704 struct usbnet *dev = netdev_priv(net); ··· 730 } 731 EXPORT_SYMBOL_GPL(usbnet_get_link); 732 733 + int usbnet_nway_reset(struct net_device *net) 734 + { 735 + struct usbnet *dev = netdev_priv(net); 736 + 737 + if (!dev->mii.mdio_write) 738 + return -EOPNOTSUPP; 739 + 740 + return mii_nway_restart(&dev->mii); 741 + } 742 + EXPORT_SYMBOL_GPL(usbnet_nway_reset); 743 + 744 + #endif /* HAVE_MII */ 745 + 746 + void usbnet_get_drvinfo (struct net_device *net, struct ethtool_drvinfo *info) 747 + { 748 + struct usbnet *dev = netdev_priv(net); 749 + 750 + /* REVISIT don't always return "usbnet" */ 751 + strncpy (info->driver, driver_name, sizeof info->driver); 752 + strncpy (info->version, DRIVER_VERSION, sizeof info->version); 753 + strncpy (info->fw_version, dev->driver_info->description, 754 + sizeof info->fw_version); 755 + usb_make_path (dev->udev, info->bus_info, sizeof info->bus_info); 756 + } 757 + EXPORT_SYMBOL_GPL(usbnet_get_drvinfo); 758 + 759 u32 usbnet_get_msglevel (struct net_device *net) 760 { 761 struct usbnet *dev = netdev_priv(net); ··· 746 } 747 EXPORT_SYMBOL_GPL(usbnet_set_msglevel); 748 749 /* drivers may override default ethtool_ops in their bind() routine */ 750 static struct ethtool_ops usbnet_ethtool_ops = { 751 + #ifdef HAVE_MII 752 .get_settings = usbnet_get_settings, 753 .set_settings = usbnet_set_settings, 754 .get_link = usbnet_get_link, 755 .nway_reset = usbnet_nway_reset, 756 + #endif 757 + .get_drvinfo = usbnet_get_drvinfo, 758 .get_msglevel = usbnet_get_msglevel, 759 .set_msglevel = usbnet_set_msglevel, 760 };
+2 -2
drivers/usb/serial/Kconfig
··· 54 properly. 55 56 config USB_SERIAL_AIRCABLE 57 - tristate "AIRcable USB Bluetooth Dongle Driver (EXPERIMENTAL)" 58 depends on USB_SERIAL && EXPERIMENTAL 59 help 60 - Say Y here if you want to use AIRcable USB Bluetoot Dongle. 61 62 To compile this driver as a module, choose M here: the module 63 will be called aircable.
··· 54 properly. 55 56 config USB_SERIAL_AIRCABLE 57 + tristate "USB AIRcable Bluetooth Dongle Driver (EXPERIMENTAL)" 58 depends on USB_SERIAL && EXPERIMENTAL 59 help 60 + Say Y here if you want to use USB AIRcable Bluetooth Dongle. 61 62 To compile this driver as a module, choose M here: the module 63 will be called aircable.
+3
drivers/usb/serial/cp2101.c
··· 64 { USB_DEVICE(0x10C4, 0x80F6) }, /* Suunto sports instrument */ 65 { USB_DEVICE(0x10C4, 0x813D) }, /* Burnside Telecom Deskmobile */ 66 { USB_DEVICE(0x10C4, 0x815E) }, /* Helicomm IP-Link 1220-DVM */ 67 { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */ 68 { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */ 69 { USB_DEVICE(0x16D6, 0x0001) }, /* Jablotron serial interface */
··· 64 { USB_DEVICE(0x10C4, 0x80F6) }, /* Suunto sports instrument */ 65 { USB_DEVICE(0x10C4, 0x813D) }, /* Burnside Telecom Deskmobile */ 66 { USB_DEVICE(0x10C4, 0x815E) }, /* Helicomm IP-Link 1220-DVM */ 67 + { USB_DEVICE(0x10C4, 0x81C8) }, /* Lipowsky Industrie Elektronik GmbH, Baby-JTAG */ 68 + { USB_DEVICE(0x10C4, 0x81E2) }, /* Lipowsky Industrie Elektronik GmbH, Baby-LIN */ 69 + { USB_DEVICE(0x10C4, 0x8218) }, /* Lipowsky Industrie Elektronik GmbH, HARP-1 */ 70 { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */ 71 { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */ 72 { USB_DEVICE(0x16D6, 0x0001) }, /* Jablotron serial interface */
+3
drivers/usb/serial/sierra.c
··· 35 { USB_DEVICE(0x1199, 0x0020) }, /* Sierra Wireless MC5725 */ 36 { USB_DEVICE(0x1199, 0x0017) }, /* Sierra Wireless EM5625 */ 37 { USB_DEVICE(0x1199, 0x0019) }, /* Sierra Wireless AirCard 595 */ 38 { USB_DEVICE(0x1199, 0x6802) }, /* Sierra Wireless MC8755 */ 39 { USB_DEVICE(0x1199, 0x6803) }, /* Sierra Wireless MC8765 */ 40 { USB_DEVICE(0x1199, 0x6804) }, /* Sierra Wireless MC8755 for Europe */ ··· 59 { USB_DEVICE(0x1199, 0x0020) }, /* Sierra Wireless MC5725 */ 60 { USB_DEVICE(0x1199, 0x0017) }, /* Sierra Wireless EM5625 */ 61 { USB_DEVICE(0x1199, 0x0019) }, /* Sierra Wireless AirCard 595 */ 62 { USB_DEVICE(0x1199, 0x6802) }, /* Sierra Wireless MC8755 */ 63 { USB_DEVICE(0x1199, 0x6803) }, /* Sierra Wireless MC8765 */ 64 { USB_DEVICE(0x1199, 0x6812) }, /* Sierra Wireless MC8775 */ 65 { USB_DEVICE(0x1199, 0x6820) }, /* Sierra Wireless AirCard 875 */ 66 { }
··· 35 { USB_DEVICE(0x1199, 0x0020) }, /* Sierra Wireless MC5725 */ 36 { USB_DEVICE(0x1199, 0x0017) }, /* Sierra Wireless EM5625 */ 37 { USB_DEVICE(0x1199, 0x0019) }, /* Sierra Wireless AirCard 595 */ 38 + { USB_DEVICE(0x1199, 0x0218) }, /* Sierra Wireless MC5720 */ 39 { USB_DEVICE(0x1199, 0x6802) }, /* Sierra Wireless MC8755 */ 40 { USB_DEVICE(0x1199, 0x6803) }, /* Sierra Wireless MC8765 */ 41 { USB_DEVICE(0x1199, 0x6804) }, /* Sierra Wireless MC8755 for Europe */ ··· 58 { USB_DEVICE(0x1199, 0x0020) }, /* Sierra Wireless MC5725 */ 59 { USB_DEVICE(0x1199, 0x0017) }, /* Sierra Wireless EM5625 */ 60 { USB_DEVICE(0x1199, 0x0019) }, /* Sierra Wireless AirCard 595 */ 61 + { USB_DEVICE(0x1199, 0x0218) }, /* Sierra Wireless MC5720 */ 62 { USB_DEVICE(0x1199, 0x6802) }, /* Sierra Wireless MC8755 */ 63 { USB_DEVICE(0x1199, 0x6803) }, /* Sierra Wireless MC8765 */ 64 + { USB_DEVICE(0x1199, 0x6804) }, /* Sierra Wireless MC8755 for Europe */ 65 { USB_DEVICE(0x1199, 0x6812) }, /* Sierra Wireless MC8775 */ 66 { USB_DEVICE(0x1199, 0x6820) }, /* Sierra Wireless AirCard 875 */ 67 { }
+8 -1
drivers/usb/storage/unusual_devs.h
··· 1236 "Cowon Systems", 1237 "iAUDIO M5", 1238 US_SC_DEVICE, US_PR_BULK, NULL, 1239 - 0 ), 1240 1241 /* Submitted by Antoine Mairesse <antoine.mairesse@free.fr> */ 1242 UNUSUAL_DEV( 0x0ed1, 0x6660, 0x0100, 0x0300, ··· 1296 UNUSUAL_DEV( 0x0fce, 0xe031, 0x0000, 0x0000, 1297 "Sony Ericsson", 1298 "M600i", 1299 US_SC_DEVICE, US_PR_DEVICE, NULL, 1300 US_FL_FIX_CAPACITY ), 1301
··· 1236 "Cowon Systems", 1237 "iAUDIO M5", 1238 US_SC_DEVICE, US_PR_BULK, NULL, 1239 + US_FL_NEED_OVERRIDE ), 1240 1241 /* Submitted by Antoine Mairesse <antoine.mairesse@free.fr> */ 1242 UNUSUAL_DEV( 0x0ed1, 0x6660, 0x0100, 0x0300, ··· 1296 UNUSUAL_DEV( 0x0fce, 0xe031, 0x0000, 0x0000, 1297 "Sony Ericsson", 1298 "M600i", 1299 + US_SC_DEVICE, US_PR_DEVICE, NULL, 1300 + US_FL_FIX_CAPACITY ), 1301 + 1302 + /* Reported by Jan Mate <mate@fiit.stuba.sk> */ 1303 + UNUSUAL_DEV( 0x0fce, 0xe030, 0x0000, 0x0000, 1304 + "Sony Ericsson", 1305 + "P990i", 1306 US_SC_DEVICE, US_PR_DEVICE, NULL, 1307 US_FL_FIX_CAPACITY ), 1308