UAC2 and tegra-xUDC ISOC transfers

Hello there,

I’m trying to enable UAC2 gadget device on the AGX ORIN using r36.2 release. This is failing because the UAC2 implementation in the Linux kernel requires isochronous (ISOC) transfers and it looks like the tegra xUDC controller doesn’t support isochronous endpoints?

Can you confirm this and suggest whether UAC2 has been ever tested / used on the ORIN board? Or any advice for this matter?


Please check the supported modes in technical reference manual:

> Endpoints
The device controller supports up to 32 endpoints (16 IN and 16 OUT). The endpoint 0 is the control 
endpoint which effectively reduces the number of non-control endpoints to 15 IN and 15 OUT. 
Each endpoint can be set up as IN and OUT direction and as Control, Bulk, or Interrupt transfer 
type. Isochronous endpoint is not supported.

And see if the UAC2 can be enabled in other mode.

UAC2 by standard requires isochronous endpoints.

What is odd to me is that the tegra-xudc driver seems on the contrary to have some notion of ISOC endpoints (search for example for usb_endpoint_xfer_isoc in tegra-xudc.c - drivers/usb/gadget/udc/tegra-xudc.c - Linux source code (v6.7.5) - Bootlin). So there is a chance that the TRM is simply outdated?

Is there any way to have / use isochronous endpoints on the ORIN for USB gadget purposes? Maybe using a different USB controller if any?

Technical reference manual is correct, so if isochronous mode is a hard requirement, we are not able to support it on Xavier and Orin series.

Do you think it is possible to switch the xHCI controller to device mode and use that instead of the xUDC controller currently used by OTG?

We think it may not work since it is a constraint in hardware.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.