On Thu Mar 13 12:20:40 2025 +0000, Ricardo Ribalda wrote: > Use the dev_err_probe() helper for devm_gpiod_get_optional(), like we do > with gpiod_to_irq() > > That eventually calls device_set_deferred_probe_reason() which can be > helpful for tracking down problems. > > Now that all the error paths in uvc_gpio_parse have dev_err_probe, we > can remove the error message in uvc_probe. > > Suggested-by: Doug Anderson <diand...@chromium.org> > Reviewed-by: Douglas Anderson <diand...@chromium.org> > Signed-off-by: Ricardo Ribalda <riba...@chromium.org> > Message-ID: <20250313-uvc-eprobedefer-v3-2-a1d312708...@chromium.org> > Reviewed-by: Hans de Goede <hdego...@redhat.com> > Signed-off-by: Hans de Goede <hdego...@redhat.com> > Signed-off-by: Hans Verkuil <hverk...@xs4all.nl>
Patch committed. Thanks, Hans Verkuil drivers/media/usb/uvc/uvc_driver.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) --- diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c index 25e9aea81196..da24a655ab68 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -1299,8 +1299,13 @@ static int uvc_gpio_parse(struct uvc_device *dev) gpio_privacy = devm_gpiod_get_optional(&dev->intf->dev, "privacy", GPIOD_IN); - if (IS_ERR_OR_NULL(gpio_privacy)) - return PTR_ERR_OR_ZERO(gpio_privacy); + if (!gpio_privacy) + return 0; + + if (IS_ERR(gpio_privacy)) + return dev_err_probe(&dev->intf->dev, + PTR_ERR(gpio_privacy), + "Can't get privacy GPIO\n"); irq = gpiod_to_irq(gpio_privacy); if (irq < 0) @@ -2241,10 +2246,8 @@ static int uvc_probe(struct usb_interface *intf, /* Parse the associated GPIOs. */ ret = uvc_gpio_parse(dev); - if (ret < 0) { - uvc_dbg(dev, PROBE, "Unable to parse UVC GPIOs\n"); + if (ret < 0) goto error; - } dev_info(&dev->udev->dev, "Found UVC %u.%02x device %s (%04x:%04x)\n", dev->uvc_version >> 8, dev->uvc_version & 0xff,