• Jack Pham's avatar
    usb: misc: lvstest: add entry to place port in compliance mode · f624ec70
    Jack Pham authored
    Add support for the SuperSpeed Link Layer test case TD.7.34
    which requires the operator to place the port into compliance
    mode, and to subsequently bring it out via reset. Historically
    according to the (now deprecated) USB 3.0 specification a
    SuperSpeed host downstream port would automatically transition
    to Compliance mode from the Polling state if LFPS polling times
    out. However the language in USB 3.1 as well as xHCI 1.1 states
    it may be required to explicitly enable this transition. For
    such hosts this is done by sending a SET_FEATURE(PORT_LINK_STATE)
    with the state set to Compliance to the root hub port.
    
    Similar to the other supported commands, to do this via sysfs:
    
         echo  > /sys/bus/usb/devices/2-0\:1.0/enable_compliance
    
    According to xHCI 1.1 section 4.19.1.2.4.1, this enables the
    transition to compliance mode upon LFPS timeout. Note that this
    can only be issued when the port is in disconnected state. And
    in order to disable this behavior on subsequent transitions, a
    warm reset should be issued. So add another entry to do that:
    
         echo  > /sys/bus/usb/devices/2-0\:1.0/warm_reset
    
    In general these attributes can also be useful for other USB
    SuperSpeed compliance tests such as electrical and eye diagram
    testing which require CPn patterns to be transmitted.
    Signed-off-by: default avatarJack Pham <jackp@codeaurora.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    f624ec70
lvstest.c 12.2 KB