Use the new endpoint helpers to lookup the required bulk-out endpoint
and the depending on protocol likewise required bulk-in endpoint.

Cc: Pete Zaitcev <[email protected]>
Signed-off-by: Johan Hovold <[email protected]>
---
 drivers/usb/class/usblp.c | 35 +++++++++++++----------------------
 1 file changed, 13 insertions(+), 22 deletions(-)

diff --git a/drivers/usb/class/usblp.c b/drivers/usb/class/usblp.c
index cc61055fb9be..73bd9a2ac530 100644
--- a/drivers/usb/class/usblp.c
+++ b/drivers/usb/class/usblp.c
@@ -1239,8 +1239,9 @@ static int usblp_select_alts(struct usblp *usblp)
 {
        struct usb_interface *if_alt;
        struct usb_host_interface *ifd;
-       struct usb_endpoint_descriptor *epd, *epwrite, *epread;
-       int p, i, e;
+       struct usb_endpoint_descriptor *epwrite, *epread;
+       int p, i;
+       int res;
 
        if_alt = usblp->intf;
 
@@ -1260,31 +1261,21 @@ static int usblp_select_alts(struct usblp *usblp)
                    ifd->desc.bInterfaceProtocol > USBLP_LAST_PROTOCOL)
                        continue;
 
-               /* Look for bulk OUT and IN endpoints. */
-               epwrite = epread = NULL;
-               for (e = 0; e < ifd->desc.bNumEndpoints; e++) {
-                       epd = &ifd->endpoint[e].desc;
-
-                       if (usb_endpoint_is_bulk_out(epd))
-                               if (!epwrite)
-                                       epwrite = epd;
-
-                       if (usb_endpoint_is_bulk_in(epd))
-                               if (!epread)
-                                       epread = epd;
+               /* Look for the expected bulk endpoints. */
+               if (ifd->desc.bInterfaceProtocol > 1) {
+                       res = usb_find_common_endpoints(ifd,
+                                       &epread, &epwrite, NULL, NULL);
+               } else {
+                       epread = NULL;
+                       res = usb_find_bulk_out_endpoint(ifd, &epwrite);
                }
 
                /* Ignore buggy hardware without the right endpoints. */
-               if (!epwrite || (ifd->desc.bInterfaceProtocol > 1 && !epread))
+               if (res)
                        continue;
 
-               /*
-                * Turn off reads for USB_CLASS_PRINTER/1/1 (unidirectional)
-                * interfaces and buggy bidirectional printers.
-                */
-               if (ifd->desc.bInterfaceProtocol == 1) {
-                       epread = NULL;
-               } else if (usblp->quirks & USBLP_QUIRK_BIDIR) {
+               /* Turn off reads for buggy bidirectional printers. */
+               if (usblp->quirks & USBLP_QUIRK_BIDIR) {
                        printk(KERN_INFO "usblp%d: Disabling reads from "
                            "problematic bidirectional printer\n",
                            usblp->minor);
-- 
2.12.0

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to