Re: [PATCH V2] input: Fix USB autosuspend on bcm5974
From: Oliver Neukum <hidden>
Date: 2011-10-10 14:34:23
Am Montag, 10. Oktober 2011, 16:16:35 schrieb Matthew Garrett:
On Mon, Oct 10, 2011 at 04:06:37PM +0200, Oliver Neukum wrote:quoted
This is odd, because the hardware shouldn't generate remote wakeups unless you request them, like this (usbhid)I thought needs_remote_wakeup was a hint to the kernel that remote wakeup ability was required for the hardware to autosuspend? In theory I
It fulfills that role, but it is not its sole function.
guess it should be set, but in practice all the hardware supported by this driver generates them so it'd be a noop. No objection to adding it in the name of correctness (or if some future version is broken, I guess...), though.
It is used in usb_port_suspend in form of do_remote_wakeup which
is computed from it. And we send a real control message.
Regards
Oliver
int usb_port_suspend(struct usb_device *udev, pm_message_t msg)
{
struct usb_hub *hub = hdev_to_hub(udev->parent);
int port1 = udev->portnum;
int status;
// dev_dbg(hub->intfdev, "suspend port %d\n", port1);
/* enable remote wakeup when appropriate; this lets the device
* wake up the upstream hub (including maybe the root hub).
*
* NOTE: OTG devices may issue remote wakeup (or SRP) even when
* we don't explicitly enable it here.
*/
if (udev->do_remote_wakeup) {
status = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
USB_REQ_SET_FEATURE, USB_RECIP_DEVICE,
USB_DEVICE_REMOTE_WAKEUP, 0,
NULL, 0,
USB_CTRL_SET_TIMEOUT);
if (status) {
dev_dbg(&udev->dev, "won't remote wakeup, status %d\n",
status);
/* bail if autosuspend is requested */
if (msg.event & PM_EVENT_AUTO)
return status;
}
}
-- Matthew Garrett | mjg59@srcf.ucam.org -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
-- - - - SUSE LINUX Products GmbH, GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer, HRB 16746 (AG Nürnberg) Maxfeldstraße 5 90409 Nürnberg Germany - - - -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html