Commit 4e9a4b71 authored by Linus Torvalds's avatar Linus Torvalds

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:
  [PATCH] USB: ftdi_sio: add support for ASK RDR 400 series card reader
  [PATCH] USB: ftdi_sio: Adds support for iPlus device.
  [PATCH] USB: ftdi_sio vendor code for RR-CirKits LocoBuffer USB
  [PATCH] USB: Use new PCI_CLASS_SERIAL_USB_* defines
  [PATCH] USB: net2280: set driver data before it is used
  [PATCH] USB: net2280: check for shared IRQs
  [PATCH] USB: net2280: send 0-length packets for ep0
  [PATCH] USB: net2280: Handle STALLs for 0-length control-IN requests
  [PATCH] USB: storage: atmel unusual dev update
  [PATCH] USB: Storage: unusual devs update
  [PATCH] USB: add new iTegno usb CDMA 1x card support for pl2303
  [PATCH] USB: Resource leak fix for whiteheat driver
parents 2cb14596 7e0258fd
...@@ -1097,7 +1097,7 @@ pmac_pci_enable_device_hook(struct pci_dev *dev, int initial) ...@@ -1097,7 +1097,7 @@ pmac_pci_enable_device_hook(struct pci_dev *dev, int initial)
* (iBook second controller) * (iBook second controller)
*/ */
if (dev->vendor == PCI_VENDOR_ID_APPLE if (dev->vendor == PCI_VENDOR_ID_APPLE
&& (dev->class == ((PCI_CLASS_SERIAL_USB << 8) | 0x10)) && dev->class == PCI_CLASS_SERIAL_USB_OHCI
&& !node) { && !node) {
printk(KERN_INFO "Apple USB OHCI %s disabled by firmware\n", printk(KERN_INFO "Apple USB OHCI %s disabled by firmware\n",
pci_name(dev)); pci_name(dev));
......
...@@ -2166,7 +2166,7 @@ static void handle_ep_small (struct net2280_ep *ep) ...@@ -2166,7 +2166,7 @@ static void handle_ep_small (struct net2280_ep *ep)
ep->stopped = 1; ep->stopped = 1;
set_halt (ep); set_halt (ep);
mode = 2; mode = 2;
} else if (!req && ep->stopped) } else if (!req && !ep->stopped)
write_fifo (ep, NULL); write_fifo (ep, NULL);
} }
} else { } else {
...@@ -2280,9 +2280,7 @@ static void handle_ep_small (struct net2280_ep *ep) ...@@ -2280,9 +2280,7 @@ static void handle_ep_small (struct net2280_ep *ep)
/* if we wrote it all, we're usually done */ /* if we wrote it all, we're usually done */
if (req->req.actual == req->req.length) { if (req->req.actual == req->req.length) {
if (ep->num == 0) { if (ep->num == 0) {
/* wait for control status */ /* send zlps until the status stage */
if (mode != 2)
req = NULL;
} else if (!req->req.zero || len != ep->ep.maxpacket) } else if (!req->req.zero || len != ep->ep.maxpacket)
mode = 2; mode = 2;
} }
...@@ -2744,6 +2742,10 @@ static irqreturn_t net2280_irq (int irq, void *_dev, struct pt_regs * r) ...@@ -2744,6 +2742,10 @@ static irqreturn_t net2280_irq (int irq, void *_dev, struct pt_regs * r)
{ {
struct net2280 *dev = _dev; struct net2280 *dev = _dev;
/* shared interrupt, not ours */
if (!(readl(&dev->regs->irqstat0) & (1 << INTA_ASSERTED)))
return IRQ_NONE;
spin_lock (&dev->lock); spin_lock (&dev->lock);
/* handle disconnect, dma, and more */ /* handle disconnect, dma, and more */
...@@ -2831,13 +2833,13 @@ static int net2280_probe (struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -2831,13 +2833,13 @@ static int net2280_probe (struct pci_dev *pdev, const struct pci_device_id *id)
} }
/* alloc, and start init */ /* alloc, and start init */
dev = kmalloc (sizeof *dev, SLAB_KERNEL); dev = kzalloc (sizeof *dev, SLAB_KERNEL);
if (dev == NULL){ if (dev == NULL){
retval = -ENOMEM; retval = -ENOMEM;
goto done; goto done;
} }
memset (dev, 0, sizeof *dev); pci_set_drvdata (pdev, dev);
spin_lock_init (&dev->lock); spin_lock_init (&dev->lock);
dev->pdev = pdev; dev->pdev = pdev;
dev->gadget.ops = &net2280_ops; dev->gadget.ops = &net2280_ops;
...@@ -2950,7 +2952,6 @@ static int net2280_probe (struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -2950,7 +2952,6 @@ static int net2280_probe (struct pci_dev *pdev, const struct pci_device_id *id)
dev->chiprev = get_idx_reg (dev->regs, REG_CHIPREV) & 0xffff; dev->chiprev = get_idx_reg (dev->regs, REG_CHIPREV) & 0xffff;
/* done */ /* done */
pci_set_drvdata (pdev, dev);
INFO (dev, "%s\n", driver_desc); INFO (dev, "%s\n", driver_desc);
INFO (dev, "irq %s, pci mem %p, chip rev %04x\n", INFO (dev, "irq %s, pci mem %p, chip rev %04x\n",
bufp, base, dev->chiprev); bufp, base, dev->chiprev);
......
...@@ -350,7 +350,7 @@ static const struct hc_driver ehci_pci_hc_driver = { ...@@ -350,7 +350,7 @@ static const struct hc_driver ehci_pci_hc_driver = {
/* PCI driver selection metadata; PCI hotplugging uses this */ /* PCI driver selection metadata; PCI hotplugging uses this */
static const struct pci_device_id pci_ids [] = { { static const struct pci_device_id pci_ids [] = { {
/* handle any USB 2.0 EHCI controller */ /* handle any USB 2.0 EHCI controller */
PCI_DEVICE_CLASS(((PCI_CLASS_SERIAL_USB << 8) | 0x20), ~0), PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_EHCI, ~0),
.driver_data = (unsigned long) &ehci_pci_hc_driver, .driver_data = (unsigned long) &ehci_pci_hc_driver,
}, },
{ /* end: all zeroes */ } { /* end: all zeroes */ }
......
...@@ -206,7 +206,7 @@ static const struct hc_driver ohci_pci_hc_driver = { ...@@ -206,7 +206,7 @@ static const struct hc_driver ohci_pci_hc_driver = {
static const struct pci_device_id pci_ids [] = { { static const struct pci_device_id pci_ids [] = { {
/* handle any USB OHCI controller */ /* handle any USB OHCI controller */
PCI_DEVICE_CLASS((PCI_CLASS_SERIAL_USB << 8) | 0x10, ~0), PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_OHCI, ~0),
.driver_data = (unsigned long) &ohci_pci_hc_driver, .driver_data = (unsigned long) &ohci_pci_hc_driver,
}, { /* end: all zeroes */ } }, { /* end: all zeroes */ }
}; };
......
...@@ -858,7 +858,7 @@ static const struct hc_driver uhci_driver = { ...@@ -858,7 +858,7 @@ static const struct hc_driver uhci_driver = {
static const struct pci_device_id uhci_pci_ids[] = { { static const struct pci_device_id uhci_pci_ids[] = { {
/* handle any USB UHCI controller */ /* handle any USB UHCI controller */
PCI_DEVICE_CLASS(((PCI_CLASS_SERIAL_USB << 8) | 0x00), ~0), PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_UHCI, ~0),
.driver_data = (unsigned long) &uhci_driver, .driver_data = (unsigned long) &uhci_driver,
}, { /* end: all zeroes */ } }, { /* end: all zeroes */ }
}; };
......
...@@ -308,6 +308,7 @@ static struct ftdi_sio_quirk ftdi_HE_TIRA1_quirk = { ...@@ -308,6 +308,7 @@ static struct ftdi_sio_quirk ftdi_HE_TIRA1_quirk = {
static struct usb_device_id id_table_combined [] = { static struct usb_device_id id_table_combined [] = {
{ USB_DEVICE(FTDI_VID, FTDI_IRTRANS_PID) }, { USB_DEVICE(FTDI_VID, FTDI_IRTRANS_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_IPLUS_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_SIO_PID) }, { USB_DEVICE(FTDI_VID, FTDI_SIO_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_8U232AM_PID) }, { USB_DEVICE(FTDI_VID, FTDI_8U232AM_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_8U232AM_ALT_PID) }, { USB_DEVICE(FTDI_VID, FTDI_8U232AM_ALT_PID) },
...@@ -493,6 +494,8 @@ static struct usb_device_id id_table_combined [] = { ...@@ -493,6 +494,8 @@ static struct usb_device_id id_table_combined [] = {
{ USB_DEVICE(FTDI_VID, FTDI_WESTREX_MODEL_777_PID) }, { USB_DEVICE(FTDI_VID, FTDI_WESTREX_MODEL_777_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_WESTREX_MODEL_8900F_PID) }, { USB_DEVICE(FTDI_VID, FTDI_WESTREX_MODEL_8900F_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_PCDJ_DAC2_PID) }, { USB_DEVICE(FTDI_VID, FTDI_PCDJ_DAC2_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_RRCIRKITS_LOCOBUFFER_PID) },
{ USB_DEVICE(FTDI_VID, FTDI_ASK_RDR400_PID) },
{ USB_DEVICE(ICOM_ID1_VID, ICOM_ID1_PID) }, { USB_DEVICE(ICOM_ID1_VID, ICOM_ID1_PID) },
{ USB_DEVICE(PAPOUCH_VID, PAPOUCH_TMU_PID) }, { USB_DEVICE(PAPOUCH_VID, PAPOUCH_TMU_PID) },
{ }, /* Optional parameter entry */ { }, /* Optional parameter entry */
......
...@@ -39,6 +39,9 @@ ...@@ -39,6 +39,9 @@
/* www.thoughttechnology.com/ TT-USB provide with procomp use ftdi_sio */ /* www.thoughttechnology.com/ TT-USB provide with procomp use ftdi_sio */
#define FTDI_TTUSB_PID 0xFF20 /* Product Id */ #define FTDI_TTUSB_PID 0xFF20 /* Product Id */
/* iPlus device */
#define FTDI_IPLUS_PID 0xD070 /* Product Id */
/* www.crystalfontz.com devices - thanx for providing free devices for evaluation ! */ /* www.crystalfontz.com devices - thanx for providing free devices for evaluation ! */
/* they use the ftdi chipset for the USB interface and the vendor id is the same */ /* they use the ftdi chipset for the USB interface and the vendor id is the same */
#define FTDI_XF_632_PID 0xFC08 /* 632: 16x2 Character Display */ #define FTDI_XF_632_PID 0xFC08 /* 632: 16x2 Character Display */
...@@ -152,6 +155,11 @@ ...@@ -152,6 +155,11 @@
#define ICOM_ID1_VID 0x0C26 #define ICOM_ID1_VID 0x0C26
#define ICOM_ID1_PID 0x0004 #define ICOM_ID1_PID 0x0004
/*
* ASK.fr devices
*/
#define FTDI_ASK_RDR400_PID 0xC991 /* ASK RDR 400 series card reader */
/* /*
* DSS-20 Sync Station for Sony Ericsson P800 * DSS-20 Sync Station for Sony Ericsson P800
*/ */
...@@ -399,6 +407,11 @@ ...@@ -399,6 +407,11 @@
#define FTDI_WESTREX_MODEL_777_PID 0xDC00 /* Model 777 */ #define FTDI_WESTREX_MODEL_777_PID 0xDC00 /* Model 777 */
#define FTDI_WESTREX_MODEL_8900F_PID 0xDC01 /* Model 8900F */ #define FTDI_WESTREX_MODEL_8900F_PID 0xDC01 /* Model 8900F */
/*
* RR-CirKits LocoBuffer USB (http://www.rr-cirkits.com)
*/
#define FTDI_RRCIRKITS_LOCOBUFFER_PID 0xc7d0 /* LocoBuffer USB */
/* /*
* Eclo (http://www.eclo.pt/) product IDs. * Eclo (http://www.eclo.pt/) product IDs.
* PID 0xEA90 submitted by Martin Grill. * PID 0xEA90 submitted by Martin Grill.
......
...@@ -61,6 +61,7 @@ static struct usb_device_id id_table [] = { ...@@ -61,6 +61,7 @@ static struct usb_device_id id_table [] = {
{ USB_DEVICE(ELCOM_VENDOR_ID, ELCOM_PRODUCT_ID) }, { USB_DEVICE(ELCOM_VENDOR_ID, ELCOM_PRODUCT_ID) },
{ USB_DEVICE(ELCOM_VENDOR_ID, ELCOM_PRODUCT_ID_UCSGT) }, { USB_DEVICE(ELCOM_VENDOR_ID, ELCOM_PRODUCT_ID_UCSGT) },
{ USB_DEVICE(ITEGNO_VENDOR_ID, ITEGNO_PRODUCT_ID) }, { USB_DEVICE(ITEGNO_VENDOR_ID, ITEGNO_PRODUCT_ID) },
{ USB_DEVICE(ITEGNO_VENDOR_ID, ITEGNO_PRODUCT_ID_2080) },
{ USB_DEVICE(MA620_VENDOR_ID, MA620_PRODUCT_ID) }, { USB_DEVICE(MA620_VENDOR_ID, MA620_PRODUCT_ID) },
{ USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID) }, { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID) },
{ USB_DEVICE(TRIPP_VENDOR_ID, TRIPP_PRODUCT_ID) }, { USB_DEVICE(TRIPP_VENDOR_ID, TRIPP_PRODUCT_ID) },
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#define ITEGNO_VENDOR_ID 0x0eba #define ITEGNO_VENDOR_ID 0x0eba
#define ITEGNO_PRODUCT_ID 0x1080 #define ITEGNO_PRODUCT_ID 0x1080
#define ITEGNO_PRODUCT_ID_2080 0x2080
#define MA620_VENDOR_ID 0x0df7 #define MA620_VENDOR_ID 0x0df7
#define MA620_PRODUCT_ID 0x0620 #define MA620_PRODUCT_ID 0x0620
......
...@@ -508,6 +508,7 @@ no_firmware: ...@@ -508,6 +508,7 @@ no_firmware:
err("%s: Unable to retrieve firmware version, try replugging\n", serial->type->description); err("%s: Unable to retrieve firmware version, try replugging\n", serial->type->description);
err("%s: If the firmware is not running (status led not blinking)\n", serial->type->description); err("%s: If the firmware is not running (status led not blinking)\n", serial->type->description);
err("%s: please contact support@connecttech.com\n", serial->type->description); err("%s: please contact support@connecttech.com\n", serial->type->description);
kfree(result);
return -ENODEV; return -ENODEV;
no_command_private: no_command_private:
......
...@@ -411,7 +411,7 @@ UNUSUAL_DEV( 0x050d, 0x0115, 0x0133, 0x0133, ...@@ -411,7 +411,7 @@ UNUSUAL_DEV( 0x050d, 0x0115, 0x0133, 0x0133,
UNUSUAL_DEV( 0x0525, 0xa140, 0x0100, 0x0100, UNUSUAL_DEV( 0x0525, 0xa140, 0x0100, 0x0100,
"Iomega", "Iomega",
"USB Clik! 40", "USB Clik! 40",
US_SC_8070, US_PR_BULK, NULL, US_SC_8070, US_PR_DEVICE, NULL,
US_FL_FIX_INQUIRY ), US_FL_FIX_INQUIRY ),
/* Yakumo Mega Image 37 /* Yakumo Mega Image 37
...@@ -773,6 +773,13 @@ UNUSUAL_DEV( 0x069b, 0x3004, 0x0001, 0x0001, ...@@ -773,6 +773,13 @@ UNUSUAL_DEV( 0x069b, 0x3004, 0x0001, 0x0001,
US_SC_DEVICE, US_PR_DEVICE, NULL, US_SC_DEVICE, US_PR_DEVICE, NULL,
US_FL_FIX_CAPACITY ), US_FL_FIX_CAPACITY ),
/* Reported by Olivier Blondeau <zeitoun@gmail.com> */
UNUSUAL_DEV( 0x0727, 0x0306, 0x0100, 0x0100,
"ATMEL",
"SND1 Storage",
US_SC_DEVICE, US_PR_DEVICE, NULL,
US_FL_IGNORE_RESIDUE),
/* Submitted by Roman Hodek <roman@hodek.net> */ /* Submitted by Roman Hodek <roman@hodek.net> */
UNUSUAL_DEV( 0x0781, 0x0001, 0x0200, 0x0200, UNUSUAL_DEV( 0x0781, 0x0001, 0x0200, 0x0200,
"Sandisk", "Sandisk",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment