Re: [PATCH v14 00/53] Introduce QC USB SND audio offloading support

From: Wesley Cheng
Date: Thu Feb 08 2024 - 18:40:54 EST

Hi Mark/Takashi,

On 2/8/2024 3:13 PM, Wesley Cheng wrote:

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
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: update event ring dequeue pointer position to controller
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)

Wesley Cheng

Wesley Cheng (40):
usb: host: xhci: Export enable and disable interrupter APIs
usb: host: xhci: Repurpose event handler for skipping interrupter
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
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