Re: [PATCH 2/2] usb: host: xhci-plat: add wakeup entry at /sys

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

 



On 20-07-03 10:19:11, Alan Stern wrote:
> On Fri, Jul 03, 2020 at 02:25:32PM +0800, Peter Chen wrote:
> > After that, the user could enable controller as wakeup source
> > for system suspend through /sys entry.
> > 
> > Signed-off-by: Peter Chen <peter.chen@xxxxxxx>
> > ---
> >  drivers/usb/host/xhci-plat.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
> > index cebe24ec80a5..bb5d73f0a796 100644
> > --- a/drivers/usb/host/xhci-plat.c
> > +++ b/drivers/usb/host/xhci-plat.c
> > @@ -287,7 +287,7 @@ static int xhci_plat_probe(struct platform_device *pdev)
> >  		*priv = *priv_match;
> >  	}
> >  
> > -	device_wakeup_enable(hcd->self.controller);
> > +	device_set_wakeup_capable(hcd->self.controller, true);
> 
> 
> In fact both this patch and the original code are wrong.  It really should 
> be:
> 
> 	device_init_wakeup(hcd->self.controller, true);
> 
> This will add the wakeup entry in sysfs and set it to Enabled.  This is 
> the appropriate behavior, as explained in the kerneldoc for 
> device_init_wakeup().  The reason is because the controller device doesn't 
> create any wakeup events on its own; it merely relays wakeup requests from 
> descendant devices (root hubs or USB devices).

Hi Alan,

At xhci-plat.c's system suspend API xhci_plat_suspend, it depends on
power/wakeup value to determine whether the controller should enable
port wakeup capabilities, and from the system level, whether the system
supports USB wakeup or not is better to be determined by user, and is
disabled by default.

Yes, you are right. The wakeup events are from controller's descendant
devices, and it is better to use roothub's wakeup capability to control
portsc's wakeup setting. At controller driver, the meaning for wakeup
setting is enabling wakeup interrupt for hardware signal events (dp/dm for USB2,
and RX-detect for USB3), this hardware logic is the glue layer and
designed by each vendors, without this logic, the USB controller can't
be woken up due to the USBCMD.RS bit is cleared, and there is no
standard EHCI or xHCI interrupt. The controller's wakeup setting is
better to be disabled by default, and decided by user too.

For me, either this patch or use roothub's wakeup capability to
control portsc wakeup setting, both are OK. Mathias, what's your
opinion?

-- 

Thanks,
Peter Chen



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux