]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
media: uvcvideo: Populate all errors in uvc_probe()
authorRicardo Ribalda <ribalda@chromium.org>
Fri, 23 May 2025 14:28:41 +0000 (14:28 +0000)
committerHans Verkuil <hverkuil@xs4all.nl>
Mon, 16 Jun 2025 06:43:23 +0000 (08:43 +0200)
Now we are replacing most of the error codes with -ENODEV.
Instead, Populate the error code from the functions called by
uvc_probe().

Take this opportunity to replace a generic error code from
uvc_scan_device() into something more meaningful.

Suggested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Hans de Goede <hansg@kernel.org>
Link: https://lore.kernel.org/r/20250523-uvc-followup-v2-1-487541656e83@chromium.org
Signed-off-by: Hans de Goede <hansg@kernel.org>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
drivers/media/usb/uvc/uvc_driver.c

index da24a655ab68cc0957762f2b67387677c22224d1..04552da114354128b0cc8fb25e1cc645498ac323 100644 (file)
@@ -1866,7 +1866,7 @@ static int uvc_scan_device(struct uvc_device *dev)
 
        if (list_empty(&dev->chains)) {
                dev_info(&dev->udev->dev, "No valid video chain found.\n");
-               return -1;
+               return -ENODEV;
        }
 
        /* Add GPIO entity to the first chain. */
@@ -2239,7 +2239,6 @@ static int uvc_probe(struct usb_interface *intf,
        /* Parse the Video Class control descriptor. */
        ret = uvc_parse_control(dev);
        if (ret < 0) {
-               ret = -ENODEV;
                uvc_dbg(dev, PROBE, "Unable to parse UVC descriptors\n");
                goto error;
        }
@@ -2275,22 +2274,19 @@ static int uvc_probe(struct usb_interface *intf,
                goto error;
 
        /* Scan the device for video chains. */
-       if (uvc_scan_device(dev) < 0) {
-               ret = -ENODEV;
+       ret = uvc_scan_device(dev);
+       if (ret < 0)
                goto error;
-       }
 
        /* Initialize controls. */
-       if (uvc_ctrl_init_device(dev) < 0) {
-               ret = -ENODEV;
+       ret = uvc_ctrl_init_device(dev);
+       if (ret < 0)
                goto error;
-       }
 
        /* Register video device nodes. */
-       if (uvc_register_chains(dev) < 0) {
-               ret = -ENODEV;
+       ret = uvc_register_chains(dev);
+       if (ret < 0)
                goto error;
-       }
 
 #ifdef CONFIG_MEDIA_CONTROLLER
        /* Register the media device node */