• Jack Pham's avatar
    usb: xhci: Support enabling of compliance mode for xhci 1.1 · 4b562bd2
    Jack Pham authored
    To perform SuperSpeed compliance testing the port should first
    be placed into compliance mode. For xHCI 1.0 and prior this
    transition happens automatically when the port is in Training
    and encounters an LFPS timeout. Thus running compliance tests
    against a test appliance may simply just work by simply plugging
    in to the downstream port.
    
    However starting with xHCI 1.1 the transition from Polling.LFPS
    to compliance mode may be disabled by default and needs to be
    explicitly enabled by writing to the PLS field of the PORTSC
    register, which sets an internal 'CTE' (Compliance Transition
    Enabled) flag so that the port will perform the transition the
    next time it encounters LFPS timeout. Whether this is disabled or
    not is determined by the 'CTC' (Compliance Transition Capability)
    bit in the HCCPARAMS2 capability register.
    
    In order to allow a test operator to change this if needed, allow
    a test driver (such as drivers/usb/misc/lvstest.c) to send a
    SET_FEATURE(PORT_LINK_STATE) control message to the root hub to
    update the link state prior to connecting to the port. Subsequently,
    placing the port in warm reset would then disable the flag.
    Signed-off-by: default avatarJack Pham <jackp@codeaurora.org>
    Acked-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    4b562bd2
xhci-hub.c 48.6 KB