This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TUSB7340: TUSB73x0 SuperSpeed USB 3.0 xHCI Bulk/isochronous error

Part Number: TUSB7340

Hi 

We are using Texas Instruments TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller (rev 02). each xHCI HC connect to 3 USB camera directly. 

Camera 1:  1200*1200*16*30 = 691200000b/s ~ 700Mb/s

Camera 2:  1200*1200*16*30  = 691200000b/s ~ 700Mb/s

Camera 3: 1920*1200*16*20 = 737280000b/s ~ 740Mb/s

1200 x 1200 or 1920 x 1200 are picture resolution(number of pixel for each picture).

16 is  YUV encoding, each pixel needs 16bit. 

30/20 are frame rate.

if we using bulk transaction.  some times we got following error from kernel message, it is not easy to reproduce, but we got those error from time to time.

[Thu Apr 6 20:28:53 2023] uvcvideo: Non-zero status (-71) in video completion handler.
[Thu Apr 6 20:28:53 2023] xhci_hcd 0000:77:00.0: Transfer error for slot 2 ep 6 on endpoint
[Thu Apr 6 20:28:53 2023] uvcvideo: Non-zero status (-71) in video completion handler.
[Thu Apr 6 20:28:53 2023] xhci_hcd 0000:77:00.0: Transfer error for slot 2 ep 6 on endpoint
those error msg from this kernel code:
Do you have any idea what this error means?  what can we do to avoid those errors?
If we change camera to use isochronous transaction.  we can only enable one isochronous camera.
from 2nd USB camera, will get following error.
usb 10-2: Not enough bandwidth for new device state.
usb 10-2: Not enough bandwidth for altsetting 1
Detail logs.
[176505.200808] uvcvideo: Device requested 46080 B/frame bandwidth.
[176505.200811] uvcvideo: Selecting alternate setting 1 (46080 B/frame bandwidth).
[176505.200812] uvcvideo: Device requested 46080 B/frame bandwidth.
[176505.200814] uvcvideo: Selecting alternate setting 1 (46080 B/frame bandwidth).
[176505.200860] xhci_hcd 0000:49:00.0: add ep 0x83, slot id 3, new drop flags = 0x0, new add flags = 0x81
[176505.200864] xhci_hcd 0000:49:00.0: xhci_check_bandwidth called for udev 00000000dfb1a7cc
[176505.200876] xhci_hcd 0000:49:00.0: // Ding dong!
[176505.201309] xhci_hcd 0000:49:00.0: Successful Endpoint Configure command
[176505.201469] xhci_hcd 0000:49:00.0: add ep 0x83, slot id 2, new drop flags = 0x0, new add flags = 0x81
[176505.201473] xhci_hcd 0000:49:00.0: xhci_check_bandwidth called for udev 000000004bbf2dcd
[176505.201483] xhci_hcd 0000:49:00.0: // Ding dong!
[176505.201542] usb 10-2: Not enough bandwidth for new device state.
[176505.201547] xhci_hcd 0000:49:00.0: xhci_reset_bandwidth called for udev 000000004bbf2dcd
[176505.201620] usb 10-2: Not enough bandwidth for altsetting 1
[176505.201625] xhci_hcd 0000:49:00.0: xhci_check_bandwidth called for udev 000000004bbf2dcd
[176505.330084] xhci_hcd 0000:49:00.0: xhci_hub_status_data: stopping port polling.
[176505.687380] uvcvideo: Allocated 64 URB buffers of 8x46080 bytes each.
[176505.687615] xhci_hcd 0000:49:00.0: ERROR no room on ep ring, try ring expansion
[176505.687629] xhci_hcd 0000:49:00.0: ring expansion succeed, now has 4 segments
I attached lsusb -v result here: 
lsusb -d 04b4:1103 -v
Bus 012 Device 040: ID 04b4:1103 Cypress Semiconductor Corp.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.10
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 ?
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0         9
  idVendor           0x04b4 Cypress Semiconductor Corp.
  idProduct          0x1103
  bcdDevice            0.00
  iManufacturer           1
  iProduct                2
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          218
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         2
      bFunctionClass         14 Video
      bFunctionSubClass       3 Video Interface Collection
      bFunctionProtocol       0
      iFunction               2
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      1 Video Control
      bInterfaceProtocol      0
      iInterface              2
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         1
        bmCapabilities                   0x01
          Still image supported
        wWidth                           1920
        wHeight                          1200
        dwMinBitRate                737280000
        dwMaxBitRate                737280000
        dwMaxVideoFrameBufferSize     4608000
        dwDefaultFrameInterval        1000000
        bFrameIntervalType                  1
        dwFrameInterval( 0)           1000000
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               1
        bMaxBurst              14
        Mult                    2
my question is: 
USB 3.0 theoretical  bandwidth is 5.0Gb/s,  10b/8b encoding, it's 4.0Gb/s.  I understand there are some protocol overhead, 
but each camera cost ~ 700Mbps,  3 camera total is < 3Gbps. 
why we can not using isochronous for 3 camera?
is there any suggestion for improve stability of those 3 camera?
do you happen to have any benchmark result for TUSB73x0 that can share with us?  thanks.