diff options
author | William Wu <william.wu@rock-chips.com> | 2018-08-02 11:29:40 +0800 |
---|---|---|
committer | Tao Huang <huangtao@rock-chips.com> | 2018-08-02 19:21:39 +0800 |
commit | af0dd3d28b486ee9eb96912a2c4d0b920c570c55 (patch) | |
tree | 86c4dca951e3f3a4c574f815178743f2782b26dd /drivers/usb/gadget | |
parent | 23f0e17a9629971ebab8cccb6c8d5aa1bf013152 (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.c | 8 |
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; } |