Why do we try to enter U1 mode in SuperSpeed?

Hans Petter Selasky hps at selasky.org
Mon Mar 30 08:53:36 UTC 2015


On 03/30/15 06:54, Kohji Okuno wrote:
> Hi HPS
>
> I have a question.
> Why do we try to enter U1 mode in SuperSpeed?
> This is the following codes(***)
>
> In our proprietary environmen(This has a xHCI controller), when a
> device accept U1, the device may be strange status. Acutually, when I
> tried to connect "Western Digital My Passport Essential 320GB
> (P/N:WDBACY3200ABK-00)", this HDD was not recognized correctly.
> But, in PC environment, this HDD was recognized correctly.
>
> Regards,
>   Kohji Okuno
>
> (***)
> usb_hub.c:
> 793	        if (speed == USB_SPEED_SUPER) {
> 794	                err = usbd_req_set_hub_u1_timeout(udev, NULL,
> 795	                    portno, 128 - (2 * udev->depth));
> 796	                if (err) {
> 797	                        DPRINTFN(0, "port %d U1 timeout "
> 798	                            "failed, error=%s\n",
> 799	                            portno, usbd_errstr(err));
> 800	                }
> 801	                err = usbd_req_set_hub_u2_timeout(udev, NULL,
> 802	                    portno, 128 - (2 * udev->depth));
> 803	                if (err) {
> 804	                        DPRINTFN(0, "port %d U2 timeout "
> 805	                            "failed, error=%s\n",
> 806	                            portno, usbd_errstr(err));
> 807	                }
> 808	        }

Hi,

We are not trying to enter U1 mode, we only setup the U1 and U2 
timeouts. Is there a flag in the USB descriptors that say this is not 
supported and that we need to set some other value? I thought all 
superspeed devices had to support these features and that switching in 
and out of the sleep modes was done by the XHCI hardware.

--HPS



More information about the freebsd-usb mailing list