Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 27 Aug 2016 14:05:01 -0400
From:      Adam Stylinski <kungfujesus06@gmail.com>
To:        Hans Petter Selasky <hps@selasky.org>
Cc:        freebsd-usb@freebsd.org
Subject:   Re: USB 3.0 devices negotiate to spd=HIGH for all ports
Message-ID:  <CAJwHY9WEjoMnwnDtF8Fnq9rgQobPAt9eQh77U4zFYS09REH6KA@mail.gmail.com>
In-Reply-To: <2a28aa4b-3256-b091-9a6e-c2a29f993d6c@selasky.org>
References:  <CAJwHY9Wv2_VfeuZwzfBtxgZxkSXDHfXNK0SEAoGjtunrHqKxGA@mail.gmail.com> <2a28aa4b-3256-b091-9a6e-c2a29f993d6c@selasky.org>

next in thread | previous in thread | raw e-mail | index | archive | help
The only quirk specific code I can find in Linux's kernel for XHCI is this:
http://lxr.free-electrons.com/source/drivers/usb/host/pci-quirks.c

I believe I have one of the SBxxx AMD chipsets, though I can't recall which
one.  I don't see anything in there referring to my PCI IDs, unless I'm
looking at the wrong outputs in pciconf -lv.  I see one quirk in particular
regarding power management but that seems to be more about stability rather
than speed.  I'm sure I'm missing something.

On Sat, Aug 27, 2016 at 1:43 PM, Hans Petter Selasky <hps@selasky.org>
wrote:

> On 08/27/16 18:41, Adam Stylinski wrote:
>
>> Hello,
>>
>> I definitely have a USB 3.0 controller that is being recognized by XHCI:
>>
>> [adam@nasbox ~]$ sudo usbconfig
>> ugen0.1: <XHCI root HUB 0x1b6f> at usbus0, cfg=0 md=HOST spd=SUPER
>> (5.0Gbps) pwr=SAVE (0mA)
>> ugen2.1: <OHCI root HUB ATI> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps)
>> pwr=SAVE (0mA)
>> ugen1.1: <XHCI root HUB 0x1b6f> at usbus1, cfg=0 md=HOST spd=SUPER
>> (5.0Gbps) pwr=SAVE (0mA)
>> ugen3.1: <EHCI root HUB ATI> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps)
>> pwr=SAVE (0mA)
>> ugen4.1: <OHCI root HUB ATI> at usbus4, cfg=0 md=HOST spd=FULL (12Mbps)
>> pwr=SAVE (0mA)
>> ugen5.1: <EHCI root HUB ATI> at usbus5, cfg=0 md=HOST spd=HIGH (480Mbps)
>> pwr=SAVE (0mA)
>> ugen7.1: <OHCI root HUB ATI> at usbus7, cfg=0 md=HOST spd=FULL (12Mbps)
>> pwr=SAVE (0mA)
>> ugen6.1: <OHCI root HUB ATI> at usbus6, cfg=0 md=HOST spd=FULL (12Mbps)
>> pwr=SAVE (0mA)
>> ugen8.1: <EHCI root HUB ATI> at usbus8, cfg=0 md=HOST spd=HIGH (480Mbps)
>> pwr=SAVE (0mA)
>> ugen0.2: <Extreme SanDisk> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps)
>> pwr=ON (200mA)
>>
>>
>> xhci0@pci0:3:0:0: class=0x0c0330 card=0x70231849 chip=0x70231b6f rev=0x01
>> hdr=0x00
>>     vendor     = 'Etron Technology, Inc.'
>>     device     = 'EJ168 USB 3.0 Host Controller'
>>     class      = serial bus
>>     subclass   = USB
>> xhci1@pci0:4:0:0: class=0x0c0330 card=0x70231849 chip=0x70231b6f rev=0x01
>> hdr=0x00
>>     vendor     = 'Etron Technology, Inc.'
>>     device     = 'EJ168 USB 3.0 Host Controller'
>>     class      = serial bus
>>     subclass   = USB
>>
>> However, when I connect a USB 3.0 device into a USB 3.0 port, it only
>> gives
>> me spd=HIGH.  This is a Sandisk CZ80, but I've other devices in the past
>> and have had the same behavior.  Plugging a device in with
>> hw.usb.xhci.debug=1 doesn't appear to print too many useful things, at
>> least not to an end user.  I won't yet paste the full output, but it looks
>> something like this:
>>
>> xhci_transfer_insert: qh_pos = 2
>> xhci_check_transfer: slot=1 epno=3 stream=256 remainder=0 status=1
>> xhci_check_transfer: stream_id=0
>> xhci_check_transfer: TD is last
>> xhci_check_transfer: slot=1 epno=3 stream=256 remainder=0 status=1
>> xhci_check_transfer: stream_id=0
>> xhci_device_generic_enter:
>> xhci_setup_generic_chain_sub: NTRB=1
>> xhci_setup_generic_chain_sub: LINK=0x241ff800
>> xhci_setup_generic_chain: first=0xfffff800241ff980 last=0xfffff800241ff980
>> xhci_device_generic_start:
>> xhci_transfer_insert: qh_pos = 2
>> xhci_check_transfer: slot=1 epno=4 stream=256 remainder=0 status=1
>> xhci_check_transfer: stream_id=0
>> xhci_check_transfer: TD is last
>> xhci_check_transfer: slot=1 epno=4 stream=256 remainder=0 status=1
>> xhci_check_transfer: stream_id=0
>> xhci_device_generic_enter:
>> xhci_setup_generic_chain_sub: NTRB=1
>> xhci_setup_generic_chain_sub: LINK=0x55fc6a300
>> xhci_setup_generic_chain: first=0xfffff8055fc6a480 last=0xfffff8055fc6a480
>> xhci_device_generic_start:
>> xhci_transfer_insert: qh_pos = 0
>> xhci_check_transfer: slot=1 epno=3 stream=256 remainder=0 status=1
>> xhci_check_transfer: stream_id=0
>> xhci_check_transfer: TD is last
>> xhci_check_transfer: slot=1 epno=3 stream=256 remainder=0 status=1
>> xhci_check_transfer: stream_id=0
>> xhci_device_generic_enter:
>> xhci_setup_generic_chain_sub: NTRB=1
>> xhci_setup_generic_chain_sub: LINK=0x3d958d000
>> xhci_setup_generic_chain: first=0xfffff803d958d180 last=0xfffff803d958d180
>> xhci_device_generic_start:
>> xhci_transfer_insert: qh_pos = 1
>> xhci_check_transfer: slot=1 epno=3 stream=256 remainder=0 status=1
>> xhci_check_transfer: stream_id=0
>> xhci_check_transfer: TD is last
>> xhci_check_transfer: slot=1 epno=3 stream=256 remainder=0 status=1
>> xhci_check_transfer: stream_id=0
>> xhci_device_generic_enter:
>> xhci_setup_generic_chain_sub: NTRB=1
>> xhci_setup_generic_chain_sub: LINK=0x7d676f000
>> xhci_setup_generic_chain: first=0xfffff807d676f180 last=0xfffff807d676f180
>> xhci_device_generic_start:
>> xhci_transfer_insert: qh_pos = 0
>> xhci_check_transfer: slot=1 epno=4 stream=256 remainder=0 status=1
>> xhci_check_transfer: stream_id=0
>> xhci_check_transfer: TD is last
>> xhci_check_transfer: slot=1 epno=4 stream=256 remainder=0 status=1
>> xhci_check_transfer: stream_id=0
>>
>> What can I do to end this frustrating issue of USB 2.0 only-ness?
>>
>
> Try to google the PCI IDs of your device and see if Linux has any quirks
> for your card. Sometimes these cards need special register writes to enable
> USB 3.0.
>
> --HPS
>
>



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