linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Wesley Cheng <quic_wcheng@quicinc.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Cezary Rojewski <cezary.rojewski@intel.com>,
	Greg KH <gregkh@linuxfoundation.org>,
	<srinivas.kandagatla@linaro.org>, <mathias.nyman@intel.com>,
	<perex@perex.cz>, <conor+dt@kernel.org>,
	<dmitry.torokhov@gmail.com>, <corbet@lwn.net>,
	<broonie@kernel.org>, <lgirdwood@gmail.com>, <krzk+dt@kernel.org>,
	<Thinh.Nguyen@synopsys.com>, <tiwai@suse.com>, <robh@kernel.org>,
	<linux-kernel@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-sound@vger.kernel.org>, <linux-usb@vger.kernel.org>,
	<linux-input@vger.kernel.org>, <linux-arm-msm@vger.kernel.org>,
	<linux-doc@vger.kernel.org>
Subject: Re: [PATCH v30 00/30] Introduce QC USB SND audio offloading support
Date: Tue, 10 Dec 2024 18:00:13 -0800	[thread overview]
Message-ID: <03c79eca-f79b-4008-9037-ea96e18f093f@quicinc.com> (raw)
In-Reply-To: <87y10n3300.wl-tiwai@suse.de>


On 12/10/2024 8:40 AM, Takashi Iwai wrote:
> On Tue, 10 Dec 2024 01:59:10 +0100,
> Wesley Cheng wrote:
>> On 12/5/2024 4:53 PM, Wesley Cheng wrote:
>>> On 12/4/2024 2:49 PM, Pierre-Louis Bossart wrote:
>>>>>>> UAOL is one of our priorities right now and some (e.g.: me) prefer to not pollute their mind with another approaches until what they have in mind is crystalized. In short, I'd vote for a approach where USB device has a ASoC representative in sound/soc/codecs/ just like it is the case for HDAudio. Either that or at least a ASoC-component representative, a dependency for UAOL-capable card to enumerate.
>>>>>> The main difference is that we don’t want the USB audio *control* part to be seen in two places. The only requirement is to stream data with an alternate optimized path, but all the volume control and whatnot is supposed to be done using the regular usb-audio card. It would be complete chaos for userspace if the same volume can be represented differently.
>>>>>> The comparison with HDaudio is not quite right either. In the case of HDaudio, it’s an all-or-nothing solution. The external device is controlled by one entity, either legacy or ASoC based. That choice is made at driver probe time. In the case of USB, the application needs to have the choice of using either the legacy path, or the optimized path that goes through a DSP. I think the last thing you want given this context is to make the USB audio device an ASoC codec.
>>>>>> I find it rather interesting that this architectural feedback comes at the v30, it’s unfair to Wesley really...
>>>>> Hi Pierre,
>>>>>
>>>>> Obviously I'm late. After scanning the history of this one, indeed it's been a while since v1 has been sent. And thus I posted no NACKs. At the same time if I am to choose between: provide feedback vs provide no-feedback, I'd rather choose the former even if I'm to be ignored/overridden by a subsystem maintainer.
>>>>>
>>>>> The subsystem maintainers also hold the last word, and I have no problem with them merging the patches if they believe its existing shape is good-enough. For example, my team could follow up this implementation next year with a patchset expanding/updating the functionality. I see this as a viable option.
>>>> That’s what we had in mind before I left Intel. The interfaces seen by userspace are PCM devices and kcontrols, it doesn’t matter too much if there is one card, two cards, and if the implementation relies on an ASoC codec, a library or something else. 
>>>> The bulk of the work is to enable the USB offload from top to bottom, by changing PipeWire/CRAS/HAL to select the new optimized path when available and deal with plug/unplug events.
>>>> Improvements at the kernel level can be done later if required. It’s hard to argue that the proposal in this series is fundamentally broken, but as usual it’s likely that some requirements are missing or not known yet. The same thing happened with compressed offload, none one thought about gapless playback until Android made it a requirement. Maybe what we’d need is a ‘protocol version’ for USB offload so that changes can be tracked and handled?
>>> Thanks for chiming in, Pierre.  So for now, with the next revision I have prepared, I'm currently adding:
>>>
>>> 1.  Some improvements to xHCI sideband to account for core sequences that need to be notified to the offload driver, ie transfer ring free
>>>
>>> 2.  Moved the USB SND offload mixer driver into the QC vendor module for now, as instructed by Takashi:
>>>
>>> https://lore.kernel.org/linux-usb/87cyiiaxpc.wl-tiwai@suse.de/
>>>
>>> 3.  Added separate kcontrols for fetching mapped PCM device and card indexes (versus one that returns a card and PCM device pair [array])
>>>
>>> 4.  Removed some jack controls (enable/disable) from soc-usb
>>>
>>> 5.  Updated documentation for #3
>>>
>>>
>>> Those are the major changes that will come in the next revision.  I'm just trying to figure out who/where the "protocol version" should be checked if we decided to add it.  (or if we need to check for it anywhere...)  From the userspace perspective, it should be agnostic to how we've implemented offloading from the kernel, and I don't see any major shifts in how userspace implements things even if we make improvements from kernel.
>>
>> Hi Takashi,
>>
>> Could you possibly help share some direction on what you think of the current design, and if you think its detrimental that we make modifications mentioned by Cezary?  I have the next revision ready for review, but I wanted to get a better sense on the likeliness of this landing upstream w/o the major modifications.
> Honestly speaking, I have no big preference about that design
> question.  The most important thing is rather what's visible change to
> users.  An advantage of the current design (sort of add-on to the
> existing USB-audio driver) is that it's merely a few card controls
> that are added and visible, and the rest is just as of now.  The
> remaining design issue (two cards or single card) is rather
> kernel-internal, and has nothing to do with users.  So I'm fine with
> the current design.
>
> OTOH, if we follow the pattern of HD-audio, at least there will be
> more preliminary changes in USB-audio driver side like we've done for
> HD-audio.  That is, make most of USB-audio code to be usable as (a
> kind of) library code.  It's more work, but certainly doable.  And if
> that can be achieved and there other similar use cases of this stuff
> not only from Qualcomm, it might make sense to go in that way, too.
> That said, it's rather a question about what's extended in future.
> If Intel will need / want to move on that direction, too, that's a
> good reason to reconsider the basic design.
>

So to clarify, what Cezary and I are proposing are actually two different concepts to achieve some sort of offloading for audio data.  In my use case, we're trying to leverage as much of the USB SND implementation as possible, and only offloading the handling of audio transfers.  Everything else is still handled by USB SND, hence the reason for it being an add-on since most of it stays the same.  Unfortunately, I don't have any details about the full HW offload design, as public material on it is fairly minimal.  So it would be difficult for me to rework my series to something I don't have a line of sight into.  Personally (and as you can probably tell :)), I would prefer if we could do the refactoring in stages (if actually required), since I've been pushing this method for awhile now, and I'm not sure if I can take up that effort to do that on my next submission.  At least from the QC perspective if we did move to the HDaudio-type implementation, I think I'd need to also
change up the ASoC design we have currently implemented as well, so it wouldn't be a trivial change.


Thanks

Wesley Cheng


  reply	other threads:[~2024-12-11  2:00 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-06 19:33 [PATCH v30 00/30] Introduce QC USB SND audio offloading support Wesley Cheng
2024-11-06 19:33 ` [PATCH v30 01/30] usb: host: xhci: Repurpose event handler for skipping interrupter events Wesley Cheng
2024-11-20 11:48   ` Mathias Nyman
2024-11-20 18:48     ` Wesley Cheng
2024-11-06 19:33 ` [PATCH v30 02/30] xhci: sec-intr: add initial api to register a secondary interrupter entity Wesley Cheng
2024-11-20 14:36   ` Mathias Nyman
2024-11-21  1:34     ` Wesley Cheng
2024-11-21 19:15       ` Mathias Nyman
2024-11-21 20:24         ` Wesley Cheng
2024-11-06 19:33 ` [PATCH v30 03/30] usb: host: xhci-mem: Cleanup pending secondary event ring events Wesley Cheng
2024-11-06 19:33 ` [PATCH v30 04/30] usb: host: xhci-mem: Allow for interrupter clients to choose specific index Wesley Cheng
2024-11-06 19:33 ` [PATCH v30 05/30] usb: host: xhci-plat: Set XHCI max interrupters if property is present Wesley Cheng
2024-11-06 19:33 ` [PATCH v30 06/30] usb: dwc3: Specify maximum number of XHCI interrupters Wesley Cheng
2024-11-06 19:33 ` [PATCH v30 07/30] ALSA: Add USB audio device jack type Wesley Cheng
2024-11-20 11:51   ` Takashi Iwai
2024-11-06 19:33 ` [PATCH v30 08/30] ALSA: usb-audio: Export USB SND APIs for modules Wesley Cheng
2024-11-06 19:33 ` [PATCH v30 09/30] ALSA: usb-audio: Check for support for requested audio format Wesley Cheng
2024-11-06 19:33 ` [PATCH v30 10/30] ALSA: usb-audio: Save UAC sample size information Wesley Cheng
2024-11-06 19:33 ` [PATCH v30 11/30] ALSA: usb-audio: Prevent starting of audio stream if in use Wesley Cheng
2024-11-06 19:33 ` [PATCH v30 12/30] ASoC: Add SOC USB APIs for adding an USB backend Wesley Cheng
2024-11-06 19:33 ` [PATCH v30 13/30] ASoC: usb: Add PCM format check API for " Wesley Cheng
2024-11-06 19:33 ` [PATCH v30 14/30] ASoC: usb: Create SOC USB SND jack kcontrol Wesley Cheng
2024-12-03 16:14   ` Cezary Rojewski
2024-12-03 23:52     ` Wesley Cheng
2024-11-06 19:33 ` [PATCH v30 15/30] ASoC: usb: Fetch ASoC card and pcm device information Wesley Cheng
2024-11-20 12:23   ` Takashi Iwai
2024-11-20 22:36     ` Wesley Cheng
2024-11-06 19:33 ` [PATCH v30 16/30] ASoC: doc: Add documentation for SOC USB Wesley Cheng
2024-11-06 19:34 ` [PATCH v30 17/30] ASoC: dt-bindings: qcom,q6dsp-lpass-ports: Add USB_RX port Wesley Cheng
2024-11-06 19:34 ` [PATCH v30 18/30] ASoC: dt-bindings: Update example for enabling USB offload on SM8250 Wesley Cheng
2024-11-06 19:34 ` [PATCH v30 19/30] ASoC: qcom: qdsp6: Introduce USB AFE port to q6dsp Wesley Cheng
2024-11-06 19:34 ` [PATCH v30 20/30] ASoC: qcom: qdsp6: q6afe: Increase APR timeout Wesley Cheng
2024-11-06 19:34 ` [PATCH v30 21/30] ASoC: qcom: qdsp6: Add USB backend ASoC driver for Q6 Wesley Cheng
2024-11-06 19:34 ` [PATCH v30 22/30] ASoC: qcom: qdsp6: Add headphone jack for offload connection status Wesley Cheng
2024-11-06 19:34 ` [PATCH v30 23/30] ASoC: qcom: qdsp6: Fetch USB offload mapped card and PCM device Wesley Cheng
2024-11-06 19:34 ` [PATCH v30 24/30] ALSA: usb-audio: Introduce USB SND platform op callbacks Wesley Cheng
2024-11-06 19:34 ` [PATCH v30 25/30] ALSA: usb-audio: qcom: Add USB QMI definitions Wesley Cheng
2024-11-06 19:34 ` [PATCH v30 26/30] ALSA: usb-audio: qcom: Introduce QC USB SND offloading support Wesley Cheng
2024-11-20 12:15   ` Takashi Iwai
2024-11-20 22:10     ` Wesley Cheng
2024-11-06 19:34 ` [PATCH v30 27/30] ALSA: usb-audio: qcom: Don't allow USB offload path if PCM device is in use Wesley Cheng
2024-11-06 19:34 ` [PATCH v30 28/30] ALSA: usb-audio: Add USB offload route kcontrol Wesley Cheng
2024-11-20 12:12   ` Takashi Iwai
2024-11-20 19:13     ` Wesley Cheng
2024-11-21 15:50       ` Takashi Iwai
2024-11-25 20:33         ` Wesley Cheng
2024-11-26 14:14           ` Takashi Iwai
2024-11-26 23:19             ` Wesley Cheng
2024-12-03 16:13   ` Cezary Rojewski
2024-12-03 23:15     ` Wesley Cheng
2024-12-06  9:09       ` Cezary Rojewski
2024-12-06 20:43         ` Wesley Cheng
2024-12-10 15:24           ` Cezary Rojewski
2024-12-10 16:52             ` Takashi Iwai
2024-12-06 23:35         ` Wesley Cheng
2024-11-06 19:34 ` [PATCH v30 29/30] ALSA: usb-audio: Allow for rediscovery of connected USB SND devices Wesley Cheng
2024-11-06 19:34 ` [PATCH v30 30/30] ASoC: usb: Rediscover USB SND devices on USB port add Wesley Cheng
2024-11-15 22:42 ` [PATCH v30 00/30] Introduce QC USB SND audio offloading support Wesley Cheng
2024-11-16  7:42   ` Greg KH
2024-11-19 17:50     ` Wesley Cheng
2024-11-20 12:39       ` Takashi Iwai
2024-11-20 23:18         ` Wesley Cheng
2024-12-01  3:14           ` Pierre-Louis Bossart
2024-12-03 16:17             ` Cezary Rojewski
2024-12-03 16:57               ` Greg KH
2024-12-04 21:14                 ` Cezary Rojewski
2024-12-05  1:15                   ` Wesley Cheng
2024-12-05  6:50                     ` Greg KH
2024-12-03 20:38               ` Wesley Cheng
2024-12-04 22:01                 ` Cezary Rojewski
2024-12-06  0:28                   ` Wesley Cheng
2024-12-10 15:18                     ` Cezary Rojewski
2024-12-10 22:20                       ` Wesley Cheng
2024-12-17 23:20                       ` Pierre-Louis Bossart
     [not found]               ` <4C900353-B977-451C-B003-BAA51E458726@linux.dev>
2024-12-04 22:11                 ` Cezary Rojewski
     [not found]                   ` <4E9925AF-F297-42A5-9CB8-F8568F0A5EDF@linux.dev>
2024-12-06  0:53                     ` Wesley Cheng
2024-12-10  0:59                       ` Wesley Cheng
2024-12-10 16:40                         ` Takashi Iwai
2024-12-11  2:00                           ` Wesley Cheng [this message]
2024-12-13  9:10                             ` Guan-Yu Lin
2024-12-03 16:16   ` Cezary Rojewski

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=03c79eca-f79b-4008-9037-ea96e18f093f@quicinc.com \
    --to=quic_wcheng@quicinc.com \
    --cc=Thinh.Nguyen@synopsys.com \
    --cc=broonie@kernel.org \
    --cc=cezary.rojewski@intel.com \
    --cc=conor+dt@kernel.org \
    --cc=corbet@lwn.net \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=krzk+dt@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathias.nyman@intel.com \
    --cc=perex@perex.cz \
    --cc=pierre-louis.bossart@linux.dev \
    --cc=robh@kernel.org \
    --cc=srinivas.kandagatla@linaro.org \
    --cc=tiwai@suse.com \
    --cc=tiwai@suse.de \
    /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;
as well as URLs for NNTP newsgroup(s).