• Ricardo Ribalda's avatar
    media: uvcvideo: Ignore empty TS packets · 5cd7c25f
    Ricardo Ribalda authored
    Some SunplusIT cameras took a borderline interpretation of the UVC 1.5
    standard, and fill the PTS and SCR fields with invalid data if the
    package does not contain data.
    
    "STC must be captured when the first video data of a video frame is put
    on the USB bus."
    
    Some SunplusIT devices send, e.g.,
    
    buffer: 0xa7755c00 len 000012 header:0x8c stc 00000000 sof 0000 pts 00000000
    buffer: 0xa7755c00 len 000012 header:0x8c stc 00000000 sof 0000 pts 00000000
    buffer: 0xa7755c00 len 000668 header:0x8c stc 73779dba sof 070c pts 7376d37a
    
    While the UVC specification meant that the first two packets shouldn't
    have had the SCR bit set in the header.
    
    This borderline/buggy interpretation has been implemented in a variety
    of devices, from directly SunplusIT and from other OEMs that rebrand
    SunplusIT products. So quirking based on VID:PID will be problematic.
    
    All the affected modules have the following extension unit:
    VideoControl Interface Descriptor:
      guidExtensionCode         {82066163-7050-ab49-b8cc-b3855e8d221d}
    
    But the vendor plans to use that GUID in the future and fix the bug,
    this means that we should use heuristic to figure out the broken
    packets.
    
    This patch takes care of this.
    
    lsusb of one of the affected cameras:
    
    Bus 001 Device 003: ID 1bcf:2a01 Sunplus Innovation Technology Inc.
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.01
      bDeviceClass          239 Miscellaneous Device
      bDeviceSubClass         2 ?
      bDeviceProtocol         1 Interface Association
      bMaxPacketSize0        64
      idVendor           0x1bcf Sunplus Innovation Technology Inc.
      idProduct          0x2a01
      bcdDevice            0.02
      iManufacturer           1 SunplusIT Inc
      iProduct                2 HanChen Wise Camera
      iSerial                 3 01.00.00
      bNumConfigurations      1
    Tested-by: default avatarHungNien Chen <hn.chen@sunplusit.com>
    Reviewed-by: default avatarSergey Senozhatsky <senozhatsky@chromium.org>
    Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: default avatarRicardo Ribalda <ribalda@chromium.org>
    Reviewed-by: default avatarTomasz Figa <tfiga@chromium.org>
    Link: https://lore.kernel.org/r/20240323-resend-hwtimestamp-v10-2-b08e590d97c7@chromium.orgSigned-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
    5cd7c25f
uvc_video.c 65.6 KB