Hi Ai On Fri, 18 Nov 2022 at 10:09, 艾超 <aichao@xxxxxxxxxx> wrote: > > Hi Ricardo > > > > 3072 is smaller than 0x1000. > > It is ok to have values between 1024 and 0x1000 (4096) ? Wouldn't it make more sense ? ctrl->dwMaxPayloadTransferSize = 0x1000; The value 1000 seems a bit random, specially when your compare your range with 4096 > > > Yes, for some new device which requested 3072 B/frame bandwidth, that the camera preview normally. > > > > > ---- > > > > > > > 主 题:Re: [PATCH v3] media: uvcvideo: Fix bandwidth error for Alcor camera > 日 期:2022-11-18 16:15 > 发件人:ribalda@xxxxxxxxxxxx > 收件人:艾超 > > > Hi Ai > > Thanks for your patch! > > On Fri, 18 Nov 2022 at 03:23, Ai Chao <aichao@xxxxxxxxxx> wrote: > > > > For Alcor Corp. Slave camera(1b17:6684/2017:0011), it support to > > output compressed video data, and it return a wrong > > dwMaxPayloadTransferSize fields. This is a fireware issue, > s/fireware/firmware/ > > but the manufacturer cannot provide a const return fields > > by the fireware. For some device, device requested 2752512 > > B/frame bandwidth. For some device, device requested 3072 > > B/frame bandwidth. so we check the dwMaxPayloadTransferSize > > fields,if it large than 0x1000, reset dwMaxPayloadTransferSize > > to 1024, and the camera preview normally. > > 3072 is smaller than 0x1000. > > It is ok to have values between 1024 and 0x1000 (4096) ? > > Thanks > > > > > Signed-off-by: Ai Chao <aichao@xxxxxxxxxx> > > > > --- > > change for v3 > > - Add VID/PID 2017:0011 > > > > change for v2 > > - Used usb_match_one_id to check VID and PID > > --- > > --- > > drivers/media/usb/uvc/uvc_video.c | 11 +++++++++++ > > 1 file changed, 11 insertions(+) > > > > diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c > > index d2eb9066e4dc..1260800ef8bd 100644 > > --- a/drivers/media/usb/uvc/uvc_video.c > > +++ b/drivers/media/usb/uvc/uvc_video.c > > @@ -135,6 +135,10 @@ static void uvc_fixup_video_ctrl(struct uvc_streaming *stream, > > static const struct usb_device_id elgato_cam_link_4k = { > > USB_DEVICE(0x0fd9, 0x0066) > > }; > > + static const struct usb_device_id alcor_corp_slave_cam = { > > + USB_DEVICE(0x1b17, 0x6684), > > + USB_DEVICE(0x2017, 0x0011), > > + }; > > struct uvc_format *format = NULL; > > struct uvc_frame *frame = NULL; > > unsigned int i; > > @@ -234,6 +238,13 @@ static void uvc_fixup_video_ctrl(struct uvc_streaming *stream, > > > > ctrl->dwMaxPayloadTransferSize = bandwidth; > > } > > + > > + /* Alcor Corp. Slave camera return wrong dwMaxPayloadTransferSize */ > > + if ((format->flags & UVC_FMT_FLAG_COMPRESSED) && > > + (ctrl->dwMaxPayloadTransferSize > 0x1000) && > > + usb_match_one_id(stream->dev->intf, &alcor_corp_slave_cam)) { > > + ctrl->dwMaxPayloadTransferSize = 1024; > > + } > > } > > > > static size_t uvc_video_ctrl_size(struct uvc_streaming *stream) > > -- > > 2.25.1 > > > > > -- > Ricardo Ribalda -- Ricardo Ribalda