• Heikki Krogerus's avatar
    usb: typec: Add support for UCSI interface · c1b0bc2d
    Heikki Krogerus authored
    UCSI - USB Type-C Connector System Software Interface - is a
    specification that defines set of registers and data
    structures for controlling the USB Type-C ports. It's
    designed for systems where an embedded controller (EC) is in
    charge of the USB Type-C PHY or USB Power Delivery
    controller. It is designed for systems with EC, but it is
    not limited to them, and for example some USB Power Delivery
    controllers will use it as their direct control interface.
    
    With UCSI the EC (or USB PD controller) acts as the port
    manager, implementing all USB Type-C and Power Delivery state
    machines. The OS can use the interfaces for reading the
    status of the ports and controlling basic operations like
    role swapping.
    
    The UCSI specification highlights the fact that it does not
    define the interface method (PCI/I2C/ACPI/etc.).
    Therefore the driver is implemented as library and every
    supported interface method needs its own driver. Driver for
    ACPI is provided in separate patch following this one.
    
    The initial driver includes support for all required
    features from UCSI specification version 1.0 (getting
    connector capabilities and status, and support for power and
    data role swapping), but none of the optional UCSI features
    (alternate modes, power source capabilities, and cable
    capabilities).
    Signed-off-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
    Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    c1b0bc2d
debug.h 1.7 KB