summaryrefslogtreecommitdiffstats
path: root/drivers/usb/core
diff options
context:
space:
mode:
authorAlan Stern <stern@rowland.harvard.edu>2011-09-26 11:23:38 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2011-09-26 15:54:11 -0700
commita6eeeb9f45b5a417f574f3bc799b7122270bf59b (patch)
tree50780f1667972bd1e31974a10bb3b31c6852d133 /drivers/usb/core
parent0cc47d547d7a482434926331265b3713381b1e60 (diff)
USB: Update USB default wakeup settings
This patch (as1486) implements the kernel's new wakeup policy for USB host controllers. Since they don't generate wakeup requests on their but merely forward requests from their root hubs toward the CPU, they should be enabled for wakeup by default. Also, to be compliant with both the old and new policies, root hubs should not be enabled for remote wakeup by default. Userspace must enable it explicitly if it is desired. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/core')
-rw-r--r--drivers/usb/core/hcd.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index 73cbbd85219..100d4b00264 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -2429,7 +2429,7 @@ int usb_add_hcd(struct usb_hcd *hcd,
* but drivers can override it in reset() if needed, along with
* recording the overall controller's system wakeup capability.
*/
- device_init_wakeup(&rhdev->dev, 1);
+ device_set_wakeup_capable(&rhdev->dev, 1);
/* HCD_FLAG_RH_RUNNING doesn't matter until the root hub is
* registered. But since the controller can die at any time,
@@ -2478,6 +2478,13 @@ int usb_add_hcd(struct usb_hcd *hcd,
}
if (hcd->uses_new_polling && HCD_POLL_RH(hcd))
usb_hcd_poll_rh_status(hcd);
+
+ /*
+ * Host controllers don't generate their own wakeup requests;
+ * they only forward requests from the root hub. Therefore
+ * controllers should always be enabled for remote wakeup.
+ */
+ device_wakeup_enable(hcd->self.controller);
return retval;
error_create_attr_group: