USB: idmouse: refactor endpoint retrieval
authorJohan Hovold <johan@kernel.org>
Fri, 17 Mar 2017 10:35:38 +0000 (11:35 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 23 Mar 2017 12:53:52 +0000 (13:53 +0100)
Use the new endpoint helpers to lookup the required bulk-in endpoint.

Note that we now pick the first bulk-in endpoint regardless of whether
it happens to be the first descriptor.

Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/misc/idmouse.c

index 8b9fd75..d185f49 100644 (file)
@@ -357,26 +357,22 @@ static int idmouse_probe(struct usb_interface *interface,
        dev->interface = interface;
 
        /* set up the endpoint information - use only the first bulk-in endpoint */
-       endpoint = &iface_desc->endpoint[0].desc;
-       if (!dev->bulk_in_endpointAddr && usb_endpoint_is_bulk_in(endpoint)) {
-               /* we found a bulk in endpoint */
-               dev->orig_bi_size = usb_endpoint_maxp(endpoint);
-               dev->bulk_in_size = 0x200; /* works _much_ faster */
-               dev->bulk_in_endpointAddr = endpoint->bEndpointAddress;
-               dev->bulk_in_buffer =
-                       kmalloc(IMGSIZE + dev->bulk_in_size, GFP_KERNEL);
-
-               if (!dev->bulk_in_buffer) {
-                       idmouse_delete(dev);
-                       return -ENOMEM;
-               }
+       result = usb_find_bulk_in_endpoint(iface_desc, &endpoint);
+       if (result) {
+               dev_err(&interface->dev, "Unable to find bulk-in endpoint.\n");
+               idmouse_delete(dev);
+               return result;
        }
 
-       if (!(dev->bulk_in_endpointAddr)) {
-               dev_err(&interface->dev, "Unable to find bulk-in endpoint.\n");
+       dev->orig_bi_size = usb_endpoint_maxp(endpoint);
+       dev->bulk_in_size = 0x200; /* works _much_ faster */
+       dev->bulk_in_endpointAddr = endpoint->bEndpointAddress;
+       dev->bulk_in_buffer = kmalloc(IMGSIZE + dev->bulk_in_size, GFP_KERNEL);
+       if (!dev->bulk_in_buffer) {
                idmouse_delete(dev);
-               return -ENODEV;
+               return -ENOMEM;
        }
+
        /* allow device read, write and ioctl */
        dev->present = 1;