Re: [PATCH V2] input: Fix USB autosuspend on bcm5974

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am Montag, 10. Oktober 2011, 16:16:35 schrieb Matthew Garrett:
> On Mon, Oct 10, 2011 at 04:06:37PM +0200, Oliver Neukum wrote:
> 
> > 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@xxxxxxxxxxxxx
> --
> To unsubscribe from this list: send the line "unsubscribe linux-input" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> 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@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux