Re: [RFC][PATCH 1/3] usb: add a hcd notify entry in hc_driver

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

 



On Tue, 5 May 2015, Lu, Baolu wrote:

> The order that software should do during device suspend/resume is 
> defined in 4.15.1.1 of xHCI spec 1.1.
> 
> Spec 4.15.1.1:
> 
> Software shall stop all endpoints of a device using the Stop Endpoint 
> Command and setting the Suspend
> (SP) flag to �1� prior to selectively suspending a device.

But _after_ all the URBs sent to the device have completed, right?

>  After the 
> device is resumed software shall ring an
> endpoint�s doorbell to restart it.

The driver would ring the endpoint's doorbell anyway when a new URB is 
submitted, wouldn't it?  Which means the resume callback doesn't 
actually have to do anything.

> --end--
> 
> So the order looks like:
> 
> tell hcd device suspend
> usb_port_suspend()

You have forgotten that usb_port_suspend() can send URBs to the device 
(to enable remote wakeup, for example).  Therefore you shouldn't notify 
the HCD until usb_port_suspend() is partly or totally finished.

> usb_port_resume()
> tell hcd device resume

You have also forgotten that usb_port_resume() calls various functions
that send URBs to ep0 on the device.  Therefore if the HCD's
device_resume callback needs to do something (like ringing ep0's
doorbell), you had better invoke the callback _before_ calling
usb_port_resume().  Or maybe you had better do this _within_
usb_port_resume().

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" 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]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux