• Heikki Krogerus's avatar
    usb: typec: ucsi: Fix for incorrect status data issue · 68816e16
    Heikki Krogerus authored
    According to UCSI Specification, Connector Change Event only
    means a change in the Connector Status and Operation Mode
    fields of the STATUS data structure. So any other change
    should create another event.
    
    Unfortunately on some platforms the firmware acting as PPM
    (platform policy manager - usually embedded controller
    firmware) still does not report any other status changes if
    there is a connector change event. So if the connector power
    or data role was changed when a device was plugged to the
    connector, the driver does not get any indication about
    that. The port will show wrong roles if that happens.
    
    To fix the issue, always checking the data and power role
    together with a connector change event.
    
    Fixes: c1b0bc2d ("usb: typec: Add support for UCSI interface")
    Signed-off-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    68816e16
ucsi.c 18.5 KB