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>