OSDN Git Service

USB: serial: cp210x: clean up type detection
authorJohan Hovold <johan@kernel.org>
Mon, 5 Jul 2021 08:20:14 +0000 (10:20 +0200)
committerJohan Hovold <johan@kernel.org>
Fri, 30 Jul 2021 15:19:45 +0000 (17:19 +0200)
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>
drivers/usb/serial/cp210x.c

index c19073a..a120646 100644 (file)
@@ -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);