• Preston Fick's avatar
    usb: cp210x: Update to support CP2105 and multiple interface devices · a5360a53
    Preston Fick authored
    This patch updates the cp210x driver to support CP210x multiple
    interface devices devices from Silicon Labs. The existing driver
    always sends control requests to interface 0, which is hardcoded in
    the usb_control_msg function calls. This only allows for single
    interface devices to be used, and causes a bug when using ports on an
    interface other than 0 in the multiple interface devices.
    
    Here are the changes included in this patch:
    - Updated the device list to contain the Silicon Labs factory default
      VID/PID for multiple interface CP210x devices
    - Created a cp210x_port_private struct created for each port on
      startup, this struct holds the interface number
    - Added a cp210x_release function to clean up the cp210x_port_private
      memory created on startup
    - Modified usb_get_config and usb_set_config to get a pointer to the
      cp210x_port_private struct, and use the interface number there in the
      usb_control_message wIndex param
    Signed-off-by: default avatarPreston Fick <preston.fick@silabs.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    a5360a53
cp210x.c 27.4 KB