diff options
| author | Johan Hovold <[email protected]> | 2017-03-17 10:35:48 +0000 |
|---|---|---|
| committer | Greg Kroah-Hartman <[email protected]> | 2017-03-23 12:54:08 +0000 |
| commit | f8d8464bfc90e058fe68dee02121d46f661f68cd (patch) | |
| tree | a0c2e9ec0825f21c798ebbe2c7138c73014ec55e /drivers/usb/class/cdc-acm.c | |
| parent | USB: usb-skeleton: refactor endpoint retrieval (diff) | |
| download | kernel-f8d8464bfc90e058fe68dee02121d46f661f68cd.tar.gz kernel-f8d8464bfc90e058fe68dee02121d46f661f68cd.zip | |
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 <[email protected]>
Signed-off-by: Johan Hovold <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Diffstat (limited to 'drivers/usb/class/cdc-acm.c')
| -rw-r--r-- | drivers/usb/class/cdc-acm.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index d5388938bc7a..00d55ba8983f 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c @@ -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: |
