On 10/29/2024 11:58 AM, Wesley Cheng wrote: > Hi Thinh, > > On 10/25/2024 4:22 PM, Thinh Nguyen wrote: >> Hi, >> >> On Tue, Oct 15, 2024, Wesley Cheng wrote: >>> From: Mathias Nyman <mathias.nyman@xxxxxxxxxxxxxxx> >>> >>> Introduce XHCI sideband, which manages the USB endpoints being requested by >>> a client driver. This is used for when client drivers are attempting to >>> offload USB endpoints to another entity for handling USB transfers. XHCI >>> sideband will allow for drivers to fetch the required information about the >>> transfer ring, so the user can submit transfers independently. Expose the >>> required APIs for drivers to register and request for a USB endpoint and to >>> manage XHCI secondary interrupters. >>> >>> Multiple ring segment page linking, proper endpoint clean up, and allowing >>> module compilation added by Wesley Cheng to complete original concept code >>> by Mathias Nyman. >>> >>> Signed-off-by: Mathias Nyman <mathias.nyman@xxxxxxxxxxxxxxx> >>> Co-developed-by: Wesley Cheng <quic_wcheng@xxxxxxxxxxx> >>> Signed-off-by: Wesley Cheng <quic_wcheng@xxxxxxxxxxx> >>> --- >>> drivers/usb/host/Kconfig | 9 + >>> drivers/usb/host/Makefile | 2 + >>> drivers/usb/host/xhci-sideband.c | 424 ++++++++++++++++++++++++++++++ >>> drivers/usb/host/xhci.h | 4 + >>> include/linux/usb/xhci-sideband.h | 70 +++++ >>> 5 files changed, 509 insertions(+) >>> create mode 100644 drivers/usb/host/xhci-sideband.c >>> create mode 100644 include/linux/usb/xhci-sideband.h >>> >>> diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig >>> index 4448d0ab06f0..96659efa4be5 100644 >>> --- a/drivers/usb/host/Kconfig >>> +++ b/drivers/usb/host/Kconfig >>> @@ -104,6 +104,15 @@ config USB_XHCI_RZV2M >>> Say 'Y' to enable the support for the xHCI host controller >>> found in Renesas RZ/V2M SoC. >>> >>> +config USB_XHCI_SIDEBAND >>> + tristate "xHCI support for sideband" >>> + help >>> + Say 'Y' to enable the support for the xHCI sideband capability. >>> + Provide a mechanism for a sideband datapath for payload associated >> Please correct me if I'm wrong, but this doesn't look like the actual >> xHCI Audio Sideband capability described in the xHCI spec section 7.9 >> but rather a specific implementation for Qcom right? For the xHCI Audio >> Sideband xHCI capability, the driver should detect this capability >> through the xHCI get extended capability. If this is not xHCI Audio >> Sideband capability, we should properly clarify this in the >> documentation and the naming of things to avoid any confusion. > Sure, that's a good point. It does still currently rely on utilizing the system memory for USB IO transfers. I can add some comments and update some of the documentation to reflect that this is different. Hi Mathias, Would it make sense to rename the APIs and driver to something other than "sideband" so that users don't get confused with the audio sideband that is mentioned above by Thinh? How about using something like xhci-sec-intr to signify that this driver has APIs that will help support the use of xHCI secondary interrupters? Thanks Wesley Cheng > Thanks > > Wesley Cheng > >> I believe your implementation still needs to provide the data to the >> host controller through the system memory right? The xHCI Audio Sideband >> capability may pass the data to the xHC other than the main memory. >> >> BR, >> Thinh >> >>> + with audio class endpoints. This allows for an audio DSP to use >>> + xHCI USB endpoints directly, allowing CPU to sleep while playing >>> + audio. >>> + >>> config USB_XHCI_TEGRA >>> tristate "xHCI support for NVIDIA Tegra SoCs" >>> depends on PHY_TEGRA_XUSB