Commit f8d8464b authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman

USB: cdc-acm: refactor endpoint retrieval

Use the new endpoint helpers to lookup the required bulk-in, bulk-out
and interrupt-in endpoints for collapsed interfaces.

Note that there is already a check verifying that there are exactly
three endpoints so we'd still be bailing out if there's an unexpected
endpoint type.

Cc: Oliver Neukum <oneukum@suse.com>
Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent af59f895
...@@ -1174,6 +1174,7 @@ static int acm_probe(struct usb_interface *intf, ...@@ -1174,6 +1174,7 @@ static int acm_probe(struct usb_interface *intf,
int combined_interfaces = 0; int combined_interfaces = 0;
struct device *tty_dev; struct device *tty_dev;
int rv = -ENOMEM; int rv = -ENOMEM;
int res;
/* normal quirks */ /* normal quirks */
quirks = (unsigned long)id->driver_info; quirks = (unsigned long)id->driver_info;
...@@ -1274,23 +1275,12 @@ static int acm_probe(struct usb_interface *intf, ...@@ -1274,23 +1275,12 @@ static int acm_probe(struct usb_interface *intf,
return -EINVAL; return -EINVAL;
} }
look_for_collapsed_interface: look_for_collapsed_interface:
for (i = 0; i < 3; i++) { res = usb_find_common_endpoints(data_interface->cur_altsetting,
struct usb_endpoint_descriptor *ep; &epread, &epwrite, &epctrl, NULL);
ep = &data_interface->cur_altsetting->endpoint[i].desc; if (res)
return res;
if (usb_endpoint_is_int_in(ep))
epctrl = ep; goto made_compressed_probe;
else if (usb_endpoint_is_bulk_out(ep))
epwrite = ep;
else if (usb_endpoint_is_bulk_in(ep))
epread = ep;
else
return -EINVAL;
}
if (!epctrl || !epread || !epwrite)
return -ENODEV;
else
goto made_compressed_probe;
} }
skip_normal_probe: skip_normal_probe:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment