If the fcc is 0 (indicating an unknown GUID format), then fill in the description field in ENUM_FMT. Otherwise the V4L2 core will WARN. Signed-off-by: Hans Verkuil <hverkuil-cisco@xxxxxxxxx> Fixes: 50459f103edf ("media: uvcvideo: Remove format descriptions") --- diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c index 7aefa76a42b3..2f1ced1212cd 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -256,6 +256,9 @@ static int uvc_parse_format(struct uvc_device *dev, } else { dev_info(&streaming->intf->dev, "Unknown video format %pUl\n", &buffer[5]); + snprintf(format->name, sizeof(format->name), "%pUl\n", + &buffer[5]); + format->fcc = 0; } diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c index 35453f81c1d9..fc6f9e7d8506 100644 --- a/drivers/media/usb/uvc/uvc_v4l2.c +++ b/drivers/media/usb/uvc/uvc_v4l2.c @@ -713,6 +713,10 @@ static int uvc_ioctl_enum_fmt(struct uvc_streaming *stream, if (format->flags & UVC_FMT_FLAG_COMPRESSED) fmt->flags |= V4L2_FMT_FLAG_COMPRESSED; fmt->pixelformat = format->fcc; + if (format->name[0]) + strscpy(fmt->description, format->name, + sizeof(fmt->description)); + return 0; } diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h index 9a596c8d894a..22656755a801 100644 --- a/drivers/media/usb/uvc/uvcvideo.h +++ b/drivers/media/usb/uvc/uvcvideo.h @@ -264,6 +264,8 @@ struct uvc_format { u32 fcc; u32 flags; + char name[32]; + unsigned int nframes; struct uvc_frame *frame; };