diff options
| author | Alan Stern <stern@rowland.harvard.edu> | 2008-05-20 16:58:29 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-05-29 16:59:03 -0400 |
| commit | 3a31155cfff0935e4b178f3dca733d2d60d2eb8d (patch) | |
| tree | d862628b222cd28232fcc5452e4d88919a45b3fd /drivers/usb/core | |
| parent | a8e5177583e975fc1f7c621c93956f494df9b979 (diff) | |
USB: EHCI: suppress unwanted error messages
This patch (as1096) fixes an annoying problem: When a full-speed or
low-speed device is plugged into an EHCI controller, it fails to
enumerate at high speed and then is handed over to the companion
controller. But usbcore logs a misleading and unwanted error message
when the high-speed enumeration fails.
The patch adds a new HCD method, port_handed_over, which asks whether
a port has been handed over to a companion controller. If it has, the
error message is suppressed.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
CC: David Brownell <david-b@pacbell.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/core')
| -rw-r--r-- | drivers/usb/core/hcd.h | 2 | ||||
| -rw-r--r-- | drivers/usb/core/hub.c | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/drivers/usb/core/hcd.h b/drivers/usb/core/hcd.h index 1e4b81e9eb5..a0bf5df6cb6 100644 --- a/drivers/usb/core/hcd.h +++ b/drivers/usb/core/hcd.h | |||
| @@ -213,6 +213,8 @@ struct hc_driver { | |||
| 213 | 213 | ||
| 214 | /* force handover of high-speed port to full-speed companion */ | 214 | /* force handover of high-speed port to full-speed companion */ |
| 215 | void (*relinquish_port)(struct usb_hcd *, int); | 215 | void (*relinquish_port)(struct usb_hcd *, int); |
| 216 | /* has a port been handed over to a companion? */ | ||
| 217 | int (*port_handed_over)(struct usb_hcd *, int); | ||
| 216 | }; | 218 | }; |
| 217 | 219 | ||
| 218 | extern int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb); | 220 | extern int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb); |
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 1a3d2879bc1..8eb4da332f5 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c | |||
| @@ -2753,7 +2753,11 @@ loop: | |||
| 2753 | if ((status == -ENOTCONN) || (status == -ENOTSUPP)) | 2753 | if ((status == -ENOTCONN) || (status == -ENOTSUPP)) |
| 2754 | break; | 2754 | break; |
| 2755 | } | 2755 | } |
| 2756 | dev_err(hub_dev, "unable to enumerate USB device on port %d\n", port1); | 2756 | if (hub->hdev->parent || |
| 2757 | !hcd->driver->port_handed_over || | ||
| 2758 | !(hcd->driver->port_handed_over)(hcd, port1)) | ||
| 2759 | dev_err(hub_dev, "unable to enumerate USB device on port %d\n", | ||
| 2760 | port1); | ||
| 2757 | 2761 | ||
| 2758 | done: | 2762 | done: |
| 2759 | hub_port_disable(hub, port1, 1); | 2763 | hub_port_disable(hub, port1, 1); |
