summaryrefslogtreecommitdiff
path: root/drivers/usb/gadget
diff options
context:
space:
mode:
authorWilliam Wu <william.wu@rock-chips.com>2018-08-02 11:29:40 +0800
committerTao Huang <huangtao@rock-chips.com>2018-08-02 19:21:39 +0800
commitaf0dd3d28b486ee9eb96912a2c4d0b920c570c55 (patch)
tree86c4dca951e3f3a4c574f815178743f2782b26dd /drivers/usb/gadget
parent23f0e17a9629971ebab8cccb6c8d5aa1bf013152 (diff)
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 <william.wu@rock-chips.com>
Diffstat (limited to 'drivers/usb/gadget')
-rw-r--r--drivers/usb/gadget/function/uvc_configfs.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/usb/gadget/function/uvc_configfs.c b/drivers/usb/gadget/function/uvc_configfs.c
index 01656f1c6d65..26c6ba150193 100644
--- a/drivers/usb/gadget/function/uvc_configfs.c
+++ b/drivers/usb/gadget/function/uvc_configfs.c
@@ -1871,6 +1871,7 @@ static int __uvcg_iter_strm_cls(struct uvcg_streaming_header *h,
if (ret)
return ret;
}
+ j = 0;
}
return ret;
@@ -2005,12 +2006,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;
}