* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6: uhci-hcd: fix list access bug USB: Support for ELECOM LD-USB20 in pegasus USB: Add VIA quirk fixup for VT8235 usb2 USB: rtl8150_disconnect() needs tasklet_kill() USB Storage: unusual_devs.h for Sony Ericsson M600i USB Storage: Remove the finecam3 unusual_devs entry UHCI: don't stop at an Iso error usb gadget: g_ether spinlock recursion fix USB: add all wacom device to hid-core.c blacklist hid-core.c: Adds all GTCO CalComp Digitizers and InterWrite School Products to blacklist USB floppy drive SAMSUNG SFD-321U/EP detected 8 times
Unified · Split
| @@ -667,6 +667,7 @@ DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_0, quirk_vi · 666 unmodified lines | ||
| 667 | 667 | DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, quirk_via_irq); |
| 668 | 668 | DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_2, quirk_via_irq); |
| 669 | 669 | DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_via_irq); |
| 670 | +DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8235_USB_2, quirk_via_irq); | |
| 670 | 671 | DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_irq); |
| 671 | 672 | DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_irq); |
| 672 | 673 | DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, quirk_via_irq); |
| @@ -117,6 +117,8 @@ struct eth_dev { · 116 unmodified lines | ||
| 117 | 117 | struct usb_ep *in_ep, *out_ep, *status_ep; |
| 118 | 118 | const struct usb_endpoint_descriptor |
| 119 | 119 | *in, *out, *status; |
| 120 | + | |
| 121 | + spinlock_t req_lock; | |
| 120 | 122 | struct list_head tx_reqs, rx_reqs; |
| 121 | 123 | |
| 122 | 124 | struct net_device *net; |
| @@ -1066,21 +1068,31 @@ static void eth_reset_config (struct eth_dev *dev) · 943 unmodified lines | ||
| 1066 | 1068 | */ |
| 1067 | 1069 | if (dev->in) { |
| 1068 | 1070 | usb_ep_disable (dev->in_ep); |
| 1071 | + spin_lock(&dev->req_lock); | |
| 1069 | 1072 | while (likely (!list_empty (&dev->tx_reqs))) { |
| 1070 | 1073 | req = container_of (dev->tx_reqs.next, |
| 1071 | 1074 | struct usb_request, list); |
| 1072 | 1075 | list_del (&req->list); |
| 1076 | + | |
| 1077 | + spin_unlock(&dev->req_lock); | |
| 1073 | 1078 | usb_ep_free_request (dev->in_ep, req); |
| 1079 | + spin_lock(&dev->req_lock); | |
| 1074 | 1080 | } |
| 1081 | + spin_unlock(&dev->req_lock); | |
| 1075 | 1082 | } |
| 1076 | 1083 | if (dev->out) { |
| 1077 | 1084 | usb_ep_disable (dev->out_ep); |
| 1085 | + spin_lock(&dev->req_lock); | |
| 1078 | 1086 | while (likely (!list_empty (&dev->rx_reqs))) { |
| 1079 | 1087 | req = container_of (dev->rx_reqs.next, |
| 1080 | 1088 | struct usb_request, list); |
| 1081 | 1089 | list_del (&req->list); |
| 1090 | + | |
| 1091 | + spin_unlock(&dev->req_lock); | |
| 1082 | 1092 | usb_ep_free_request (dev->out_ep, req); |
| 1093 | + spin_lock(&dev->req_lock); | |
| 1083 | 1094 | } |
| 1095 | + spin_unlock(&dev->req_lock); | |
| 1084 | 1096 | } |
| 1085 | 1097 | |
| 1086 | 1098 | if (dev->status) { |
| @@ -1659,9 +1671,9 @@ enomem: · 572 unmodified lines | ||
| 1659 | 1671 | if (retval) { |
| 1660 | 1672 | DEBUG (dev, "rx submit --> %d\n", retval); |
| 1661 | 1673 | dev_kfree_skb_any (skb); |
| 1662 | − spin_lock (&dev->lock); | |
| 1674 | + spin_lock(&dev->req_lock); | |
| 1663 | 1675 | list_add (&req->list, &dev->rx_reqs); |
| 1664 | − spin_unlock (&dev->lock); | |
| 1676 | + spin_unlock(&dev->req_lock); | |
| 1665 | 1677 | } |
| 1666 | 1678 | return retval; |
| 1667 | 1679 | } |
| @@ -1730,8 +1742,9 @@ quiesce: · 62 unmodified lines | ||
| 1730 | 1742 | dev_kfree_skb_any (skb); |
| 1731 | 1743 | if (!netif_running (dev->net)) { |
| 1732 | 1744 | clean: |
| 1733 | − /* nobody reading rx_reqs, so no dev->lock */ | |
| 1745 | + spin_lock(&dev->req_lock); | |
| 1734 | 1746 | list_add (&req->list, &dev->rx_reqs); |
| 1747 | + spin_unlock(&dev->req_lock); | |
| 1735 | 1748 | req = NULL; |
| 1736 | 1749 | } |
| 1737 | 1750 | if (req) |
| @@ -1782,15 +1795,18 @@ static int alloc_requests (struct eth_dev *dev, unsigned n, gfp_t gfp_flags) · 44 unmodified lines | ||
| 1782 | 1795 | { |
| 1783 | 1796 | int status; |
| 1784 | 1797 | |
| 1798 | + spin_lock(&dev->req_lock); | |
| 1785 | 1799 | status = prealloc (&dev->tx_reqs, dev->in_ep, n, gfp_flags); |
| 1786 | 1800 | if (status < 0) |
| 1787 | 1801 | goto fail; |
| 1788 | 1802 | status = prealloc (&dev->rx_reqs, dev->out_ep, n, gfp_flags); |
| 1789 | 1803 | if (status < 0) |
| 1790 | 1804 | goto fail; |
| 1791 | − return 0; | |
| 1805 | + goto done; | |
| 1792 | 1806 | fail: |
| 1793 | 1807 | DEBUG (dev, "can't alloc requests\n"); |
| 1808 | +done: | |
| 1809 | + spin_unlock(&dev->req_lock); | |
| 1794 | 1810 | return status; |
| 1795 | 1811 | } |
| 1796 | 1812 | |
| @@ -1800,21 +1816,21 @@ static void rx_fill (struct eth_dev *dev, gfp_t gfp_flags) · 3 unmodified lines | ||
| 1800 | 1816 | unsigned long flags; |
| 1801 | 1817 | |
| 1802 | 1818 | /* fill unused rxq slots with some skb */ |
| 1803 | − spin_lock_irqsave (&dev->lock, flags); | |
| 1819 | + spin_lock_irqsave(&dev->req_lock, flags); | |
| 1804 | 1820 | while (!list_empty (&dev->rx_reqs)) { |
| 1805 | 1821 | req = container_of (dev->rx_reqs.next, |
| 1806 | 1822 | struct usb_request, list); |
| 1807 | 1823 | list_del_init (&req->list); |
| 1808 | − spin_unlock_irqrestore (&dev->lock, flags); | |
| 1824 | + spin_unlock_irqrestore(&dev->req_lock, flags); | |
| 1809 | 1825 | |
| 1810 | 1826 | if (rx_submit (dev, req, gfp_flags) < 0) { |
| 1811 | 1827 | defer_kevent (dev, WORK_RX_MEMORY); |
| 1812 | 1828 | return; |
| 1813 | 1829 | } |
| 1814 | 1830 | |
| 1815 | − spin_lock_irqsave (&dev->lock, flags); | |
| 1831 | + spin_lock_irqsave(&dev->req_lock, flags); | |
| 1816 | 1832 | } |
| 1817 | − spin_unlock_irqrestore (&dev->lock, flags); | |
| 1833 | + spin_unlock_irqrestore(&dev->req_lock, flags); | |
| 1818 | 1834 | } |
| 1819 | 1835 | |
| 1820 | 1836 | static void eth_work (void *_dev) |
| @@ -1848,9 +1864,9 @@ static void tx_complete (struct usb_ep *ep, struct usb_request *req) · 27 unmodified lines | ||
| 1848 | 1864 | } |
| 1849 | 1865 | dev->stats.tx_packets++; |
| 1850 | 1866 | |
| 1851 | − spin_lock (&dev->lock); | |
| 1867 | + spin_lock(&dev->req_lock); | |
| 1852 | 1868 | list_add (&req->list, &dev->tx_reqs); |
| 1853 | − spin_unlock (&dev->lock); | |
| 1869 | + spin_unlock(&dev->req_lock); | |
| 1854 | 1870 | dev_kfree_skb_any (skb); |
| 1855 | 1871 | |
| 1856 | 1872 | atomic_dec (&dev->tx_qlen); |
| @@ -1896,12 +1912,12 @@ static int eth_start_xmit (struct sk_buff *skb, struct net_device *net) · 39 unmodified lines | ||
| 1896 | 1912 | /* ignores USB_CDC_PACKET_TYPE_DIRECTED */ |
| 1897 | 1913 | } |
| 1898 | 1914 | |
| 1899 | − spin_lock_irqsave (&dev->lock, flags); | |
| 1915 | + spin_lock_irqsave(&dev->req_lock, flags); | |
| 1900 | 1916 | req = container_of (dev->tx_reqs.next, struct usb_request, list); |
| 1901 | 1917 | list_del (&req->list); |
| 1902 | 1918 | if (list_empty (&dev->tx_reqs)) |
| 1903 | 1919 | netif_stop_queue (net); |
| 1904 | − spin_unlock_irqrestore (&dev->lock, flags); | |
| 1920 | + spin_unlock_irqrestore(&dev->req_lock, flags); | |
| 1905 | 1921 | |
| 1906 | 1922 | /* no buffer copies needed, unless the network stack did it |
| 1907 | 1923 | * or the hardware can't use skb buffers. |
| @@ -1955,11 +1971,11 @@ static int eth_start_xmit (struct sk_buff *skb, struct net_device *net) · 47 unmodified lines | ||
| 1955 | 1971 | drop: |
| 1956 | 1972 | dev->stats.tx_dropped++; |
| 1957 | 1973 | dev_kfree_skb_any (skb); |
| 1958 | − spin_lock_irqsave (&dev->lock, flags); | |
| 1974 | + spin_lock_irqsave(&dev->req_lock, flags); | |
| 1959 | 1975 | if (list_empty (&dev->tx_reqs)) |
| 1960 | 1976 | netif_start_queue (net); |
| 1961 | 1977 | list_add (&req->list, &dev->tx_reqs); |
| 1962 | − spin_unlock_irqrestore (&dev->lock, flags); | |
| 1978 | + spin_unlock_irqrestore(&dev->req_lock, flags); | |
| 1963 | 1979 | } |
| 1964 | 1980 | return 0; |
| 1965 | 1981 | } |
| @@ -2378,6 +2394,7 @@ autoconf_fail: · 412 unmodified lines | ||
| 2378 | 2394 | return status; |
| 2379 | 2395 | dev = netdev_priv(net); |
| 2380 | 2396 | spin_lock_init (&dev->lock); |
| 2397 | + spin_lock_init (&dev->req_lock); | |
| 2381 | 2398 | INIT_WORK (&dev->work, eth_work, dev); |
| 2382 | 2399 | INIT_LIST_HEAD (&dev->tx_reqs); |
| 2383 | 2400 | INIT_LIST_HEAD (&dev->rx_reqs); |
| @@ -372,7 +372,7 @@ static void uhci_fixup_toggles(struct uhci_qh *qh, int skip_first) · 371 unmodified lines | ||
| 372 | 372 | * need to change any toggles in this URB */ |
| 373 | 373 | td = list_entry(urbp->td_list.next, struct uhci_td, list); |
| 374 | 374 | if (toggle > 1 || uhci_toggle(td_token(td)) == toggle) { |
| 375 | − td = list_entry(urbp->td_list.next, struct uhci_td, | |
| 375 | + td = list_entry(urbp->td_list.prev, struct uhci_td, | |
| 376 | 376 | list); |
| 377 | 377 | toggle = uhci_toggle(td_token(td)) ^ 1; |
| 378 | 378 | |
| @@ -1348,7 +1348,7 @@ static void uhci_scan_qh(struct uhci_hcd *uhci, struct uhci_qh *qh, · 969 unmodified lines | ||
| 1348 | 1348 | } |
| 1349 | 1349 | |
| 1350 | 1350 | uhci_giveback_urb(uhci, qh, urb, regs); |
| 1351 | − if (status < 0) | |
| 1351 | + if (status < 0 && qh->type != USB_ENDPOINT_XFER_ISOC) | |
| 1352 | 1352 | break; |
| 1353 | 1353 | } |
| 1354 | 1354 | |
| @@ -1411,17 +1411,54 @@ void hid_init_reports(struct hid_device *hid) · 1410 unmodified lines | ||
| 1411 | 1411 | warn("timeout initializing reports"); |
| 1412 | 1412 | } |
| 1413 | 1413 | |
| 1414 | +#define USB_VENDOR_ID_GTCO 0x078c | |
| 1415 | +#define USB_DEVICE_ID_GTCO_90 0x0090 | |
| 1416 | +#define USB_DEVICE_ID_GTCO_100 0x0100 | |
| 1417 | +#define USB_DEVICE_ID_GTCO_101 0x0101 | |
| 1418 | +#define USB_DEVICE_ID_GTCO_103 0x0103 | |
| 1419 | +#define USB_DEVICE_ID_GTCO_104 0x0104 | |
| 1420 | +#define USB_DEVICE_ID_GTCO_105 0x0105 | |
| 1421 | +#define USB_DEVICE_ID_GTCO_106 0x0106 | |
| 1422 | +#define USB_DEVICE_ID_GTCO_107 0x0107 | |
| 1423 | +#define USB_DEVICE_ID_GTCO_108 0x0108 | |
| 1424 | +#define USB_DEVICE_ID_GTCO_200 0x0200 | |
| 1425 | +#define USB_DEVICE_ID_GTCO_201 0x0201 | |
| 1426 | +#define USB_DEVICE_ID_GTCO_202 0x0202 | |
| 1427 | +#define USB_DEVICE_ID_GTCO_203 0x0203 | |
| 1428 | +#define USB_DEVICE_ID_GTCO_204 0x0204 | |
| 1429 | +#define USB_DEVICE_ID_GTCO_205 0x0205 | |
| 1430 | +#define USB_DEVICE_ID_GTCO_206 0x0206 | |
| 1431 | +#define USB_DEVICE_ID_GTCO_207 0x0207 | |
| 1432 | +#define USB_DEVICE_ID_GTCO_300 0x0300 | |
| 1433 | +#define USB_DEVICE_ID_GTCO_301 0x0301 | |
| 1434 | +#define USB_DEVICE_ID_GTCO_302 0x0302 | |
| 1435 | +#define USB_DEVICE_ID_GTCO_303 0x0303 | |
| 1436 | +#define USB_DEVICE_ID_GTCO_304 0x0304 | |
| 1437 | +#define USB_DEVICE_ID_GTCO_305 0x0305 | |
| 1438 | +#define USB_DEVICE_ID_GTCO_306 0x0306 | |
| 1439 | +#define USB_DEVICE_ID_GTCO_307 0x0307 | |
| 1440 | +#define USB_DEVICE_ID_GTCO_308 0x0308 | |
| 1441 | +#define USB_DEVICE_ID_GTCO_309 0x0309 | |
| 1442 | +#define USB_DEVICE_ID_GTCO_400 0x0400 | |
| 1443 | +#define USB_DEVICE_ID_GTCO_401 0x0401 | |
| 1444 | +#define USB_DEVICE_ID_GTCO_402 0x0402 | |
| 1445 | +#define USB_DEVICE_ID_GTCO_403 0x0403 | |
| 1446 | +#define USB_DEVICE_ID_GTCO_404 0x0404 | |
| 1447 | +#define USB_DEVICE_ID_GTCO_404 0x0405 | |
| 1448 | +#define USB_DEVICE_ID_GTCO_500 0x0500 | |
| 1449 | +#define USB_DEVICE_ID_GTCO_501 0x0501 | |
| 1450 | +#define USB_DEVICE_ID_GTCO_502 0x0502 | |
| 1451 | +#define USB_DEVICE_ID_GTCO_503 0x0503 | |
| 1452 | +#define USB_DEVICE_ID_GTCO_504 0x0504 | |
| 1453 | +#define USB_DEVICE_ID_GTCO_1000 0x1000 | |
| 1454 | +#define USB_DEVICE_ID_GTCO_1001 0x1001 | |
| 1455 | +#define USB_DEVICE_ID_GTCO_1002 0x1002 | |
| 1456 | +#define USB_DEVICE_ID_GTCO_1003 0x1003 | |
| 1457 | +#define USB_DEVICE_ID_GTCO_1004 0x1004 | |
| 1458 | +#define USB_DEVICE_ID_GTCO_1005 0x1005 | |
| 1459 | +#define USB_DEVICE_ID_GTCO_1006 0x1006 | |
| 1460 | + | |
| 1414 | 1461 | #define USB_VENDOR_ID_WACOM 0x056a |
| 1415 | −#define USB_DEVICE_ID_WACOM_PENPARTNER 0x0000 | |
| 1416 | −#define USB_DEVICE_ID_WACOM_GRAPHIRE 0x0010 | |
| 1417 | −#define USB_DEVICE_ID_WACOM_INTUOS 0x0020 | |
| 1418 | −#define USB_DEVICE_ID_WACOM_PL 0x0030 | |
| 1419 | −#define USB_DEVICE_ID_WACOM_INTUOS2 0x0040 | |
| 1420 | −#define USB_DEVICE_ID_WACOM_VOLITO 0x0060 | |
| 1421 | −#define USB_DEVICE_ID_WACOM_PTU 0x0003 | |
| 1422 | −#define USB_DEVICE_ID_WACOM_INTUOS3 0x00B0 | |
| 1423 | −#define USB_DEVICE_ID_WACOM_CINTIQ 0x003F | |
| 1424 | −#define USB_DEVICE_ID_WACOM_DTF 0x00C0 | |
| 1425 | 1462 | |
| 1426 | 1463 | #define USB_VENDOR_ID_ACECAD 0x0460 |
| 1427 | 1464 | #define USB_DEVICE_ID_ACECAD_FLAIR 0x0004 |
| @@ -1588,6 +1625,51 @@ static const struct hid_blacklist { · 160 unmodified lines | ||
| 1588 | 1625 | { USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_8_8_IF_KIT, HID_QUIRK_IGNORE }, |
| 1589 | 1626 | { USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_POWERMATE, HID_QUIRK_IGNORE }, |
| 1590 | 1627 | { USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_SOUNDKNOB, HID_QUIRK_IGNORE }, |
| 1628 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_90, HID_QUIRK_IGNORE }, | |
| 1629 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_100, HID_QUIRK_IGNORE }, | |
| 1630 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_101, HID_QUIRK_IGNORE }, | |
| 1631 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_103, HID_QUIRK_IGNORE }, | |
| 1632 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_104, HID_QUIRK_IGNORE }, | |
| 1633 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_105, HID_QUIRK_IGNORE }, | |
| 1634 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_106, HID_QUIRK_IGNORE }, | |
| 1635 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_107, HID_QUIRK_IGNORE }, | |
| 1636 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_108, HID_QUIRK_IGNORE }, | |
| 1637 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_200, HID_QUIRK_IGNORE }, | |
| 1638 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_201, HID_QUIRK_IGNORE }, | |
| 1639 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_202, HID_QUIRK_IGNORE }, | |
| 1640 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_203, HID_QUIRK_IGNORE }, | |
| 1641 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_204, HID_QUIRK_IGNORE }, | |
| 1642 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_205, HID_QUIRK_IGNORE }, | |
| 1643 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_206, HID_QUIRK_IGNORE }, | |
| 1644 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_207, HID_QUIRK_IGNORE }, | |
| 1645 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_300, HID_QUIRK_IGNORE }, | |
| 1646 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_301, HID_QUIRK_IGNORE }, | |
| 1647 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_302, HID_QUIRK_IGNORE }, | |
| 1648 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_303, HID_QUIRK_IGNORE }, | |
| 1649 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_304, HID_QUIRK_IGNORE }, | |
| 1650 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_305, HID_QUIRK_IGNORE }, | |
| 1651 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_306, HID_QUIRK_IGNORE }, | |
| 1652 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_307, HID_QUIRK_IGNORE }, | |
| 1653 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_308, HID_QUIRK_IGNORE }, | |
| 1654 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_309, HID_QUIRK_IGNORE }, | |
| 1655 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_400, HID_QUIRK_IGNORE }, | |
| 1656 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_401, HID_QUIRK_IGNORE }, | |
| 1657 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_402, HID_QUIRK_IGNORE }, | |
| 1658 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_403, HID_QUIRK_IGNORE }, | |
| 1659 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_404, HID_QUIRK_IGNORE }, | |
| 1660 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_404, HID_QUIRK_IGNORE }, | |
| 1661 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_500, HID_QUIRK_IGNORE }, | |
| 1662 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_501, HID_QUIRK_IGNORE }, | |
| 1663 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_502, HID_QUIRK_IGNORE }, | |
| 1664 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_503, HID_QUIRK_IGNORE }, | |
| 1665 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_504, HID_QUIRK_IGNORE }, | |
| 1666 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1000, HID_QUIRK_IGNORE }, | |
| 1667 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1001, HID_QUIRK_IGNORE }, | |
| 1668 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1002, HID_QUIRK_IGNORE }, | |
| 1669 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1003, HID_QUIRK_IGNORE }, | |
| 1670 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1004, HID_QUIRK_IGNORE }, | |
| 1671 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1005, HID_QUIRK_IGNORE }, | |
| 1672 | + { USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1006, HID_QUIRK_IGNORE }, | |
| 1591 | 1673 | { USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO, HID_QUIRK_IGNORE }, |
| 1592 | 1674 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CASSY, HID_QUIRK_IGNORE }, |
| 1593 | 1675 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POCKETCASSY, HID_QUIRK_IGNORE }, |
| @@ -1617,49 +1699,6 @@ static const struct hid_blacklist { · 23 unmodified lines | ||
| 1617 | 1699 | { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_GOTEMP, HID_QUIRK_IGNORE }, |
| 1618 | 1700 | { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_SKIP, HID_QUIRK_IGNORE }, |
| 1619 | 1701 | { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_CYCLOPS, HID_QUIRK_IGNORE }, |
| 1620 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PENPARTNER, HID_QUIRK_IGNORE }, | |
| 1621 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE, HID_QUIRK_IGNORE }, | |
| 1622 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE + 1, HID_QUIRK_IGNORE }, | |
| 1623 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE + 2, HID_QUIRK_IGNORE }, | |
| 1624 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE + 3, HID_QUIRK_IGNORE }, | |
| 1625 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE + 4, HID_QUIRK_IGNORE }, | |
| 1626 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS, HID_QUIRK_IGNORE }, | |
| 1627 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS + 1, HID_QUIRK_IGNORE }, | |
| 1628 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS + 2, HID_QUIRK_IGNORE }, | |
| 1629 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS + 3, HID_QUIRK_IGNORE }, | |
| 1630 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS + 4, HID_QUIRK_IGNORE }, | |
| 1631 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL, HID_QUIRK_IGNORE }, | |
| 1632 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 1, HID_QUIRK_IGNORE }, | |
| 1633 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 2, HID_QUIRK_IGNORE }, | |
| 1634 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 3, HID_QUIRK_IGNORE }, | |
| 1635 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 4, HID_QUIRK_IGNORE }, | |
| 1636 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 5, HID_QUIRK_IGNORE }, | |
| 1637 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 7, HID_QUIRK_IGNORE }, | |
| 1638 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 8, HID_QUIRK_IGNORE }, | |
| 1639 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 9, HID_QUIRK_IGNORE }, | |
| 1640 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 1, HID_QUIRK_IGNORE }, | |
| 1641 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 2, HID_QUIRK_IGNORE }, | |
| 1642 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 3, HID_QUIRK_IGNORE }, | |
| 1643 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 4, HID_QUIRK_IGNORE }, | |
| 1644 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 5, HID_QUIRK_IGNORE }, | |
| 1645 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 7, HID_QUIRK_IGNORE }, | |
| 1646 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_VOLITO, HID_QUIRK_IGNORE }, | |
| 1647 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_VOLITO + 1, HID_QUIRK_IGNORE }, | |
| 1648 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_VOLITO + 2, HID_QUIRK_IGNORE }, | |
| 1649 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_VOLITO + 3, HID_QUIRK_IGNORE }, | |
| 1650 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_VOLITO + 4, HID_QUIRK_IGNORE }, | |
| 1651 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE + 5, HID_QUIRK_IGNORE }, | |
| 1652 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE + 6, HID_QUIRK_IGNORE }, | |
| 1653 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PTU, HID_QUIRK_IGNORE }, | |
| 1654 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3, HID_QUIRK_IGNORE }, | |
| 1655 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3 + 1, HID_QUIRK_IGNORE }, | |
| 1656 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3 + 2, HID_QUIRK_IGNORE }, | |
| 1657 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3 + 3, HID_QUIRK_IGNORE }, | |
| 1658 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3 + 4, HID_QUIRK_IGNORE }, | |
| 1659 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS3 + 5, HID_QUIRK_IGNORE }, | |
| 1660 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_CINTIQ, HID_QUIRK_IGNORE }, | |
| 1661 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_DTF, HID_QUIRK_IGNORE }, | |
| 1662 | − { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_DTF + 3, HID_QUIRK_IGNORE }, | |
| 1663 | 1702 | { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_4_PHIDGETSERVO_20, HID_QUIRK_IGNORE }, |
| 1664 | 1703 | { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_1_PHIDGETSERVO_20, HID_QUIRK_IGNORE }, |
| 1665 | 1704 | { USB_VENDOR_ID_YEALINK, USB_DEVICE_ID_YEALINK_P1K_P4K_B2K, HID_QUIRK_IGNORE }, |
| @@ -1778,6 +1817,10 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf) · 112 unmodified lines | ||
| 1778 | 1817 | char *rdesc; |
| 1779 | 1818 | int n, len, insize = 0; |
| 1780 | 1819 | |
| 1820 | + /* Ignore all Wacom devices */ | |
| 1821 | + if (dev->descriptor.idVendor == USB_VENDOR_ID_WACOM) | |
| 1822 | + return NULL; | |
| 1823 | + | |
| 1781 | 1824 | for (n = 0; hid_blacklist[n].idVendor; n++) |
| 1782 | 1825 | if ((hid_blacklist[n].idVendor == le16_to_cpu(dev->descriptor.idVendor)) && |
| 1783 | 1826 | (hid_blacklist[n].idProduct == le16_to_cpu(dev->descriptor.idProduct))) |
| @@ -131,6 +131,7 @@ struct usb_eth_dev { · 130 unmodified lines | ||
| 131 | 131 | #define VENDOR_COREGA 0x07aa |
| 132 | 132 | #define VENDOR_DLINK 0x2001 |
| 133 | 133 | #define VENDOR_ELCON 0x0db7 |
| 134 | +#define VENDOR_ELECOM 0x056e | |
| 134 | 135 | #define VENDOR_ELSA 0x05cc |
| 135 | 136 | #define VENDOR_GIGABYTE 0x1044 |
| 136 | 137 | #define VENDOR_HAWKING 0x0e66 |
| @@ -233,6 +234,8 @@ PEGASUS_DEV( "D-Link DSB-650", VENDOR_DLINK, 0xabc1, · 96 unmodified lines | ||
| 233 | 234 | DEFAULT_GPIO_RESET ) |
| 234 | 235 | PEGASUS_DEV( "GOLDPFEIL USB Adapter", VENDOR_ELCON, 0x0002, |
| 235 | 236 | DEFAULT_GPIO_RESET | PEGASUS_II | HAS_HOME_PNA ) |
| 237 | +PEGASUS_DEV( "ELECOM USB Ethernet LD-USB20", VENDOR_ELECOM, 0x4010, | |
| 238 | + DEFAULT_GPIO_RESET | PEGASUS_II ) | |
| 236 | 239 | PEGASUS_DEV( "EasiDock Ethernet", VENDOR_MOBILITY, 0x0304, |
| 237 | 240 | DEFAULT_GPIO_RESET ) |
| 238 | 241 | PEGASUS_DEV( "Elsa Micolink USB2Ethernet", VENDOR_ELSA, 0x3000, |
| @@ -972,6 +972,7 @@ static void rtl8150_disconnect(struct usb_interface *intf) · 971 unmodified lines | ||
| 972 | 972 | if (dev) { |
| 973 | 973 | set_bit(RTL8150_UNPLUG, &dev->flags); |
| 974 | 974 | tasklet_disable(&dev->tl); |
| 975 | + tasklet_kill(&dev->tl); | |
| 975 | 976 | unregister_netdev(dev->netdev); |
| 976 | 977 | unlink_all_urbs(dev); |
| 977 | 978 | free_all_urbs(dev); |
| @@ -241,16 +241,6 @@ UNUSUAL_DEV( 0x0482, 0x0103, 0x0100, 0x0100, · 240 unmodified lines | ||
| 241 | 241 | "Finecam S5", |
| 242 | 242 | US_SC_DEVICE, US_PR_DEVICE, NULL, US_FL_FIX_INQUIRY), |
| 243 | 243 | |
| 244 | −/* Patch for Kyocera Finecam L3 | |
| 245 | − * Submitted by Michael Krauth <michael.krauth@web.de> | |
| 246 | − * and Alessandro Fracchetti <al.fracchetti@tin.it> | |
| 247 | − */ | |
| 248 | −UNUSUAL_DEV( 0x0482, 0x0105, 0x0100, 0x0100, | |
| 249 | − "Kyocera", | |
| 250 | − "Finecam L3", | |
| 251 | − US_SC_SCSI, US_PR_BULK, NULL, | |
| 252 | − US_FL_FIX_INQUIRY), | |
| 253 | − | |
| 254 | 244 | /* Reported by Paul Stewart <stewart@wetlogic.net> |
| 255 | 245 | * This entry is needed because the device reports Sub=ff */ |
| 256 | 246 | UNUSUAL_DEV( 0x04a4, 0x0004, 0x0001, 0x0001, |
| @@ -599,6 +589,13 @@ UNUSUAL_DEV( 0x054c, 0x0099, 0x0000, 0x9999, · 342 unmodified lines | ||
| 599 | 589 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
| 600 | 590 | US_FL_FIX_INQUIRY ), |
| 601 | 591 | |
| 592 | +/* floppy reports multiple luns */ | |
| 593 | +UNUSUAL_DEV( 0x055d, 0x2020, 0x0000, 0x0210, | |
| 594 | + "SAMSUNG", | |
| 595 | + "SFD-321U [FW 0C]", | |
| 596 | + US_SC_DEVICE, US_PR_DEVICE, NULL, | |
| 597 | + US_FL_SINGLE_LUN ), | |
| 598 | + | |
| 602 | 599 | |
| 603 | 600 | UNUSUAL_DEV( 0x057b, 0x0000, 0x0000, 0x0299, |
| 604 | 601 | "Y-E Data", |
| @@ -1257,6 +1254,13 @@ UNUSUAL_DEV( 0x0fce, 0xd008, 0x0000, 0x0000, · 652 unmodified lines | ||
| 1257 | 1254 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
| 1258 | 1255 | US_FL_NO_WP_DETECT ), |
| 1259 | 1256 | |
| 1257 | +/* Reported by Emmanuel Vasilakis <evas@forthnet.gr> */ | |
| 1258 | +UNUSUAL_DEV( 0x0fce, 0xe031, 0x0000, 0x0000, | |
| 1259 | + "Sony Ericsson", | |
| 1260 | + "M600i", | |
| 1261 | + US_SC_DEVICE, US_PR_DEVICE, NULL, | |
| 1262 | + US_FL_FIX_CAPACITY ), | |
| 1263 | + | |
| 1260 | 1264 | /* Reported by Kevin Cernekee <kpc-usbdev@gelato.uiuc.edu> |
| 1261 | 1265 | * Tested on hardware version 1.10. |
| 1262 | 1266 | * Entry is needed only for the initializer function override. |
| @@ -1292,6 +1292,7 @@ · 1291 unmodified lines | ||
| 1292 | 1292 | #define PCI_DEVICE_ID_VIA_8367_0 0x3099 |
| 1293 | 1293 | #define PCI_DEVICE_ID_VIA_8653_0 0x3101 |
| 1294 | 1294 | #define PCI_DEVICE_ID_VIA_8622 0x3102 |
| 1295 | +#define PCI_DEVICE_ID_VIA_8235_USB_2 0x3104 | |
| 1295 | 1296 | #define PCI_DEVICE_ID_VIA_8233C_0 0x3109 |
| 1296 | 1297 | #define PCI_DEVICE_ID_VIA_8361 0x3112 |
| 1297 | 1298 | #define PCI_DEVICE_ID_VIA_XM266 0x3116 |