Hi Mark/Takashi,
On 2/8/2024 3:13 PM, Wesley Cheng wrote: <snip>
Would it be possible to see if we could start pulling some of these non offloading dependent changes into your repos? It would really be helpful since the # of patches is getting a little cumbersome to maintain. If we need to make any follow ups, I can address them as a separate patch and add it to the series w/ the other changes that are still pending.
Mathias Nyman (13): xhci: fix possible null pointer dereference at secondary interrupter removal xhci: fix off by one check when adding a secondary interrupter. xhci: Add interrupt pending autoclear flag to each interrupter xhci: Add helper to set an interrupters interrupt moderation interval xhci: make isoc_bei_interval variable interrupter specific. xhci: remove unnecessary event_ring_deq parameter from xhci_handle_event() xhci: update event ring dequeue pointer position to controller correctly xhci: move event processing for one interrupter to a separate function xhci: add helper that checks for unhandled events on a event ring xhci: Don't check if the event ring is valid before every event TRB xhci: Decouple handling an event from checking for unhandled events xhci: add helper to stop endpoint and wait for completion xhci: sideband: add initial api to register a sideband entity
Will work with Mathias on the XHCI stuff when he gets some time to review the set of changes added for the XHCI interrupters. Some of the series in USB SND are dependent on that, such as the qc_audio_offload driver, since it makes calls into the XHCI sideband that was added, so won't be able to pull that in yet. (This is the only driver that will interact w/ XHCI sideband, all ASoC and general USB SND changes are independent)
Thanks Wesley Cheng
Wesley Cheng (40): usb: host: xhci: Export enable and disable interrupter APIs usb: host: xhci: Repurpose event handler for skipping interrupter events xhci: export XHCI IMOD setting helper for interrupters usb: host: xhci-sideband: Expose a sideband interrupter enable API usb: host: xhci-mem: Cleanup pending secondary event ring events usb: host: xhci-mem: Allow for interrupter clients to choose specific index ASoC: Add SOC USB APIs for adding an USB backend ASoC: dt-bindings: qcom,q6dsp-lpass-ports: Add USB_RX port ASoC: qcom: qdsp6: Introduce USB AFE port to q6dsp ASoC: qdsp6: q6afe: Increase APR timeout > ASoC: qcom: qdsp6: Add USB backend ASoC driver for Q6> ALSA:
usb-audio: Introduce USB SND platform op callbacks
ALSA: usb-audio: Export USB SND APIs for modules ALSA: usb-audio: Save UAC sample size information usb: dwc3: Specify maximum number of XHCI interrupters usb: host: xhci-plat: Set XHCI max interrupters if property is present ALSA: usb-audio: qcom: Add USB QMI definitions ALSA: usb-audio: qcom: Introduce QC USB SND offloading support ALSA: usb-audio: Check for support for requested audio format ASoC: usb: Add PCM format check API for USB backend ASoC: qcom: qdsp6: Ensure PCM format is supported by USB audio device ALSA: usb-audio: Prevent starting of audio stream if in use ALSA: usb-audio: Do not allow USB offload path if PCM device is in use ASoC: dt-bindings: Add Q6USB backend ASoC: dt-bindings: Update example for enabling USB offload on SM8250 ALSA: usb-audio: qcom: Populate PCM and USB chip information ASoC: qcom: qdsp6: Add support to track available USB PCM devices ASoC: Introduce SND kcontrols to select sound card and PCM device ASoC: qcom: qdsp6: Add SOC USB offload select get/put callbacks ASoC: Add SND kcontrol for fetching USB offload status ASoC: qcom: qdsp6: Add PCM ops to track current state ASoC: usb: Create SOC USB SND jack kcontrol ASoC: qcom: qdsp6: Add headphone jack for offload connection status ASoC: usb: Fetch ASoC sound card information ALSA: usb-audio: mixer: Add USB offloading mixer control ALSA: usb-audio: qcom: Use card and PCM index from QMI request ALSA: usb-audio: Allow for rediscovery of connected USB SND devices ASoC: usb: Rediscover USB SND devices on USB port add ASoC: qcom: Populate SoC components string ASoC: doc: Add documentation for SOC USB
.../devicetree/bindings/sound/qcom,q6usb.yaml | 55 + .../bindings/sound/qcom,sm8250.yaml | 15 + Documentation/sound/soc/index.rst | 1 + Documentation/sound/soc/usb.rst | 611 ++++++ drivers/usb/dwc3/core.c | 12 + drivers/usb/dwc3/core.h | 2 + drivers/usb/dwc3/host.c | 5 +- drivers/usb/host/Kconfig | 9 + drivers/usb/host/Makefile | 2 + drivers/usb/host/xhci-mem.c | 53 +- drivers/usb/host/xhci-plat.c | 2 + drivers/usb/host/xhci-ring.c | 240 ++- drivers/usb/host/xhci-sideband.c | 439 ++++ drivers/usb/host/xhci.c | 97 +- drivers/usb/host/xhci.h | 21 +- .../sound/qcom,q6dsp-lpass-ports.h | 1 + include/linux/usb/xhci-sideband.h | 70 + include/sound/q6usboffload.h | 20 + include/sound/soc-usb.h | 90 + sound/soc/Makefile | 2 +- sound/soc/qcom/Kconfig | 4 + sound/soc/qcom/common.c | 41 + sound/soc/qcom/common.h | 4 +- sound/soc/qcom/qdsp6/Makefile | 1 + sound/soc/qcom/qdsp6/q6afe-dai.c | 60 + sound/soc/qcom/qdsp6/q6afe.c | 193 +- sound/soc/qcom/qdsp6/q6afe.h | 36 +- sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c | 23 + sound/soc/qcom/qdsp6/q6dsp-lpass-ports.h | 1 + sound/soc/qcom/qdsp6/q6routing.c | 9 + sound/soc/qcom/qdsp6/q6usb.c | 401 ++++ sound/soc/qcom/sm8250.c | 14 +- sound/soc/soc-usb.c | 538 +++++ sound/usb/Kconfig | 19 + sound/usb/Makefile | 3 +- sound/usb/card.c | 109 + sound/usb/card.h | 24 + sound/usb/endpoint.c | 1 + sound/usb/format.c | 1 + sound/usb/helper.c | 1 + sound/usb/mixer.c | 5 + sound/usb/mixer_usb_offload.c | 72 + sound/usb/mixer_usb_offload.h | 17 + sound/usb/pcm.c | 104 +- sound/usb/pcm.h | 11 + sound/usb/qcom/Makefile | 2 + sound/usb/qcom/qc_audio_offload.c | 1910 +++++++++++++++++ sound/usb/qcom/usb_audio_qmi_v01.c | 892 ++++++++ sound/usb/qcom/usb_audio_qmi_v01.h | 162 ++ 49 files changed, 6228 insertions(+), 177 deletions(-) create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6usb.yaml create mode 100644 Documentation/sound/soc/usb.rst create mode 100644 drivers/usb/host/xhci-sideband.c create mode 100644 include/linux/usb/xhci-sideband.h create mode 100644 include/sound/q6usboffload.h create mode 100644 include/sound/soc-usb.h create mode 100644 sound/soc/qcom/qdsp6/q6usb.c create mode 100644 sound/soc/soc-usb.c create mode 100644 sound/usb/mixer_usb_offload.c create mode 100644 sound/usb/mixer_usb_offload.h create mode 100644 sound/usb/qcom/Makefile create mode 100644 sound/usb/qcom/qc_audio_offload.c create mode 100644 sound/usb/qcom/usb_audio_qmi_v01.c create mode 100644 sound/usb/qcom/usb_audio_qmi_v01.h