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>
This commit is contained in:
parent
33a61d2cc7
commit
33fb934a09
@ -2092,11 +2092,21 @@ static int cp210x_get_fw_version(struct usb_serial *serial, u16 value)
|
|||||||
return 0;
|
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);
|
struct cp210x_serial_private *priv = usb_get_serial_data(serial);
|
||||||
int ret;
|
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) {
|
switch (priv->partnum) {
|
||||||
case CP210X_PARTNUM_CP2102N_QFN28:
|
case CP210X_PARTNUM_CP2102N_QFN28:
|
||||||
case CP210X_PARTNUM_CP2102N_QFN24:
|
case CP210X_PARTNUM_CP2102N_QFN24:
|
||||||
@ -2121,18 +2131,9 @@ static int cp210x_attach(struct usb_serial *serial)
|
|||||||
if (!priv)
|
if (!priv)
|
||||||
return -ENOMEM;
|
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);
|
usb_set_serial_data(serial, priv);
|
||||||
|
|
||||||
cp210x_determine_quirks(serial);
|
cp210x_determine_type(serial);
|
||||||
cp210x_init_max_speed(serial);
|
cp210x_init_max_speed(serial);
|
||||||
|
|
||||||
result = cp210x_gpio_init(serial);
|
result = cp210x_gpio_init(serial);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user