• Johan Hovold's avatar
    USB: serial: add support for multi-interface functions · 5de03c99
    Johan Hovold authored
    A single USB function can be implemented using a group of interfaces and
    this is for example commonly used for Communication Class devices.
    
    Add support for multi-interface functions to USB serial core and export
    an interface that allows drivers to claim a second sibling interface.
    The interface could easily be extended to allow claiming further
    interfaces if ever needed.
    
    When a driver claims a sibling interface in probe(), core allocates
    resources for any bulk in, bulk out, interrupt in and interrupt out
    endpoints found also on the sibling interface.
    
    Disconnect is implemented so that unbinding either interface will
    release the other interface while disconnect() is called precisely once.
    
    Similarly, suspend() is called when the first sibling interface is
    suspended and resume() is called when the last sibling interface is
    resumed by USB core.
    Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
    5de03c99
usb-serial.c 39.6 KB