Why do we try to enter U1 mode in SuperSpeed?
Kohji Okuno
okuno.kohji at jp.panasonic.com
Mon Mar 30 09:37:01 UTC 2015
Hi HPS,
> On 03/30/15 10:54, Hans Petter Selasky wrote:
>> 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
>>
>
> Hi,
>
> Looking at the USB 3.0 specification, I think there might be a typo there:
>
> In table 10-13 - "U2 timeout value encoding", it says that 0xFE corresponds to
> 65024 ms, but I think it should be 65024 _us_ !
>
> Try programming values 0xFF for both U1 and U2. Does the device enumerate
> then?
>
> Maybe it only doesn't support sleep modes during enumeration and that after
> set configuration it works?
>
> --HPS
I will try programming values 0xFF.
By the way, why should we set these timeout value?
I think, we don't have to change from default values (U1 Timeout = 0,
U2 Timeout= 0).
Regards,
Kohji Okuno
More information about the freebsd-usb
mailing list