Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 30 Mar 2015 18:36:58 +0900 (JST)
From:      Kohji Okuno <okuno.kohji@jp.panasonic.com>
To:        hps@selasky.org
Cc:        freebsd-usb@freebsd.org
Subject:   Re: Why do we try to enter U1 mode in SuperSpeed?
Message-ID:  <20150330.183658.1414013626189866994.okuno.kohji@jp.panasonic.com>
In-Reply-To: <55191530.3030804@selasky.org>
References:  <20150330.135402.19625324788487516.okuno.kohji@jp.panasonic.com> <55190F3C.4070901@selasky.org> <55191530.3030804@selasky.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150330.183658.1414013626189866994.okuno.kohji>