• Heikki Krogerus's avatar
    usb: common: Small class for USB role switches · fde0aa6c
    Heikki Krogerus authored
    USB role switch is a device that can be used to choose the
    data role for USB connector. With dual-role capable USB
    controllers, the controller itself will be the switch, but
    on some platforms the USB host and device controllers are
    separate IPs and there is a mux between them and the
    connector. On those platforms the mux driver will need to
    register the switch.
    
    With USB Type-C connectors, the host-to-device relationship
    is negotiated over the Configuration Channel (CC). That
    means the USB Type-C drivers need to be in control of the
    role switch. The class provides a simple API for the USB
    Type-C drivers for the control.
    
    For other types of USB connectors (mainly microAB) the class
    provides user space control via sysfs attribute file that
    can be used to request role swapping from the switch.
    Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
    Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
    Signed-off-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    fde0aa6c
roles.c 7.06 KB