diff options
author | David S. Miller <davem@davemloft.net> | 2008-02-23 23:38:20 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-02-23 23:38:20 -0500 |
commit | 8d3c202be23c5a915f7053ebd4e96f44700c6a62 (patch) | |
tree | e0f017aff86d3ad0b858fe85f44e11096087ed00 /drivers/usb/host | |
parent | 1b04ab4597725f75f94942da9aa40daa7b9a4bd9 (diff) | |
parent | 038eb0ea04b245351be34b0ae76b55eee4603989 (diff) |
Merge branch 'master' of ../linux-2.6/
Diffstat (limited to 'drivers/usb/host')
-rw-r--r-- | drivers/usb/host/Kconfig | 5 | ||||
-rw-r--r-- | drivers/usb/host/ehci-hcd.c | 26 | ||||
-rw-r--r-- | drivers/usb/host/sl811-hcd.c | 1 | ||||
-rw-r--r-- | drivers/usb/host/u132-hcd.c | 15 |
4 files changed, 26 insertions, 21 deletions
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig index d97b16b52efa..bf8be2a41a4a 100644 --- a/drivers/usb/host/Kconfig +++ b/drivers/usb/host/Kconfig | |||
@@ -69,10 +69,9 @@ config USB_EHCI_BIG_ENDIAN_DESC | |||
69 | default y | 69 | default y |
70 | 70 | ||
71 | config USB_EHCI_FSL | 71 | config USB_EHCI_FSL |
72 | bool | 72 | bool "Support for Freescale on-chip EHCI USB controller" |
73 | depends on USB_EHCI_HCD | 73 | depends on USB_EHCI_HCD && FSL_SOC |
74 | select USB_EHCI_ROOT_HUB_TT | 74 | select USB_EHCI_ROOT_HUB_TT |
75 | default y if MPC834x || PPC_MPC831x | ||
76 | ---help--- | 75 | ---help--- |
77 | Variation of ARC USB block used in some Freescale chips. | 76 | Variation of ARC USB block used in some Freescale chips. |
78 | 77 | ||
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index 4caa6a8b9a37..b8ad55aff842 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c | |||
@@ -862,18 +862,18 @@ static int ehci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status) | |||
862 | /* reschedule QH iff another request is queued */ | 862 | /* reschedule QH iff another request is queued */ |
863 | if (!list_empty (&qh->qtd_list) | 863 | if (!list_empty (&qh->qtd_list) |
864 | && HC_IS_RUNNING (hcd->state)) { | 864 | && HC_IS_RUNNING (hcd->state)) { |
865 | int schedule_status; | 865 | rc = qh_schedule(ehci, qh); |
866 | 866 | ||
867 | schedule_status = qh_schedule (ehci, qh); | 867 | /* An error here likely indicates handshake failure |
868 | spin_unlock_irqrestore (&ehci->lock, flags); | 868 | * or no space left in the schedule. Neither fault |
869 | 869 | * should happen often ... | |
870 | if (schedule_status != 0) { | 870 | * |
871 | // shouldn't happen often, but ... | 871 | * FIXME kill the now-dysfunctional queued urbs |
872 | // FIXME kill those tds' urbs | 872 | */ |
873 | err ("can't reschedule qh %p, err %d", | 873 | if (rc != 0) |
874 | qh, schedule_status); | 874 | ehci_err(ehci, |
875 | } | 875 | "can't reschedule qh %p, err %d", |
876 | return status; | 876 | qh, rc); |
877 | } | 877 | } |
878 | break; | 878 | break; |
879 | 879 | ||
@@ -1014,7 +1014,7 @@ MODULE_LICENSE ("GPL"); | |||
1014 | #endif | 1014 | #endif |
1015 | 1015 | ||
1016 | #if !defined(PCI_DRIVER) && !defined(PLATFORM_DRIVER) && \ | 1016 | #if !defined(PCI_DRIVER) && !defined(PLATFORM_DRIVER) && \ |
1017 | !defined(PS3_SYSTEM_BUS_DRIVER) | 1017 | !defined(PS3_SYSTEM_BUS_DRIVER) && !defined(OF_PLATFORM_DRIVER) |
1018 | #error "missing bus glue for ehci-hcd" | 1018 | #error "missing bus glue for ehci-hcd" |
1019 | #endif | 1019 | #endif |
1020 | 1020 | ||
diff --git a/drivers/usb/host/sl811-hcd.c b/drivers/usb/host/sl811-hcd.c index ba370c56172c..59be276ccd9d 100644 --- a/drivers/usb/host/sl811-hcd.c +++ b/drivers/usb/host/sl811-hcd.c | |||
@@ -1766,6 +1766,7 @@ sl811h_suspend(struct platform_device *dev, pm_message_t state) | |||
1766 | retval = sl811h_bus_suspend(hcd); | 1766 | retval = sl811h_bus_suspend(hcd); |
1767 | break; | 1767 | break; |
1768 | case PM_EVENT_SUSPEND: | 1768 | case PM_EVENT_SUSPEND: |
1769 | case PM_EVENT_HIBERNATE: | ||
1769 | case PM_EVENT_PRETHAW: /* explicitly discard hw state */ | 1770 | case PM_EVENT_PRETHAW: /* explicitly discard hw state */ |
1770 | port_power(sl811, 0); | 1771 | port_power(sl811, 0); |
1771 | break; | 1772 | break; |
diff --git a/drivers/usb/host/u132-hcd.c b/drivers/usb/host/u132-hcd.c index ac283b09a63f..3033d6945202 100644 --- a/drivers/usb/host/u132-hcd.c +++ b/drivers/usb/host/u132-hcd.c | |||
@@ -3213,15 +3213,20 @@ static int u132_suspend(struct platform_device *pdev, pm_message_t state) | |||
3213 | dev_err(&u132->platform_dev->dev, "device is being removed\n"); | 3213 | dev_err(&u132->platform_dev->dev, "device is being removed\n"); |
3214 | return -ESHUTDOWN; | 3214 | return -ESHUTDOWN; |
3215 | } else { | 3215 | } else { |
3216 | int retval = 0; | 3216 | int retval = 0, ports; |
3217 | if (state.event == PM_EVENT_FREEZE) { | 3217 | |
3218 | switch (state.event) { | ||
3219 | case PM_EVENT_FREEZE: | ||
3218 | retval = u132_bus_suspend(hcd); | 3220 | retval = u132_bus_suspend(hcd); |
3219 | } else if (state.event == PM_EVENT_SUSPEND) { | 3221 | break; |
3220 | int ports = MAX_U132_PORTS; | 3222 | case PM_EVENT_SUSPEND: |
3223 | case PM_EVENT_HIBERNATE: | ||
3224 | ports = MAX_U132_PORTS; | ||
3221 | while (ports-- > 0) { | 3225 | while (ports-- > 0) { |
3222 | port_power(u132, ports, 0); | 3226 | port_power(u132, ports, 0); |
3223 | } | 3227 | } |
3224 | } | 3228 | break; |
3229 | } | ||
3225 | if (retval == 0) | 3230 | if (retval == 0) |
3226 | pdev->dev.power.power_state = state; | 3231 | pdev->dev.power.power_state = state; |
3227 | return retval; | 3232 | return retval; |