From 154e7b74ec4db8bb2714938e332c79a05efdbda5 Mon Sep 17 00:00:00 2001 From: William Wu Date: Thu, 2 Aug 2018 11:29:40 +0800 Subject: [PATCH] usb: gadget: uvc: fix bFrameIndex of streaming interface descriptor The bFrameIndex of video streaming interface descriptor is initialized to 1 in uvcg_frame_make(), but never be setted for different frame resolutions, this cause host to fail to select the correct frame resolution. This patch increases the bFrameIndex in order. Change-Id: Ic0609976e09d9e3d6f82595c00e2ac7b356e4f5f Signed-off-by: William Wu --- drivers/usb/gadget/function/uvc_configfs.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/usb/gadget/function/uvc_configfs.c b/drivers/usb/gadget/function/uvc_configfs.c index b51f0d278826..9e09f4a46d62 100644 --- a/drivers/usb/gadget/function/uvc_configfs.c +++ b/drivers/usb/gadget/function/uvc_configfs.c @@ -1822,6 +1822,7 @@ static int __uvcg_iter_strm_cls(struct uvcg_streaming_header *h, if (ret) return ret; } + j = 0; } return ret; @@ -1956,12 +1957,15 @@ static int __uvcg_fill_strm(void *priv1, void *priv2, void *priv3, int n, sizeof(*frm->dw_frame_interval); memcpy(*dest, frm->dw_frame_interval, sz); *dest += sz; - if (frm->fmt_type == UVCG_UNCOMPRESSED) + if (frm->fmt_type == UVCG_UNCOMPRESSED) { h->bLength = UVC_DT_FRAME_UNCOMPRESSED_SIZE( frm->frame.b_frame_interval_type); - else if (frm->fmt_type == UVCG_MJPEG) + frm->frame.b_frame_index = n + 1; + } else if (frm->fmt_type == UVCG_MJPEG) { h->bLength = UVC_DT_FRAME_MJPEG_SIZE( frm->frame.b_frame_interval_type); + frm->frame.b_frame_index = n + 1; + } } break; }