diff options
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/gadget/lh7a40x_udc.c | 6 | ||||
-rw-r--r-- | drivers/usb/gadget/rndis.c | 11 | ||||
-rw-r--r-- | drivers/usb/host/pci-quirks.c | 27 | ||||
-rw-r--r-- | drivers/usb/host/sl811_cs.c | 4 | ||||
-rw-r--r-- | drivers/usb/input/hid-core.c | 52 | ||||
-rw-r--r-- | drivers/usb/misc/Kconfig | 2 | ||||
-rw-r--r-- | drivers/usb/misc/ldusb.c | 57 | ||||
-rw-r--r-- | drivers/usb/serial/ftdi_sio.c | 6 | ||||
-rw-r--r-- | drivers/usb/serial/ftdi_sio.h | 10 | ||||
-rw-r--r-- | drivers/usb/serial/pl2303.c | 5 | ||||
-rw-r--r-- | drivers/usb/serial/pl2303.h | 4 | ||||
-rw-r--r-- | drivers/usb/serial/usb-serial.c | 10 | ||||
-rw-r--r-- | drivers/usb/serial/visor.c | 3 | ||||
-rw-r--r-- | drivers/usb/serial/visor.h | 3 | ||||
-rw-r--r-- | drivers/usb/storage/unusual_devs.h | 59 |
15 files changed, 179 insertions, 80 deletions
diff --git a/drivers/usb/gadget/lh7a40x_udc.c b/drivers/usb/gadget/lh7a40x_udc.c index e02fea5a5433..1a362c5e7f3d 100644 --- a/drivers/usb/gadget/lh7a40x_udc.c +++ b/drivers/usb/gadget/lh7a40x_udc.c | |||
@@ -1062,11 +1062,11 @@ static int lh7a40x_ep_enable(struct usb_ep *_ep, | |||
1062 | ep->pio_irqs = 0; | 1062 | ep->pio_irqs = 0; |
1063 | ep->ep.maxpacket = le16_to_cpu(desc->wMaxPacketSize); | 1063 | ep->ep.maxpacket = le16_to_cpu(desc->wMaxPacketSize); |
1064 | 1064 | ||
1065 | spin_unlock_irqrestore(&ep->dev->lock, flags); | ||
1066 | |||
1065 | /* Reset halt state (does flush) */ | 1067 | /* Reset halt state (does flush) */ |
1066 | lh7a40x_set_halt(_ep, 0); | 1068 | lh7a40x_set_halt(_ep, 0); |
1067 | 1069 | ||
1068 | spin_unlock_irqrestore(&ep->dev->lock, flags); | ||
1069 | |||
1070 | DEBUG("%s: enabled %s\n", __FUNCTION__, _ep->name); | 1070 | DEBUG("%s: enabled %s\n", __FUNCTION__, _ep->name); |
1071 | return 0; | 1071 | return 0; |
1072 | } | 1072 | } |
@@ -1775,6 +1775,7 @@ static void lh7a40x_ep0_setup(struct lh7a40x_udc *dev, u32 csr) | |||
1775 | break; | 1775 | break; |
1776 | 1776 | ||
1777 | qep = &dev->ep[ep_num]; | 1777 | qep = &dev->ep[ep_num]; |
1778 | spin_unlock(&dev->lock); | ||
1778 | if (ctrl.bRequest == USB_REQ_SET_FEATURE) { | 1779 | if (ctrl.bRequest == USB_REQ_SET_FEATURE) { |
1779 | DEBUG_SETUP("SET_FEATURE (%d)\n", | 1780 | DEBUG_SETUP("SET_FEATURE (%d)\n", |
1780 | ep_num); | 1781 | ep_num); |
@@ -1784,6 +1785,7 @@ static void lh7a40x_ep0_setup(struct lh7a40x_udc *dev, u32 csr) | |||
1784 | ep_num); | 1785 | ep_num); |
1785 | lh7a40x_set_halt(&qep->ep, 0); | 1786 | lh7a40x_set_halt(&qep->ep, 0); |
1786 | } | 1787 | } |
1788 | spin_lock(&dev->lock); | ||
1787 | usb_set_index(0); | 1789 | usb_set_index(0); |
1788 | 1790 | ||
1789 | /* Reply with a ZLP on next IN token */ | 1791 | /* Reply with a ZLP on next IN token */ |
diff --git a/drivers/usb/gadget/rndis.c b/drivers/usb/gadget/rndis.c index 9689efeb364c..6d6eaad73968 100644 --- a/drivers/usb/gadget/rndis.c +++ b/drivers/usb/gadget/rndis.c | |||
@@ -853,11 +853,14 @@ static int rndis_query_response (int configNr, rndis_query_msg_type *buf) | |||
853 | // DEBUG("%s: OID = %08X\n", __FUNCTION__, cpu_to_le32(buf->OID)); | 853 | // DEBUG("%s: OID = %08X\n", __FUNCTION__, cpu_to_le32(buf->OID)); |
854 | if (!rndis_per_dev_params [configNr].dev) return -ENOTSUPP; | 854 | if (!rndis_per_dev_params [configNr].dev) return -ENOTSUPP; |
855 | 855 | ||
856 | /* | 856 | /* |
857 | * we need more memory: | 857 | * we need more memory: |
858 | * oid_supported_list is the largest answer | 858 | * gen_ndis_query_resp expects enough space for |
859 | * rndis_query_cmplt_type followed by data. | ||
860 | * oid_supported_list is the largest data reply | ||
859 | */ | 861 | */ |
860 | r = rndis_add_response (configNr, sizeof (oid_supported_list)); | 862 | r = rndis_add_response (configNr, |
863 | sizeof (oid_supported_list) + sizeof(rndis_query_cmplt_type)); | ||
861 | if (!r) | 864 | if (!r) |
862 | return -ENOMEM; | 865 | return -ENOMEM; |
863 | resp = (rndis_query_cmplt_type *) r->buf; | 866 | resp = (rndis_query_cmplt_type *) r->buf; |
diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c index e9e5bc178cef..9e81c26313f9 100644 --- a/drivers/usb/host/pci-quirks.c +++ b/drivers/usb/host/pci-quirks.c | |||
@@ -191,8 +191,9 @@ static void __devinit quirk_usb_handoff_ohci(struct pci_dev *pdev) | |||
191 | } | 191 | } |
192 | if (wait_time <= 0) | 192 | if (wait_time <= 0) |
193 | printk(KERN_WARNING "%s %s: BIOS handoff " | 193 | printk(KERN_WARNING "%s %s: BIOS handoff " |
194 | "failed (BIOS bug ?)\n", | 194 | "failed (BIOS bug ?) %08x\n", |
195 | pdev->dev.bus_id, "OHCI"); | 195 | pdev->dev.bus_id, "OHCI", |
196 | readl(base + OHCI_CONTROL)); | ||
196 | 197 | ||
197 | /* reset controller, preserving RWC */ | 198 | /* reset controller, preserving RWC */ |
198 | writel(control & OHCI_CTRL_RWC, base + OHCI_CONTROL); | 199 | writel(control & OHCI_CTRL_RWC, base + OHCI_CONTROL); |
@@ -243,6 +244,12 @@ static void __devinit quirk_usb_disable_ehci(struct pci_dev *pdev) | |||
243 | pr_debug("%s %s: BIOS handoff\n", | 244 | pr_debug("%s %s: BIOS handoff\n", |
244 | pdev->dev.bus_id, "EHCI"); | 245 | pdev->dev.bus_id, "EHCI"); |
245 | 246 | ||
247 | #if 0 | ||
248 | /* aleksey_gorelov@phoenix.com reports that some systems need SMI forced on, | ||
249 | * but that seems dubious in general (the BIOS left it off intentionally) | ||
250 | * and is known to prevent some systems from booting. so we won't do this | ||
251 | * unless maybe we can determine when we're on a system that needs SMI forced. | ||
252 | */ | ||
246 | /* BIOS workaround (?): be sure the | 253 | /* BIOS workaround (?): be sure the |
247 | * pre-Linux code receives the SMI | 254 | * pre-Linux code receives the SMI |
248 | */ | 255 | */ |
@@ -252,12 +259,14 @@ static void __devinit quirk_usb_disable_ehci(struct pci_dev *pdev) | |||
252 | pci_write_config_dword(pdev, | 259 | pci_write_config_dword(pdev, |
253 | offset + EHCI_USBLEGCTLSTS, | 260 | offset + EHCI_USBLEGCTLSTS, |
254 | val | EHCI_USBLEGCTLSTS_SOOE); | 261 | val | EHCI_USBLEGCTLSTS_SOOE); |
255 | } | 262 | #endif |
256 | 263 | ||
257 | /* always say Linux will own the hardware | 264 | /* some systems get upset if this semaphore is |
258 | * by setting EHCI_USBLEGSUP_OS. | 265 | * set for any other reason than forcing a BIOS |
259 | */ | 266 | * handoff.. |
260 | pci_write_config_byte(pdev, offset + 3, 1); | 267 | */ |
268 | pci_write_config_byte(pdev, offset + 3, 1); | ||
269 | } | ||
261 | 270 | ||
262 | /* if boot firmware now owns EHCI, spin till | 271 | /* if boot firmware now owns EHCI, spin till |
263 | * it hands it over. | 272 | * it hands it over. |
@@ -274,8 +283,8 @@ static void __devinit quirk_usb_disable_ehci(struct pci_dev *pdev) | |||
274 | * it down, and hope nothing goes too wrong | 283 | * it down, and hope nothing goes too wrong |
275 | */ | 284 | */ |
276 | printk(KERN_WARNING "%s %s: BIOS handoff " | 285 | printk(KERN_WARNING "%s %s: BIOS handoff " |
277 | "failed (BIOS bug ?)\n", | 286 | "failed (BIOS bug ?) %08x\n", |
278 | pdev->dev.bus_id, "EHCI"); | 287 | pdev->dev.bus_id, "EHCI", cap); |
279 | pci_write_config_byte(pdev, offset + 2, 0); | 288 | pci_write_config_byte(pdev, offset + 2, 0); |
280 | } | 289 | } |
281 | 290 | ||
diff --git a/drivers/usb/host/sl811_cs.c b/drivers/usb/host/sl811_cs.c index 466384d7c79f..134d2000128a 100644 --- a/drivers/usb/host/sl811_cs.c +++ b/drivers/usb/host/sl811_cs.c | |||
@@ -101,7 +101,7 @@ static struct resource resources[] = { | |||
101 | }, | 101 | }, |
102 | }; | 102 | }; |
103 | 103 | ||
104 | extern struct device_driver sl811h_driver; | 104 | extern struct platform_driver sl811h_driver; |
105 | 105 | ||
106 | static struct platform_device platform_dev = { | 106 | static struct platform_device platform_dev = { |
107 | .id = -1, | 107 | .id = -1, |
@@ -132,7 +132,7 @@ static int sl811_hc_init(struct device *parent, ioaddr_t base_addr, int irq) | |||
132 | * initialized already because of the link order dependency created | 132 | * initialized already because of the link order dependency created |
133 | * by referencing "sl811h_driver". | 133 | * by referencing "sl811h_driver". |
134 | */ | 134 | */ |
135 | platform_dev.name = sl811h_driver.name; | 135 | platform_dev.name = sl811h_driver.driver.name; |
136 | return platform_device_register(&platform_dev); | 136 | return platform_device_register(&platform_dev); |
137 | } | 137 | } |
138 | 138 | ||
diff --git a/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c index 6f7a684c3e07..07a012f88772 100644 --- a/drivers/usb/input/hid-core.c +++ b/drivers/usb/input/hid-core.c | |||
@@ -1407,6 +1407,7 @@ void hid_init_reports(struct hid_device *hid) | |||
1407 | #define USB_VENDOR_ID_WISEGROUP 0x0925 | 1407 | #define USB_VENDOR_ID_WISEGROUP 0x0925 |
1408 | #define USB_DEVICE_ID_1_PHIDGETSERVO_20 0x8101 | 1408 | #define USB_DEVICE_ID_1_PHIDGETSERVO_20 0x8101 |
1409 | #define USB_DEVICE_ID_4_PHIDGETSERVO_20 0x8104 | 1409 | #define USB_DEVICE_ID_4_PHIDGETSERVO_20 0x8104 |
1410 | #define USB_DEVICE_ID_DUAL_USB_JOYPAD 0x8866 | ||
1410 | 1411 | ||
1411 | #define USB_VENDOR_ID_CODEMERCS 0x07c0 | 1412 | #define USB_VENDOR_ID_CODEMERCS 0x07c0 |
1412 | #define USB_DEVICE_ID_CODEMERCS_IOW40 0x1500 | 1413 | #define USB_DEVICE_ID_CODEMERCS_IOW40 0x1500 |
@@ -1435,17 +1436,20 @@ void hid_init_reports(struct hid_device *hid) | |||
1435 | #define USB_DEVICE_ID_VERNIER_CYCLOPS 0x0004 | 1436 | #define USB_DEVICE_ID_VERNIER_CYCLOPS 0x0004 |
1436 | 1437 | ||
1437 | #define USB_VENDOR_ID_LD 0x0f11 | 1438 | #define USB_VENDOR_ID_LD 0x0f11 |
1438 | #define USB_DEVICE_ID_CASSY 0x1000 | 1439 | #define USB_DEVICE_ID_LD_CASSY 0x1000 |
1439 | #define USB_DEVICE_ID_POCKETCASSY 0x1010 | 1440 | #define USB_DEVICE_ID_LD_POCKETCASSY 0x1010 |
1440 | #define USB_DEVICE_ID_MOBILECASSY 0x1020 | 1441 | #define USB_DEVICE_ID_LD_MOBILECASSY 0x1020 |
1441 | #define USB_DEVICE_ID_JWM 0x1080 | 1442 | #define USB_DEVICE_ID_LD_JWM 0x1080 |
1442 | #define USB_DEVICE_ID_DMMP 0x1081 | 1443 | #define USB_DEVICE_ID_LD_DMMP 0x1081 |
1443 | #define USB_DEVICE_ID_UMIP 0x1090 | 1444 | #define USB_DEVICE_ID_LD_UMIP 0x1090 |
1444 | #define USB_DEVICE_ID_VIDEOCOM 0x1200 | 1445 | #define USB_DEVICE_ID_LD_XRAY1 0x1100 |
1445 | #define USB_DEVICE_ID_COM3LAB 0x2000 | 1446 | #define USB_DEVICE_ID_LD_XRAY2 0x1101 |
1446 | #define USB_DEVICE_ID_TELEPORT 0x2010 | 1447 | #define USB_DEVICE_ID_LD_VIDEOCOM 0x1200 |
1447 | #define USB_DEVICE_ID_NETWORKANALYSER 0x2020 | 1448 | #define USB_DEVICE_ID_LD_COM3LAB 0x2000 |
1448 | #define USB_DEVICE_ID_POWERCONTROL 0x2030 | 1449 | #define USB_DEVICE_ID_LD_TELEPORT 0x2010 |
1450 | #define USB_DEVICE_ID_LD_NETWORKANALYSER 0x2020 | ||
1451 | #define USB_DEVICE_ID_LD_POWERCONTROL 0x2030 | ||
1452 | #define USB_DEVICE_ID_LD_MACHINETEST 0x2040 | ||
1449 | 1453 | ||
1450 | #define USB_VENDOR_ID_APPLE 0x05ac | 1454 | #define USB_VENDOR_ID_APPLE 0x05ac |
1451 | #define USB_DEVICE_ID_APPLE_POWERMOUSE 0x0304 | 1455 | #define USB_DEVICE_ID_APPLE_POWERMOUSE 0x0304 |
@@ -1491,17 +1495,20 @@ static const struct hid_blacklist { | |||
1491 | { USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_POWERMATE, HID_QUIRK_IGNORE }, | 1495 | { USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_POWERMATE, HID_QUIRK_IGNORE }, |
1492 | { USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_SOUNDKNOB, HID_QUIRK_IGNORE }, | 1496 | { USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_SOUNDKNOB, HID_QUIRK_IGNORE }, |
1493 | { USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO, HID_QUIRK_IGNORE }, | 1497 | { USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO, HID_QUIRK_IGNORE }, |
1494 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_CASSY, HID_QUIRK_IGNORE }, | 1498 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CASSY, HID_QUIRK_IGNORE }, |
1495 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_POCKETCASSY, HID_QUIRK_IGNORE }, | 1499 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POCKETCASSY, HID_QUIRK_IGNORE }, |
1496 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_MOBILECASSY, HID_QUIRK_IGNORE }, | 1500 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MOBILECASSY, HID_QUIRK_IGNORE }, |
1497 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_JWM, HID_QUIRK_IGNORE }, | 1501 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_JWM, HID_QUIRK_IGNORE }, |
1498 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_DMMP, HID_QUIRK_IGNORE }, | 1502 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_DMMP, HID_QUIRK_IGNORE }, |
1499 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_UMIP, HID_QUIRK_IGNORE }, | 1503 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_UMIP, HID_QUIRK_IGNORE }, |
1500 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_VIDEOCOM, HID_QUIRK_IGNORE }, | 1504 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_XRAY1, HID_QUIRK_IGNORE }, |
1501 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_COM3LAB, HID_QUIRK_IGNORE }, | 1505 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_XRAY2, HID_QUIRK_IGNORE }, |
1502 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_TELEPORT, HID_QUIRK_IGNORE }, | 1506 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_VIDEOCOM, HID_QUIRK_IGNORE }, |
1503 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_NETWORKANALYSER, HID_QUIRK_IGNORE }, | 1507 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_COM3LAB, HID_QUIRK_IGNORE }, |
1504 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_POWERCONTROL, HID_QUIRK_IGNORE }, | 1508 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_TELEPORT, HID_QUIRK_IGNORE }, |
1509 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_NETWORKANALYSER, HID_QUIRK_IGNORE }, | ||
1510 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POWERCONTROL, HID_QUIRK_IGNORE }, | ||
1511 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MACHINETEST, HID_QUIRK_IGNORE }, | ||
1505 | { USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1024LS, HID_QUIRK_IGNORE }, | 1512 | { USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1024LS, HID_QUIRK_IGNORE }, |
1506 | { USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1208LS, HID_QUIRK_IGNORE }, | 1513 | { USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1208LS, HID_QUIRK_IGNORE }, |
1507 | { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_IGNORE }, | 1514 | { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_IGNORE }, |
@@ -1571,6 +1578,7 @@ static const struct hid_blacklist { | |||
1571 | { USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_USBHUB_KB, HID_QUIRK_NOGET}, | 1578 | { USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_USBHUB_KB, HID_QUIRK_NOGET}, |
1572 | { USB_VENDOR_ID_HP, USB_DEVICE_ID_HP_USBHUB_KB, HID_QUIRK_NOGET }, | 1579 | { USB_VENDOR_ID_HP, USB_DEVICE_ID_HP_USBHUB_KB, HID_QUIRK_NOGET }, |
1573 | { USB_VENDOR_ID_TANGTOP, USB_DEVICE_ID_TANGTOP_USBPS2, HID_QUIRK_NOGET }, | 1580 | { USB_VENDOR_ID_TANGTOP, USB_DEVICE_ID_TANGTOP_USBPS2, HID_QUIRK_NOGET }, |
1581 | { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_DUAL_USB_JOYPAD, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, | ||
1574 | 1582 | ||
1575 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_POWERMOUSE, HID_QUIRK_2WHEEL_POWERMOUSE }, | 1583 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_POWERMOUSE, HID_QUIRK_2WHEEL_POWERMOUSE }, |
1576 | { USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU, HID_QUIRK_2WHEEL_MOUSE_HACK_7 }, | 1584 | { USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU, HID_QUIRK_2WHEEL_MOUSE_HACK_7 }, |
diff --git a/drivers/usb/misc/Kconfig b/drivers/usb/misc/Kconfig index 6649531fa824..8ba6a701e9c1 100644 --- a/drivers/usb/misc/Kconfig +++ b/drivers/usb/misc/Kconfig | |||
@@ -141,7 +141,7 @@ source "drivers/usb/misc/sisusbvga/Kconfig" | |||
141 | 141 | ||
142 | config USB_LD | 142 | config USB_LD |
143 | tristate "USB LD driver" | 143 | tristate "USB LD driver" |
144 | depends on USB && EXPERIMENTAL | 144 | depends on USB |
145 | help | 145 | help |
146 | This driver is for generic USB devices that use interrupt transfers, | 146 | This driver is for generic USB devices that use interrupt transfers, |
147 | like LD Didactic's USB devices. | 147 | like LD Didactic's USB devices. |
diff --git a/drivers/usb/misc/ldusb.c b/drivers/usb/misc/ldusb.c index 331d4ae949ed..e2d1198623eb 100644 --- a/drivers/usb/misc/ldusb.c +++ b/drivers/usb/misc/ldusb.c | |||
@@ -24,6 +24,7 @@ | |||
24 | * V0.1 (mh) Initial version | 24 | * V0.1 (mh) Initial version |
25 | * V0.11 (mh) Added raw support for HID 1.0 devices (no interrupt out endpoint) | 25 | * V0.11 (mh) Added raw support for HID 1.0 devices (no interrupt out endpoint) |
26 | * V0.12 (mh) Added kmalloc check for string buffer | 26 | * V0.12 (mh) Added kmalloc check for string buffer |
27 | * V0.13 (mh) Added support for LD X-Ray and Machine Test System | ||
27 | */ | 28 | */ |
28 | 29 | ||
29 | #include <linux/config.h> | 30 | #include <linux/config.h> |
@@ -40,17 +41,20 @@ | |||
40 | 41 | ||
41 | /* Define these values to match your devices */ | 42 | /* Define these values to match your devices */ |
42 | #define USB_VENDOR_ID_LD 0x0f11 /* USB Vendor ID of LD Didactic GmbH */ | 43 | #define USB_VENDOR_ID_LD 0x0f11 /* USB Vendor ID of LD Didactic GmbH */ |
43 | #define USB_DEVICE_ID_CASSY 0x1000 /* USB Product ID for all CASSY-S modules */ | 44 | #define USB_DEVICE_ID_LD_CASSY 0x1000 /* USB Product ID of CASSY-S */ |
44 | #define USB_DEVICE_ID_POCKETCASSY 0x1010 /* USB Product ID for Pocket-CASSY */ | 45 | #define USB_DEVICE_ID_LD_POCKETCASSY 0x1010 /* USB Product ID of Pocket-CASSY */ |
45 | #define USB_DEVICE_ID_MOBILECASSY 0x1020 /* USB Product ID for Mobile-CASSY */ | 46 | #define USB_DEVICE_ID_LD_MOBILECASSY 0x1020 /* USB Product ID of Mobile-CASSY */ |
46 | #define USB_DEVICE_ID_JWM 0x1080 /* USB Product ID for Joule and Wattmeter */ | 47 | #define USB_DEVICE_ID_LD_JWM 0x1080 /* USB Product ID of Joule and Wattmeter */ |
47 | #define USB_DEVICE_ID_DMMP 0x1081 /* USB Product ID for Digital Multimeter P (reserved) */ | 48 | #define USB_DEVICE_ID_LD_DMMP 0x1081 /* USB Product ID of Digital Multimeter P (reserved) */ |
48 | #define USB_DEVICE_ID_UMIP 0x1090 /* USB Product ID for UMI P */ | 49 | #define USB_DEVICE_ID_LD_UMIP 0x1090 /* USB Product ID of UMI P */ |
49 | #define USB_DEVICE_ID_VIDEOCOM 0x1200 /* USB Product ID for VideoCom */ | 50 | #define USB_DEVICE_ID_LD_XRAY1 0x1100 /* USB Product ID of X-Ray Apparatus */ |
50 | #define USB_DEVICE_ID_COM3LAB 0x2000 /* USB Product ID for COM3LAB */ | 51 | #define USB_DEVICE_ID_LD_XRAY2 0x1101 /* USB Product ID of X-Ray Apparatus */ |
51 | #define USB_DEVICE_ID_TELEPORT 0x2010 /* USB Product ID for Terminal Adapter */ | 52 | #define USB_DEVICE_ID_LD_VIDEOCOM 0x1200 /* USB Product ID of VideoCom */ |
52 | #define USB_DEVICE_ID_NETWORKANALYSER 0x2020 /* USB Product ID for Network Analyser */ | 53 | #define USB_DEVICE_ID_LD_COM3LAB 0x2000 /* USB Product ID of COM3LAB */ |
53 | #define USB_DEVICE_ID_POWERCONTROL 0x2030 /* USB Product ID for Controlling device for Power Electronics */ | 54 | #define USB_DEVICE_ID_LD_TELEPORT 0x2010 /* USB Product ID of Terminal Adapter */ |
55 | #define USB_DEVICE_ID_LD_NETWORKANALYSER 0x2020 /* USB Product ID of Network Analyser */ | ||
56 | #define USB_DEVICE_ID_LD_POWERCONTROL 0x2030 /* USB Product ID of Converter Control Unit */ | ||
57 | #define USB_DEVICE_ID_LD_MACHINETEST 0x2040 /* USB Product ID of Machine Test System */ | ||
54 | 58 | ||
55 | #define USB_VENDOR_ID_VERNIER 0x08f7 | 59 | #define USB_VENDOR_ID_VERNIER 0x08f7 |
56 | #define USB_DEVICE_ID_VERNIER_LABPRO 0x0001 | 60 | #define USB_DEVICE_ID_VERNIER_LABPRO 0x0001 |
@@ -67,17 +71,20 @@ | |||
67 | 71 | ||
68 | /* table of devices that work with this driver */ | 72 | /* table of devices that work with this driver */ |
69 | static struct usb_device_id ld_usb_table [] = { | 73 | static struct usb_device_id ld_usb_table [] = { |
70 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_CASSY) }, | 74 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CASSY) }, |
71 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_POCKETCASSY) }, | 75 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POCKETCASSY) }, |
72 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_MOBILECASSY) }, | 76 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MOBILECASSY) }, |
73 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_JWM) }, | 77 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_JWM) }, |
74 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_DMMP) }, | 78 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_DMMP) }, |
75 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_UMIP) }, | 79 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_UMIP) }, |
76 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_VIDEOCOM) }, | 80 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_XRAY1) }, |
77 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_COM3LAB) }, | 81 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_XRAY2) }, |
78 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_TELEPORT) }, | 82 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_VIDEOCOM) }, |
79 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_NETWORKANALYSER) }, | 83 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_COM3LAB) }, |
80 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_POWERCONTROL) }, | 84 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_TELEPORT) }, |
85 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_NETWORKANALYSER) }, | ||
86 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POWERCONTROL) }, | ||
87 | { USB_DEVICE(USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MACHINETEST) }, | ||
81 | { USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LABPRO) }, | 88 | { USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LABPRO) }, |
82 | { USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_GOTEMP) }, | 89 | { USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_GOTEMP) }, |
83 | { USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_SKIP) }, | 90 | { USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_SKIP) }, |
@@ -85,7 +92,7 @@ static struct usb_device_id ld_usb_table [] = { | |||
85 | { } /* Terminating entry */ | 92 | { } /* Terminating entry */ |
86 | }; | 93 | }; |
87 | MODULE_DEVICE_TABLE(usb, ld_usb_table); | 94 | MODULE_DEVICE_TABLE(usb, ld_usb_table); |
88 | MODULE_VERSION("V0.12"); | 95 | MODULE_VERSION("V0.13"); |
89 | MODULE_AUTHOR("Michael Hund <mhund@ld-didactic.de>"); | 96 | MODULE_AUTHOR("Michael Hund <mhund@ld-didactic.de>"); |
90 | MODULE_DESCRIPTION("LD USB Driver"); | 97 | MODULE_DESCRIPTION("LD USB Driver"); |
91 | MODULE_LICENSE("GPL"); | 98 | MODULE_LICENSE("GPL"); |
@@ -632,8 +639,8 @@ static int ld_usb_probe(struct usb_interface *intf, const struct usb_device_id * | |||
632 | 639 | ||
633 | /* workaround for early firmware versions on fast computers */ | 640 | /* workaround for early firmware versions on fast computers */ |
634 | if ((le16_to_cpu(udev->descriptor.idVendor) == USB_VENDOR_ID_LD) && | 641 | if ((le16_to_cpu(udev->descriptor.idVendor) == USB_VENDOR_ID_LD) && |
635 | ((le16_to_cpu(udev->descriptor.idProduct) == USB_DEVICE_ID_CASSY) || | 642 | ((le16_to_cpu(udev->descriptor.idProduct) == USB_DEVICE_ID_LD_CASSY) || |
636 | (le16_to_cpu(udev->descriptor.idProduct) == USB_DEVICE_ID_COM3LAB)) && | 643 | (le16_to_cpu(udev->descriptor.idProduct) == USB_DEVICE_ID_LD_COM3LAB)) && |
637 | (le16_to_cpu(udev->descriptor.bcdDevice) <= 0x103)) { | 644 | (le16_to_cpu(udev->descriptor.bcdDevice) <= 0x103)) { |
638 | buffer = kmalloc(256, GFP_KERNEL); | 645 | buffer = kmalloc(256, GFP_KERNEL); |
639 | if (buffer == NULL) { | 646 | if (buffer == NULL) { |
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index f2b4ca8692d8..c145e1ed8429 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c | |||
@@ -469,8 +469,14 @@ static struct usb_device_id id_table_combined [] = { | |||
469 | { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_7_PID) }, | 469 | { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_7_PID) }, |
470 | { USB_DEVICE(MOBILITY_VID, MOBILITY_USB_SERIAL_PID) }, | 470 | { USB_DEVICE(MOBILITY_VID, MOBILITY_USB_SERIAL_PID) }, |
471 | { USB_DEVICE(FTDI_VID, FTDI_ACTIVE_ROBOTS_PID) }, | 471 | { USB_DEVICE(FTDI_VID, FTDI_ACTIVE_ROBOTS_PID) }, |
472 | { USB_DEVICE(FTDI_VID, FTDI_MHAM_KW_PID) }, | ||
473 | { USB_DEVICE(FTDI_VID, FTDI_MHAM_YS_PID) }, | ||
472 | { USB_DEVICE(FTDI_VID, FTDI_MHAM_Y6_PID) }, | 474 | { USB_DEVICE(FTDI_VID, FTDI_MHAM_Y6_PID) }, |
473 | { USB_DEVICE(FTDI_VID, FTDI_MHAM_Y8_PID) }, | 475 | { USB_DEVICE(FTDI_VID, FTDI_MHAM_Y8_PID) }, |
476 | { USB_DEVICE(FTDI_VID, FTDI_MHAM_IC_PID) }, | ||
477 | { USB_DEVICE(FTDI_VID, FTDI_MHAM_DB9_PID) }, | ||
478 | { USB_DEVICE(FTDI_VID, FTDI_MHAM_RS232_PID) }, | ||
479 | { USB_DEVICE(FTDI_VID, FTDI_MHAM_Y9_PID) }, | ||
474 | { USB_DEVICE(FTDI_VID, FTDI_TERATRONIK_VCP_PID) }, | 480 | { USB_DEVICE(FTDI_VID, FTDI_TERATRONIK_VCP_PID) }, |
475 | { USB_DEVICE(FTDI_VID, FTDI_TERATRONIK_D2XX_PID) }, | 481 | { USB_DEVICE(FTDI_VID, FTDI_TERATRONIK_D2XX_PID) }, |
476 | { USB_DEVICE(EVOLUTION_VID, EVOLUTION_ER1_PID) }, | 482 | { USB_DEVICE(EVOLUTION_VID, EVOLUTION_ER1_PID) }, |
diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h index ca40f16370f1..bdef3b8c731f 100644 --- a/drivers/usb/serial/ftdi_sio.h +++ b/drivers/usb/serial/ftdi_sio.h | |||
@@ -333,10 +333,18 @@ | |||
333 | 333 | ||
334 | /* | 334 | /* |
335 | * microHAM product IDs (http://www.microham.com). | 335 | * microHAM product IDs (http://www.microham.com). |
336 | * Submitted by Justin Burket (KL1RL) <zorton@jtan.com>. | 336 | * Submitted by Justin Burket (KL1RL) <zorton@jtan.com> |
337 | * and Mike Studer (K6EEP) <k6eep@hamsoftware.org>. | ||
338 | * Ian Abbott <abbotti@mev.co.uk> added a few more from the driver INF file. | ||
337 | */ | 339 | */ |
340 | #define FTDI_MHAM_KW_PID 0xEEE8 /* USB-KW interface */ | ||
341 | #define FTDI_MHAM_YS_PID 0xEEE9 /* USB-YS interface */ | ||
338 | #define FTDI_MHAM_Y6_PID 0xEEEA /* USB-Y6 interface */ | 342 | #define FTDI_MHAM_Y6_PID 0xEEEA /* USB-Y6 interface */ |
339 | #define FTDI_MHAM_Y8_PID 0xEEEB /* USB-Y8 interface */ | 343 | #define FTDI_MHAM_Y8_PID 0xEEEB /* USB-Y8 interface */ |
344 | #define FTDI_MHAM_IC_PID 0xEEEC /* USB-IC interface */ | ||
345 | #define FTDI_MHAM_DB9_PID 0xEEED /* USB-DB9 interface */ | ||
346 | #define FTDI_MHAM_RS232_PID 0xEEEE /* USB-RS232 interface */ | ||
347 | #define FTDI_MHAM_Y9_PID 0xEEEF /* USB-Y9 interface */ | ||
340 | 348 | ||
341 | /* | 349 | /* |
342 | * Active Robots product ids. | 350 | * Active Robots product ids. |
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c index e8e575e037c1..37c81c08faad 100644 --- a/drivers/usb/serial/pl2303.c +++ b/drivers/usb/serial/pl2303.c | |||
@@ -73,9 +73,10 @@ static struct usb_device_id id_table [] = { | |||
73 | { USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_X65) }, | 73 | { USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_X65) }, |
74 | { USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_X75) }, | 74 | { USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_X75) }, |
75 | { USB_DEVICE(SYNTECH_VENDOR_ID, SYNTECH_PRODUCT_ID) }, | 75 | { USB_DEVICE(SYNTECH_VENDOR_ID, SYNTECH_PRODUCT_ID) }, |
76 | { USB_DEVICE(NOKIA_CA42_VENDOR_ID, NOKIA_CA42_PRODUCT_ID ) }, | 76 | { USB_DEVICE(NOKIA_CA42_VENDOR_ID, NOKIA_CA42_PRODUCT_ID) }, |
77 | { USB_DEVICE(CA_42_CA42_VENDOR_ID, CA_42_CA42_PRODUCT_ID ) }, | 77 | { USB_DEVICE(CA_42_CA42_VENDOR_ID, CA_42_CA42_PRODUCT_ID) }, |
78 | { USB_DEVICE(SAGEM_VENDOR_ID, SAGEM_PRODUCT_ID) }, | 78 | { USB_DEVICE(SAGEM_VENDOR_ID, SAGEM_PRODUCT_ID) }, |
79 | { USB_DEVICE(LEADTEK_VENDOR_ID, LEADTEK_9531_PRODUCT_ID) }, | ||
79 | { } /* Terminating entry */ | 80 | { } /* Terminating entry */ |
80 | }; | 81 | }; |
81 | 82 | ||
diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h index 1807087a76e3..9bc4755162ad 100644 --- a/drivers/usb/serial/pl2303.h +++ b/drivers/usb/serial/pl2303.h | |||
@@ -71,3 +71,7 @@ | |||
71 | 71 | ||
72 | #define SAGEM_VENDOR_ID 0x079b | 72 | #define SAGEM_VENDOR_ID 0x079b |
73 | #define SAGEM_PRODUCT_ID 0x0027 | 73 | #define SAGEM_PRODUCT_ID 0x0027 |
74 | |||
75 | /* Leadtek GPS 9531 (ID 0413:2101) */ | ||
76 | #define LEADTEK_VENDOR_ID 0x0413 | ||
77 | #define LEADTEK_9531_PRODUCT_ID 0x2101 | ||
diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c index 4dd6865d32b0..b5c96e74a903 100644 --- a/drivers/usb/serial/usb-serial.c +++ b/drivers/usb/serial/usb-serial.c | |||
@@ -242,8 +242,10 @@ static void serial_close(struct tty_struct *tty, struct file * filp) | |||
242 | 242 | ||
243 | down(&port->sem); | 243 | down(&port->sem); |
244 | 244 | ||
245 | if (port->open_count == 0) | 245 | if (port->open_count == 0) { |
246 | goto out; | 246 | up(&port->sem); |
247 | return; | ||
248 | } | ||
247 | 249 | ||
248 | --port->open_count; | 250 | --port->open_count; |
249 | if (port->open_count == 0) { | 251 | if (port->open_count == 0) { |
@@ -260,10 +262,8 @@ static void serial_close(struct tty_struct *tty, struct file * filp) | |||
260 | module_put(port->serial->type->driver.owner); | 262 | module_put(port->serial->type->driver.owner); |
261 | } | 263 | } |
262 | 264 | ||
263 | kref_put(&port->serial->kref, destroy_serial); | ||
264 | |||
265 | out: | ||
266 | up(&port->sem); | 265 | up(&port->sem); |
266 | kref_put(&port->serial->kref, destroy_serial); | ||
267 | } | 267 | } |
268 | 268 | ||
269 | static int serial_write (struct tty_struct * tty, const unsigned char *buf, int count) | 269 | static int serial_write (struct tty_struct * tty, const unsigned char *buf, int count) |
diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c index bce3d55affd8..11a48d874752 100644 --- a/drivers/usb/serial/visor.c +++ b/drivers/usb/serial/visor.c | |||
@@ -69,6 +69,8 @@ static struct usb_device_id id_table [] = { | |||
69 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, | 69 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, |
70 | { USB_DEVICE(HANDSPRING_VENDOR_ID, HANDSPRING_TREO600_ID), | 70 | { USB_DEVICE(HANDSPRING_VENDOR_ID, HANDSPRING_TREO600_ID), |
71 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, | 71 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, |
72 | { USB_DEVICE(GSPDA_VENDOR_ID, GSPDA_XPLORE_M68_ID), | ||
73 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, | ||
72 | { USB_DEVICE(PALM_VENDOR_ID, PALM_M500_ID), | 74 | { USB_DEVICE(PALM_VENDOR_ID, PALM_M500_ID), |
73 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, | 75 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, |
74 | { USB_DEVICE(PALM_VENDOR_ID, PALM_M505_ID), | 76 | { USB_DEVICE(PALM_VENDOR_ID, PALM_M505_ID), |
@@ -139,6 +141,7 @@ static struct usb_device_id id_table_combined [] = { | |||
139 | { USB_DEVICE(HANDSPRING_VENDOR_ID, HANDSPRING_VISOR_ID) }, | 141 | { USB_DEVICE(HANDSPRING_VENDOR_ID, HANDSPRING_VISOR_ID) }, |
140 | { USB_DEVICE(HANDSPRING_VENDOR_ID, HANDSPRING_TREO_ID) }, | 142 | { USB_DEVICE(HANDSPRING_VENDOR_ID, HANDSPRING_TREO_ID) }, |
141 | { USB_DEVICE(HANDSPRING_VENDOR_ID, HANDSPRING_TREO600_ID) }, | 143 | { USB_DEVICE(HANDSPRING_VENDOR_ID, HANDSPRING_TREO600_ID) }, |
144 | { USB_DEVICE(GSPDA_VENDOR_ID, GSPDA_XPLORE_M68_ID) }, | ||
142 | { USB_DEVICE(PALM_VENDOR_ID, PALM_M500_ID) }, | 145 | { USB_DEVICE(PALM_VENDOR_ID, PALM_M500_ID) }, |
143 | { USB_DEVICE(PALM_VENDOR_ID, PALM_M505_ID) }, | 146 | { USB_DEVICE(PALM_VENDOR_ID, PALM_M505_ID) }, |
144 | { USB_DEVICE(PALM_VENDOR_ID, PALM_M515_ID) }, | 147 | { USB_DEVICE(PALM_VENDOR_ID, PALM_M515_ID) }, |
diff --git a/drivers/usb/serial/visor.h b/drivers/usb/serial/visor.h index b84d1cb4c693..765118d83fb6 100644 --- a/drivers/usb/serial/visor.h +++ b/drivers/usb/serial/visor.h | |||
@@ -36,6 +36,9 @@ | |||
36 | #define PALM_ZIRE_ID 0x0070 | 36 | #define PALM_ZIRE_ID 0x0070 |
37 | #define PALM_M100_ID 0x0080 | 37 | #define PALM_M100_ID 0x0080 |
38 | 38 | ||
39 | #define GSPDA_VENDOR_ID 0x115e | ||
40 | #define GSPDA_XPLORE_M68_ID 0xf100 | ||
41 | |||
39 | #define SONY_VENDOR_ID 0x054C | 42 | #define SONY_VENDOR_ID 0x054C |
40 | #define SONY_CLIE_3_5_ID 0x0038 | 43 | #define SONY_CLIE_3_5_ID 0x0038 |
41 | #define SONY_CLIE_4_0_ID 0x0066 | 44 | #define SONY_CLIE_4_0_ID 0x0066 |
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h index ee958f986eb8..31ca92056c27 100644 --- a/drivers/usb/storage/unusual_devs.h +++ b/drivers/usb/storage/unusual_devs.h | |||
@@ -106,6 +106,13 @@ UNUSUAL_DEV( 0x0411, 0x001c, 0x0113, 0x0113, | |||
106 | US_SC_DEVICE, US_PR_DEVICE, NULL, | 106 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
107 | US_FL_FIX_INQUIRY ), | 107 | US_FL_FIX_INQUIRY ), |
108 | 108 | ||
109 | /* Reported by Christian Leber <christian@leber.de> */ | ||
110 | UNUSUAL_DEV( 0x0419, 0xaaf5, 0x0100, 0x0100, | ||
111 | "TrekStor", | ||
112 | "i.Beat 115 2.0", | ||
113 | US_SC_DEVICE, US_PR_DEVICE, NULL, | ||
114 | US_FL_IGNORE_RESIDUE | US_FL_NOT_LOCKABLE ), | ||
115 | |||
109 | /* Reported by Stefan Werner <dustbln@gmx.de> */ | 116 | /* Reported by Stefan Werner <dustbln@gmx.de> */ |
110 | UNUSUAL_DEV( 0x0419, 0xaaf6, 0x0100, 0x0100, | 117 | UNUSUAL_DEV( 0x0419, 0xaaf6, 0x0100, 0x0100, |
111 | "TrekStor", | 118 | "TrekStor", |
@@ -127,6 +134,14 @@ UNUSUAL_DEV( 0x0436, 0x0005, 0x0100, 0x0100, | |||
127 | US_SC_SCSI, US_PR_DPCM_USB, NULL, 0 ), | 134 | US_SC_SCSI, US_PR_DPCM_USB, NULL, 0 ), |
128 | #endif | 135 | #endif |
129 | 136 | ||
137 | /* Patch submitted by Daniel Drake <dsd@gentoo.org> | ||
138 | * Device reports nonsense bInterfaceProtocol 6 when connected over USB2 */ | ||
139 | UNUSUAL_DEV( 0x0451, 0x5416, 0x0100, 0x0100, | ||
140 | "Neuros Audio", | ||
141 | "USB 2.0 HD 2.5", | ||
142 | US_SC_DEVICE, US_PR_BULK, NULL, | ||
143 | US_FL_NEED_OVERRIDE ), | ||
144 | |||
130 | /* | 145 | /* |
131 | * Pete Zaitcev <zaitcev@yahoo.com>, from Patrick C. F. Ernzer, bz#162559. | 146 | * Pete Zaitcev <zaitcev@yahoo.com>, from Patrick C. F. Ernzer, bz#162559. |
132 | * The key does not actually break, but it returns zero sense which | 147 | * The key does not actually break, but it returns zero sense which |
@@ -137,13 +152,16 @@ UNUSUAL_DEV( 0x0457, 0x0150, 0x0100, 0x0100, | |||
137 | "USB Mass Storage Device", | 152 | "USB Mass Storage Device", |
138 | US_SC_DEVICE, US_PR_DEVICE, NULL, US_FL_NOT_LOCKABLE ), | 153 | US_SC_DEVICE, US_PR_DEVICE, NULL, US_FL_NOT_LOCKABLE ), |
139 | 154 | ||
140 | /* Patch submitted by Daniel Drake <dsd@gentoo.org> | 155 | /* |
141 | * Device reports nonsense bInterfaceProtocol 6 when connected over USB2 */ | 156 | * Bohdan Linda <bohdan.linda@gmail.com> |
142 | UNUSUAL_DEV( 0x0451, 0x5416, 0x0100, 0x0100, | 157 | * 1GB USB sticks MyFlash High Speed. I have restricted |
143 | "Neuros Audio", | 158 | * the revision to my model only |
144 | "USB 2.0 HD 2.5", | 159 | */ |
145 | US_SC_DEVICE, US_PR_BULK, NULL, | 160 | UNUSUAL_DEV( 0x0457, 0x0151, 0x0100, 0x0100, |
146 | US_FL_NEED_OVERRIDE ), | 161 | "USB 2.0", |
162 | "Flash Disk", | ||
163 | US_SC_DEVICE, US_PR_DEVICE, NULL, | ||
164 | US_FL_NOT_LOCKABLE ), | ||
147 | 165 | ||
148 | UNUSUAL_DEV( 0x045a, 0x5210, 0x0101, 0x0101, | 166 | UNUSUAL_DEV( 0x045a, 0x5210, 0x0101, 0x0101, |
149 | "Rio", | 167 | "Rio", |
@@ -735,6 +753,13 @@ UNUSUAL_DEV( 0x0693, 0x0005, 0x0100, 0x0100, | |||
735 | "Flashgate", | 753 | "Flashgate", |
736 | US_SC_SCSI, US_PR_BULK, NULL, 0 ), | 754 | US_SC_SCSI, US_PR_BULK, NULL, 0 ), |
737 | 755 | ||
756 | /* Reported by David Hamilton <niftimusmaximus@lycos.com> */ | ||
757 | UNUSUAL_DEV( 0x069b, 0x3004, 0x0001, 0x0001, | ||
758 | "Thomson Multimedia Inc.", | ||
759 | "RCA RD1080 MP3 Player", | ||
760 | US_SC_DEVICE, US_PR_DEVICE, NULL, | ||
761 | US_FL_FIX_CAPACITY ), | ||
762 | |||
738 | UNUSUAL_DEV( 0x0781, 0x0001, 0x0200, 0x0200, | 763 | UNUSUAL_DEV( 0x0781, 0x0001, 0x0200, 0x0200, |
739 | "Sandisk", | 764 | "Sandisk", |
740 | "ImageMate SDDR-05a", | 765 | "ImageMate SDDR-05a", |
@@ -946,6 +971,12 @@ UNUSUAL_DEV( 0x084d, 0x0011, 0x0110, 0x0110, | |||
946 | US_SC_DEVICE, US_PR_DEVICE, NULL, | 971 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
947 | US_FL_BULK32), | 972 | US_FL_BULK32), |
948 | 973 | ||
974 | /* Submitted by Jan De Luyck <lkml@kcore.org> */ | ||
975 | UNUSUAL_DEV( 0x08bd, 0x1100, 0x0000, 0x0000, | ||
976 | "CITIZEN", | ||
977 | "X1DE-USB", | ||
978 | US_SC_DEVICE, US_PR_DEVICE, NULL, | ||
979 | US_FL_SINGLE_LUN), | ||
949 | 980 | ||
950 | /* Entry needed for flags. Moreover, all devices with this ID use | 981 | /* Entry needed for flags. Moreover, all devices with this ID use |
951 | * bulk-only transport, but _some_ falsely report Control/Bulk instead. | 982 | * bulk-only transport, but _some_ falsely report Control/Bulk instead. |
@@ -1085,6 +1116,13 @@ UNUSUAL_DEV( 0x0dda, 0x0301, 0x0012, 0x0012, | |||
1085 | US_SC_DEVICE, US_PR_DEVICE, NULL, | 1116 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
1086 | US_FL_IGNORE_RESIDUE ), | 1117 | US_FL_IGNORE_RESIDUE ), |
1087 | 1118 | ||
1119 | /* Reported by Jim McCloskey <mcclosk@ucsc.edu> */ | ||
1120 | UNUSUAL_DEV( 0x0e21, 0x0520, 0x0100, 0x0100, | ||
1121 | "Cowon Systems", | ||
1122 | "iAUDIO M5", | ||
1123 | US_SC_DEVICE, US_PR_BULK, NULL, | ||
1124 | 0 ), | ||
1125 | |||
1088 | /* Submitted by Antoine Mairesse <antoine.mairesse@free.fr> */ | 1126 | /* Submitted by Antoine Mairesse <antoine.mairesse@free.fr> */ |
1089 | UNUSUAL_DEV( 0x0ed1, 0x6660, 0x0100, 0x0300, | 1127 | UNUSUAL_DEV( 0x0ed1, 0x6660, 0x0100, 0x0300, |
1090 | "USB", | 1128 | "USB", |
@@ -1162,6 +1200,13 @@ UNUSUAL_DEV( 0x55aa, 0xa103, 0x0000, 0x9999, | |||
1162 | US_FL_SINGLE_LUN), | 1200 | US_FL_SINGLE_LUN), |
1163 | #endif | 1201 | #endif |
1164 | 1202 | ||
1203 | /* Reported by Andrew Simmons <andrew.simmons@gmail.com> */ | ||
1204 | UNUSUAL_DEV( 0xed06, 0x4500, 0x0001, 0x0001, | ||
1205 | "DataStor", | ||
1206 | "USB4500 FW1.04", | ||
1207 | US_SC_DEVICE, US_PR_DEVICE, NULL, | ||
1208 | US_FL_FIX_CAPACITY), | ||
1209 | |||
1165 | /* Control/Bulk transport for all SubClass values */ | 1210 | /* Control/Bulk transport for all SubClass values */ |
1166 | USUAL_DEV(US_SC_RBC, US_PR_CB, USB_US_TYPE_STOR), | 1211 | USUAL_DEV(US_SC_RBC, US_PR_CB, USB_US_TYPE_STOR), |
1167 | USUAL_DEV(US_SC_8020, US_PR_CB, USB_US_TYPE_STOR), | 1212 | USUAL_DEV(US_SC_8020, US_PR_CB, USB_US_TYPE_STOR), |