Commit 9597362d authored by Linus Torvalds's avatar Linus Torvalds

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

* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6:
  USB: ohci: fix 2 timers to fire at jiffies + 1s
  USB: Allow initialization of broken keyspan serial adapters.
  USB: fix bug in sg initialization in usbtest
  USB: serial: fix regression in Visor/Palm OS module for kernels >= 2.6.24
  USB: cp2101: Add identifiers for the Telegesys ETRX2USB
  USB: serial: ti_usb_3410_5052: Correct TUSB3410 endpoint requirements.
  USB: another ehci_iaa_watchdog fix
parents 06f11f37 9cebcdc7
...@@ -135,8 +135,6 @@ static int ehci_bus_suspend (struct usb_hcd *hcd) ...@@ -135,8 +135,6 @@ static int ehci_bus_suspend (struct usb_hcd *hcd)
hcd->state = HC_STATE_QUIESCING; hcd->state = HC_STATE_QUIESCING;
} }
ehci->command = ehci_readl(ehci, &ehci->regs->command); ehci->command = ehci_readl(ehci, &ehci->regs->command);
if (ehci->reclaim)
end_unlink_async(ehci);
ehci_work(ehci); ehci_work(ehci);
/* Unlike other USB host controller types, EHCI doesn't have /* Unlike other USB host controller types, EHCI doesn't have
...@@ -180,6 +178,9 @@ static int ehci_bus_suspend (struct usb_hcd *hcd) ...@@ -180,6 +178,9 @@ static int ehci_bus_suspend (struct usb_hcd *hcd)
ehci_halt (ehci); ehci_halt (ehci);
hcd->state = HC_STATE_SUSPENDED; hcd->state = HC_STATE_SUSPENDED;
if (ehci->reclaim)
end_unlink_async(ehci);
/* allow remote wakeup */ /* allow remote wakeup */
mask = INTR_MASK; mask = INTR_MASK;
if (!device_may_wakeup(&hcd->self.root_hub->dev)) if (!device_may_wakeup(&hcd->self.root_hub->dev))
......
...@@ -467,7 +467,7 @@ static void unlink_watchdog_func(unsigned long _ohci) ...@@ -467,7 +467,7 @@ static void unlink_watchdog_func(unsigned long _ohci)
out: out:
kfree(seen); kfree(seen);
if (ohci->eds_scheduled) if (ohci->eds_scheduled)
mod_timer(&ohci->unlink_watchdog, round_jiffies_relative(HZ)); mod_timer(&ohci->unlink_watchdog, round_jiffies(jiffies + HZ));
done: done:
spin_unlock_irqrestore(&ohci->lock, flags); spin_unlock_irqrestore(&ohci->lock, flags);
} }
......
...@@ -169,7 +169,7 @@ static int ed_schedule (struct ohci_hcd *ohci, struct ed *ed) ...@@ -169,7 +169,7 @@ static int ed_schedule (struct ohci_hcd *ohci, struct ed *ed)
if (quirk_zfmicro(ohci) if (quirk_zfmicro(ohci)
&& (ed->type == PIPE_INTERRUPT) && (ed->type == PIPE_INTERRUPT)
&& !(ohci->eds_scheduled++)) && !(ohci->eds_scheduled++))
mod_timer(&ohci->unlink_watchdog, round_jiffies_relative(HZ)); mod_timer(&ohci->unlink_watchdog, round_jiffies(jiffies + HZ));
wmb (); wmb ();
/* we care about rm_list when setting CLE/BLE in case the HC was at /* we care about rm_list when setting CLE/BLE in case the HC was at
......
...@@ -378,6 +378,7 @@ alloc_sglist (int nents, int max, int vary) ...@@ -378,6 +378,7 @@ alloc_sglist (int nents, int max, int vary)
sg = kmalloc (nents * sizeof *sg, GFP_KERNEL); sg = kmalloc (nents * sizeof *sg, GFP_KERNEL);
if (!sg) if (!sg)
return NULL; return NULL;
sg_init_table(sg, nents);
for (i = 0; i < nents; i++) { for (i = 0; i < nents; i++) {
char *buf; char *buf;
...@@ -390,7 +391,7 @@ alloc_sglist (int nents, int max, int vary) ...@@ -390,7 +391,7 @@ alloc_sglist (int nents, int max, int vary)
} }
/* kmalloc pages are always physically contiguous! */ /* kmalloc pages are always physically contiguous! */
sg_init_one(&sg[i], buf, size); sg_set_buf(&sg[i], buf, size);
switch (pattern) { switch (pattern) {
case 0: case 0:
......
...@@ -75,6 +75,7 @@ static struct usb_device_id id_table [] = { ...@@ -75,6 +75,7 @@ static struct usb_device_id id_table [] = {
{ USB_DEVICE(0x10C4, 0x81E2) }, /* Lipowsky Industrie Elektronik GmbH, Baby-LIN */ { USB_DEVICE(0x10C4, 0x81E2) }, /* Lipowsky Industrie Elektronik GmbH, Baby-LIN */
{ USB_DEVICE(0x10C4, 0x81E7) }, /* Aerocomm Radio */ { USB_DEVICE(0x10C4, 0x81E7) }, /* Aerocomm Radio */
{ USB_DEVICE(0x10C4, 0x8218) }, /* Lipowsky Industrie Elektronik GmbH, HARP-1 */ { USB_DEVICE(0x10C4, 0x8218) }, /* Lipowsky Industrie Elektronik GmbH, HARP-1 */
{ USB_DEVICE(0x10c4, 0x8293) }, /* Telegesys ETRX2USB */
{ USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */ { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */
{ USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */ { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */
{ USB_DEVICE(0x10C4, 0xF001) }, /* Elan Digital Systems USBscope50 */ { USB_DEVICE(0x10C4, 0xF001) }, /* Elan Digital Systems USBscope50 */
......
...@@ -637,6 +637,7 @@ static struct usb_serial_driver keyspan_pre_device = { ...@@ -637,6 +637,7 @@ static struct usb_serial_driver keyspan_pre_device = {
.description = "Keyspan - (without firmware)", .description = "Keyspan - (without firmware)",
.id_table = keyspan_pre_ids, .id_table = keyspan_pre_ids,
.num_interrupt_in = NUM_DONT_CARE, .num_interrupt_in = NUM_DONT_CARE,
.num_interrupt_out = NUM_DONT_CARE,
.num_bulk_in = NUM_DONT_CARE, .num_bulk_in = NUM_DONT_CARE,
.num_bulk_out = NUM_DONT_CARE, .num_bulk_out = NUM_DONT_CARE,
.num_ports = 1, .num_ports = 1,
...@@ -651,6 +652,7 @@ static struct usb_serial_driver keyspan_1port_device = { ...@@ -651,6 +652,7 @@ static struct usb_serial_driver keyspan_1port_device = {
.description = "Keyspan 1 port adapter", .description = "Keyspan 1 port adapter",
.id_table = keyspan_1port_ids, .id_table = keyspan_1port_ids,
.num_interrupt_in = NUM_DONT_CARE, .num_interrupt_in = NUM_DONT_CARE,
.num_interrupt_out = NUM_DONT_CARE,
.num_bulk_in = NUM_DONT_CARE, .num_bulk_in = NUM_DONT_CARE,
.num_bulk_out = NUM_DONT_CARE, .num_bulk_out = NUM_DONT_CARE,
.num_ports = 1, .num_ports = 1,
...@@ -678,6 +680,7 @@ static struct usb_serial_driver keyspan_2port_device = { ...@@ -678,6 +680,7 @@ static struct usb_serial_driver keyspan_2port_device = {
.description = "Keyspan 2 port adapter", .description = "Keyspan 2 port adapter",
.id_table = keyspan_2port_ids, .id_table = keyspan_2port_ids,
.num_interrupt_in = NUM_DONT_CARE, .num_interrupt_in = NUM_DONT_CARE,
.num_interrupt_out = NUM_DONT_CARE,
.num_bulk_in = NUM_DONT_CARE, .num_bulk_in = NUM_DONT_CARE,
.num_bulk_out = NUM_DONT_CARE, .num_bulk_out = NUM_DONT_CARE,
.num_ports = 2, .num_ports = 2,
...@@ -705,6 +708,7 @@ static struct usb_serial_driver keyspan_4port_device = { ...@@ -705,6 +708,7 @@ static struct usb_serial_driver keyspan_4port_device = {
.description = "Keyspan 4 port adapter", .description = "Keyspan 4 port adapter",
.id_table = keyspan_4port_ids, .id_table = keyspan_4port_ids,
.num_interrupt_in = NUM_DONT_CARE, .num_interrupt_in = NUM_DONT_CARE,
.num_interrupt_out = NUM_DONT_CARE,
.num_bulk_in = NUM_DONT_CARE, .num_bulk_in = NUM_DONT_CARE,
.num_bulk_out = NUM_DONT_CARE, .num_bulk_out = NUM_DONT_CARE,
.num_ports = 4, .num_ports = 4,
......
...@@ -265,8 +265,8 @@ static struct usb_serial_driver ti_1port_device = { ...@@ -265,8 +265,8 @@ static struct usb_serial_driver ti_1port_device = {
.description = "TI USB 3410 1 port adapter", .description = "TI USB 3410 1 port adapter",
.usb_driver = &ti_usb_driver, .usb_driver = &ti_usb_driver,
.id_table = ti_id_table_3410, .id_table = ti_id_table_3410,
.num_interrupt_in = 1, .num_interrupt_in = NUM_DONT_CARE,
.num_bulk_in = 1, .num_bulk_in = NUM_DONT_CARE,
.num_bulk_out = 1, .num_bulk_out = 1,
.num_ports = 1, .num_ports = 1,
.attach = ti_startup, .attach = ti_startup,
......
...@@ -191,7 +191,7 @@ static struct usb_serial_driver handspring_device = { ...@@ -191,7 +191,7 @@ static struct usb_serial_driver handspring_device = {
.id_table = id_table, .id_table = id_table,
.num_interrupt_in = NUM_DONT_CARE, .num_interrupt_in = NUM_DONT_CARE,
.num_bulk_in = 2, .num_bulk_in = 2,
.num_bulk_out = 2, .num_bulk_out = NUM_DONT_CARE,
.num_ports = 2, .num_ports = 2,
.open = visor_open, .open = visor_open,
.close = visor_close, .close = visor_close,
......
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