diff options
author | Johan Hovold <johan@kernel.org> | 2021-07-05 10:20:14 +0200 |
---|---|---|
committer | Johan Hovold <johan@kernel.org> | 2021-07-30 17:19:45 +0200 |
commit | 33fb934a0992440e3d645d3965e71217c185fd6d (patch) | |
tree | 7a8a5bec31f4fb145652570200e617a6f10684d3 /drivers/usb | |
parent | 33a61d2cc731d1c8a763f147528fc5e46978599f (diff) | |
download | linux-stable-33fb934a0992440e3d645d3965e71217c185fd6d.tar.gz linux-stable-33fb934a0992440e3d645d3965e71217c185fd6d.tar.bz2 linux-stable-33fb934a0992440e3d645d3965e71217c185fd6d.zip |
USB: serial: cp210x: clean up type detection
Clean up attach somewhat by moving type detection into the quirk helper
and giving it a more generic name.
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/serial/cp210x.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c index c19073ae3891..a120646b0926 100644 --- a/drivers/usb/serial/cp210x.c +++ b/drivers/usb/serial/cp210x.c @@ -2092,11 +2092,21 @@ static int cp210x_get_fw_version(struct usb_serial *serial, u16 value) return 0; } -static void cp210x_determine_quirks(struct usb_serial *serial) +static void cp210x_determine_type(struct usb_serial *serial) { struct cp210x_serial_private *priv = usb_get_serial_data(serial); int ret; + ret = cp210x_read_vendor_block(serial, REQTYPE_DEVICE_TO_HOST, + CP210X_GET_PARTNUM, &priv->partnum, + sizeof(priv->partnum)); + if (ret < 0) { + dev_warn(&serial->interface->dev, + "querying part number failed\n"); + priv->partnum = CP210X_PARTNUM_UNKNOWN; + return; + } + switch (priv->partnum) { case CP210X_PARTNUM_CP2102N_QFN28: case CP210X_PARTNUM_CP2102N_QFN24: @@ -2121,18 +2131,9 @@ static int cp210x_attach(struct usb_serial *serial) if (!priv) return -ENOMEM; - result = cp210x_read_vendor_block(serial, REQTYPE_DEVICE_TO_HOST, - CP210X_GET_PARTNUM, &priv->partnum, - sizeof(priv->partnum)); - if (result < 0) { - dev_warn(&serial->interface->dev, - "querying part number failed\n"); - priv->partnum = CP210X_PARTNUM_UNKNOWN; - } - usb_set_serial_data(serial, priv); - cp210x_determine_quirks(serial); + cp210x_determine_type(serial); cp210x_init_max_speed(serial); result = cp210x_gpio_init(serial); |