From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
To: Wesley Cheng <quic_wcheng@quicinc.com>,
mathias.nyman@intel.com, gregkh@linuxfoundation.org,
lgirdwood@gmail.com, broonie@kernel.org, perex@perex.cz,
tiwai@suse.com, agross@kernel.org, andersson@kernel.org,
konrad.dybcio@linaro.org, robh+dt@kernel.org,
krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org,
srinivas.kandagatla@linaro.org, bgoswami@quicinc.com,
Thinh.Nguyen@synopsys.com
Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
alsa-devel@alsa-project.org, linux-arm-msm@vger.kernel.org,
devicetree@vger.kernel.org
Subject: Re: [PATCH v9 00/34] Introduce QC USB SND audio offloading support
Date: Wed, 18 Oct 2023 08:54:35 -0500 [thread overview]
Message-ID: <925d7c03-c288-49a4-8bcd-395b32810d75@linux.intel.com> (raw)
In-Reply-To: <366d50fa-500f-e884-d48a-197e65bb2fb7@quicinc.com>
On 10/17/23 19:25, Wesley Cheng wrote:
> Hi Pierre,
>
> On 10/17/2023 1:58 PM, Pierre-Louis Bossart wrote:
>> It's been a very long time since I reviewed earlier versions, and I am
>> still lost on terminology and concepts. The explanations below should
>> really be added as a .rst file in Documentation for reference, not just
>> as a cover letter.
>>
>
> Thanks for the review!
>
> Sure, maybe I can write a more comprehensive documentation that saves
> these details somewhere. Will add a RST documentation for material
> where necessary.
>
>>> Several Qualcomm based chipsets can support USB audio offloading to a
>>> dedicated audio DSP, which can take over issuing transfers to the USB
>>> host controller. The intention is to reduce the load on the main
>>> processors in the SoC, and allow them to be placed into lower power
>>> modes.
>>> There are several parts to this design:
>>> 1. Adding ASoC binding layer
>>> 2. Create a USB backend for Q6DSP
>>
>> "backend" is a loaded terms for ASoC. Can you clarify which part of the
>> ascii art below is a 'backend'?
>>
>
> This would be the Q6USB entity which is the DPCM backend for this
> particular audio path.
DPCM is about dailinks. Technically the q6usb entity is a codec dai
which is part of a DPCM backend dailink.
>
>>> 3. Introduce XHCI interrupter support
>>> 4. Create vendor ops for the USB SND driver
>>>
>>> USB | ASoC
>>> --------------------------------------------------------------------
>>> | _________________________
>>> | |sm8250 platform card |
>>> | |_________________________|
>>> | | |
>>> | ___V____ ____V____
>>> | |Q6USB | |Q6AFE |
>>> | |"codec" | |"cpu" |
>>> | |________| |_________|
>>> | ^ ^ ^
>>> | | |________|
>>> | ___V____ |
>>> | |SOC-USB | |
>>> ________ ________ | | |
>>> |USB SND |<--->|QC offld|<------------>|________| |
>>> |(card.c)| | |<---------- |
>>> |________| |________|___ | | |
>>> ^ ^ | | | ____________V_________
>>> | | | | | |APR/GLINK |
>>> __ V_______________V_____ | | | |______________________|
>>> |USB SND (endpoint.c) | | | | ^
>>> |_________________________| | | | |
>>> ^ | | | ___________V___________
>>> | | | |->|audio DSP |
>>> ___________V_____________ | | |_______________________|
>>> |XHCI HCD |<- |
>>> |_________________________| |
>>>
>>>
>>> Adding ASoC binding layer:
>>> soc-usb: Intention is to treat a USB port similar to a headphone jack.
>>
>> What is a 'port'? USB refers to "interfaces" and "endpoints". Is a
>> "port" a 1:1 mapping to "endpoint"?
>>
>> Below I read "AFE port" so not sure what concepts refer to what.
>>
>
> "Port" in this explanation refers to the USB port. So the audio device
> connected. You are right that a USB device can enumerate w/ multiple
> interfaces (ie UAC + HID + ...) so the closest relation to "port" is
> "interface." It is not a 1:1 mapping w/ the number of endpoints exposed
> by a device.
>
> "AFE port" is just something that has been termed from the audio DSP
> end, so that concept of port is not related to the port where USB
> devices are connected to. This is something that is defined within the
> audio DSP.
Wow. So there's a "USB port" and "AFE port". I would recommend avoiding
the same term for completely different concepts. Why not use "USB device"?
>>> 0 [SM8250MTPWCD938]: sm8250 - SM8250-MTP-WCD9380-WSA8810-VA-D
>>> SM8250-MTP-WCD9380-WSA8810-VA-DMIC
>>
>> How do you plan on exposing the USB PCM device?
>>
>> The lines above are really cryptic, and with no USB reference in any of
>> the short/long card names it's not obvious that this card is different
>> from the no-offload case, is it?
>>
>
> In the end, since the offload case is handled by the audio DSP, it would
> have to go through the platform/machine sound card. That is the sm8250
> device above.
>
>>> 1 [Audio ]: USB-Audio - USB Audio
>>> Generic USB Audio at usb-xhci-hcd.1.auto-1.4,
>>> high speed
>>
>> likewise some sort of qualifier would be useful to show that card 0 and
>> card 1 can target the same USB endpoints.
>>
>
> Do userspace entities look at this card string? Assuming there is only
> one platform card, there are situations where maybe multiple USB audio
> devices are connected to the same USB root hub, so offloading can happen
> on any one of them (not at the same time).
Jaroslav cares, as measured by the changes over the years to make the
card names more self-explanatory.
I really don't see anything in the SM8250MTPWCD938 card name that would
hint at the support of USB. If it's not in the card string, maybe this
can be added in the component string as well (amixer -Dhw:0 info). The
point is that userspace should not have to maintain an 'accept-list' of
card names but have the means to check the USB offload capability with a
vendor-neutral convention.
next prev parent reply other threads:[~2023-10-18 13:57 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-17 20:00 [PATCH v9 00/34] Introduce QC USB SND audio offloading support Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 01/34] xhci: split free interrupter into separate remove and free parts Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 02/34] xhci: add support to allocate several interrupters Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 03/34] xhci: add helper to stop endpoint and wait for completion Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 04/34] xhci: sideband: add initial api to register a sideband entity Wesley Cheng
2023-10-25 3:24 ` Albert Wang
2023-10-17 20:00 ` [PATCH v9 05/34] usb: host: xhci-mem: Cleanup pending secondary event ring events Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 06/34] usb: host: xhci-mem: Allow for interrupter clients to choose specific index Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 07/34] ASoC: Add SOC USB APIs for adding an USB backend Wesley Cheng
2023-10-17 21:48 ` Pierre-Louis Bossart
2023-10-18 2:07 ` Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 08/34] ASoC: dt-bindings: qcom,q6dsp-lpass-ports: Add USB_RX port Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 09/34] ASoC: qcom: qdsp6: Introduce USB AFE port to q6dsp Wesley Cheng
2023-10-17 21:32 ` Pierre-Louis Bossart
2023-10-18 1:45 ` Wesley Cheng
2023-10-18 13:47 ` Pierre-Louis Bossart
2023-10-18 19:36 ` Wesley Cheng
2023-10-19 1:00 ` Pierre-Louis Bossart
2023-10-19 18:42 ` Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 10/34] ASoC: qdsp6: q6afe: Increase APR timeout Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 11/34] ASoC: qcom: qdsp6: Add USB backend ASoC driver for Q6 Wesley Cheng
2023-10-17 21:46 ` Pierre-Louis Bossart
2023-10-17 20:00 ` [PATCH v9 12/34] ALSA: usb-audio: Introduce USB SND platform op callbacks Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 13/34] ALSA: usb-audio: Export USB SND APIs for modules Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 14/34] dt-bindings: usb: xhci: Add num-hc-interrupters definition Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 15/34] dt-bindings: usb: dwc3: Limit " Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 16/34] usb: dwc3: Specify maximum number of XHCI interrupters Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 17/34] usb: host: xhci-plat: Set XHCI max interrupters if property is present Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 18/34] ALSA: usb-audio: qcom: Add USB QMI definitions Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 19/34] ALSA: usb-audio: qcom: Introduce QC USB SND offloading support Wesley Cheng
2023-10-17 23:21 ` Pierre-Louis Bossart
2023-10-17 20:00 ` [PATCH v9 20/34] ALSA: usb-audio: Check for support for requested audio format Wesley Cheng
2023-10-17 22:29 ` Pierre-Louis Bossart
2023-10-18 20:21 ` Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 21/34] ASoC: usb: Add PCM format check API for USB backend Wesley Cheng
2023-10-17 22:33 ` Pierre-Louis Bossart
2023-10-18 20:33 ` Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 22/34] ASoC: qcom: qdsp6: Ensure PCM format is supported by USB audio device Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 23/34] ALSA: usb-audio: Prevent starting of audio stream if in use Wesley Cheng
2023-10-17 22:37 ` Pierre-Louis Bossart
2023-10-18 20:33 ` Wesley Cheng
2023-10-17 20:00 ` [PATCH v9 24/34] ASoC: dt-bindings: Add Q6USB backend Wesley Cheng
2023-10-17 20:01 ` [PATCH v9 25/34] ASoC: dt-bindings: Update example for enabling USB offload on SM8250 Wesley Cheng
2023-10-17 20:01 ` [PATCH v9 26/34] ASoC: qcom: qdsp6: q6afe: Split USB AFE dev_token param into separate API Wesley Cheng
2023-10-17 22:39 ` Pierre-Louis Bossart
2023-10-19 0:10 ` Wesley Cheng
2023-10-17 20:01 ` [PATCH v9 27/34] ALSA: usb-audio: qcom: Populate PCM and USB chip information Wesley Cheng
2023-10-17 22:41 ` Pierre-Louis Bossart
2023-10-19 0:59 ` Wesley Cheng
2023-10-17 20:01 ` [PATCH v9 28/34] ASoC: qcom: qdsp6: Add support to track available USB PCM devices Wesley Cheng
2023-10-17 22:43 ` Pierre-Louis Bossart
2023-10-19 1:00 ` Wesley Cheng
2023-10-17 20:01 ` [PATCH v9 29/34] ASoC: qcom: qdsp6: Add SND kcontrol to select offload device Wesley Cheng
2023-10-17 22:50 ` Pierre-Louis Bossart
2023-10-19 1:39 ` Wesley Cheng
2023-10-17 20:01 ` [PATCH v9 30/34] ASoC: qcom: qdsp6: Add SND kcontrol for fetching offload status Wesley Cheng
2023-10-17 22:53 ` Pierre-Louis Bossart
2023-10-19 1:41 ` Wesley Cheng
2023-10-19 19:25 ` Wesley Cheng
2023-10-19 20:39 ` Pierre-Louis Bossart
2023-10-17 20:01 ` [PATCH v9 31/34] ASoC: qcom: qdsp6: Add headphone jack for offload connection status Wesley Cheng
2023-10-17 23:03 ` Pierre-Louis Bossart
2023-10-17 20:01 ` [PATCH v9 32/34] ALSA: usb-audio: qcom: Use card and PCM index from QMI request Wesley Cheng
2023-10-17 20:01 ` [PATCH v9 33/34] ALSA: usb-audio: Allow for rediscovery of connected USB SND devices Wesley Cheng
2023-10-17 23:07 ` Pierre-Louis Bossart
2023-10-17 20:01 ` [PATCH v9 34/34] ASoC: usb: Rediscover USB SND devices on USB port add Wesley Cheng
2023-10-17 23:11 ` Pierre-Louis Bossart
2023-10-23 21:54 ` Wesley Cheng
2023-10-24 13:35 ` Pierre-Louis Bossart
2023-10-25 22:31 ` Wesley Cheng
2023-10-17 20:58 ` [PATCH v9 00/34] Introduce QC USB SND audio offloading support Pierre-Louis Bossart
2023-10-18 0:25 ` Wesley Cheng
2023-10-18 13:54 ` Pierre-Louis Bossart [this message]
2023-10-18 20:20 ` Wesley Cheng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=925d7c03-c288-49a4-8bcd-395b32810d75@linux.intel.com \
--to=pierre-louis.bossart@linux.intel.com \
--cc=Thinh.Nguyen@synopsys.com \
--cc=agross@kernel.org \
--cc=alsa-devel@alsa-project.org \
--cc=andersson@kernel.org \
--cc=bgoswami@quicinc.com \
--cc=broonie@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=konrad.dybcio@linaro.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=lgirdwood@gmail.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mathias.nyman@intel.com \
--cc=perex@perex.cz \
--cc=quic_wcheng@quicinc.com \
--cc=robh+dt@kernel.org \
--cc=srinivas.kandagatla@linaro.org \
--cc=tiwai@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox