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
This commit is contained in:
commit
9597362d35
|
@ -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)
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 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 [] = {
|
||||||
{ 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 = {
|
||||||
.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 = {
|
||||||
.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 = {
|
||||||
.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 = {
|
||||||
.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 = {
|
||||||
.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 = {
|
||||||
.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,
|
||||||
|
|
Loading…
Reference in a new issue