mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-14 22:44:27 +08:00
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: Johan Hovold <johan@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
af59f8955f
commit
f8d8464bfc
@ -1174,6 +1174,7 @@ static int acm_probe(struct usb_interface *intf,
|
||||
int combined_interfaces = 0;
|
||||
struct device *tty_dev;
|
||||
int rv = -ENOMEM;
|
||||
int res;
|
||||
|
||||
/* normal quirks */
|
||||
quirks = (unsigned long)id->driver_info;
|
||||
@ -1274,23 +1275,12 @@ static int acm_probe(struct usb_interface *intf,
|
||||
return -EINVAL;
|
||||
}
|
||||
look_for_collapsed_interface:
|
||||
for (i = 0; i < 3; i++) {
|
||||
struct usb_endpoint_descriptor *ep;
|
||||
ep = &data_interface->cur_altsetting->endpoint[i].desc;
|
||||
res = usb_find_common_endpoints(data_interface->cur_altsetting,
|
||||
&epread, &epwrite, &epctrl, NULL);
|
||||
if (res)
|
||||
return res;
|
||||
|
||||
if (usb_endpoint_is_int_in(ep))
|
||||
epctrl = ep;
|
||||
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;
|
||||
goto made_compressed_probe;
|
||||
}
|
||||
|
||||
skip_normal_probe:
|
||||
|
Loading…
Reference in New Issue
Block a user