All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephan Gerhold <stephan.gerhold@linaro.org>
To: Wesley Cheng <quic_wcheng@quicinc.com>
Cc: 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,
	robh@kernel.org, krzk+dt@kernel.org,
	pierre-louis.bossart@linux.intel.com, Thinh.Nguyen@synopsys.com,
	tiwai@suse.com, gregkh@linuxfoundation.org,
	linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
	linux-sound@vger.kernel.org, linux-input@vger.kernel.org,
	linux-usb@vger.kernel.org, linux-arm-msm@vger.kernel.org,
	linux-doc@vger.kernel.org
Subject: Re: [PATCH v38 26/31] ASoC: qcom: qdsp6: Fetch USB offload mapped card and PCM device
Date: Thu, 10 Apr 2025 08:41:40 +0200	[thread overview]
Message-ID: <Z_doJMXjSFHt6eAp@linaro.org> (raw)
In-Reply-To: <20250409194804.3773260-27-quic_wcheng@quicinc.com>

On Wed, Apr 09, 2025 at 12:47:59PM -0700, Wesley Cheng wrote:
> The USB SND path may need to know how the USB offload path is routed, so
> that applications can open the proper sound card and PCM device.  The
> implementation for the QC ASoC design has a "USB Mixer" kcontrol for each

Is this "USB_RX Audio Mixer" now?

> possible FE (Q6ASM) DAI, which can be utilized to know which front end link
> is enabled.
> 
> When an application/userspace queries for the mapped offload devices, the
> logic will lookup the USB mixer status though the following path:
> 
> MultiMedia* <-> MM_DL* <-> USB Mixer*

^

> 
> The "USB Mixer" is a DAPM widget, and the q6routing entity will set the

^

> DAPM connect status accordingly if the USB mixer is enabled.  If enabled,
> the Q6USB backend link can fetch the PCM device number from the FE DAI
> link (Multimedia*).  With respects to the card number, that is
> straightforward, as the ASoC components have direct references to the ASoC
> platform sound card.
> 
> An example output can be shown below:
> 
> Number of controls: 9
> name                                    value
> Capture Channel Map                     0, 0 (range 0->36)
> Playback Channel Map                    0, 0 (range 0->36)
> Headset Capture Switch                  On
> Headset Capture Volume                  1 (range 0->4)
> Sidetone Playback Switch                On
> Sidetone Playback Volume                4096 (range 0->8192)
> Headset Playback Switch                 On
> Headset Playback Volume                 20, 20 (range 0->24)
> USB Offload Playback Route PCM#0        0, 1 (range -1->255)
> 
> The "USB Offload Playback Route PCM#*" kcontrol will signify the
> corresponding card and pcm device it is offload to. (card#0 pcm - device#1)
> If the USB SND device supports multiple audio interfaces, then it will
> contain several PCM streams, hence in those situations, it is expected
> that there will be multiple playback route kcontrols created.
> 
> Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com>
> ---
>  sound/soc/qcom/qdsp6/q6usb.c | 98 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 98 insertions(+)
> 
> diff --git a/sound/soc/qcom/qdsp6/q6usb.c b/sound/soc/qcom/qdsp6/q6usb.c
> index 6634e132787e..274c251e84dd 100644
> --- a/sound/soc/qcom/qdsp6/q6usb.c
> +++ b/sound/soc/qcom/qdsp6/q6usb.c
> @@ -134,6 +134,103 @@ static int q6usb_audio_ports_of_xlate_dai_name(struct snd_soc_component *compone
>  	return ret;
>  }
>  
> +static int q6usb_get_pcm_id_from_widget(struct snd_soc_dapm_widget *w)
> +{
> +	struct snd_soc_pcm_runtime *rtd;
> +	struct snd_soc_dai *dai;
> +
> +	for_each_card_rtds(w->dapm->card, rtd) {
> +		dai = snd_soc_rtd_to_cpu(rtd, 0);
> +		/*
> +		 * Only look for playback widget. RTD number carries the assigned
> +		 * PCM index.
> +		 */
> +		if (dai->stream[0].widget == w)
> +			return rtd->id;
> +	}
> +
> +	return -1;
> +}
> +
> +static int q6usb_usb_mixer_enabled(struct snd_soc_dapm_widget *w)
> +{
> +	struct snd_soc_dapm_path *p;
> +
> +	/* Checks to ensure USB path is enabled/connected */
> +	snd_soc_dapm_widget_for_each_sink_path(w, p)
> +		if (!strcmp(p->sink->name, "USB Mixer") && p->connect)
> +			return 1;

I assume this also needs to be changed. Please make sure you test the
series again. :)

> +
> +	return 0;
> +}
> +
> +static int q6usb_get_pcm_id(struct snd_soc_component *component)
> +{
> +	struct snd_soc_dapm_widget *w;
> +	struct snd_soc_dapm_path *p;
> +	int pidx;
> +
> +	/*
> +	 * Traverse widgets to find corresponding FE widget.  The DAI links are
> +	 * built like the following:
> +	 *    MultiMedia* <-> MM_DL* <-> USB Mixer*

^

Thanks,
Stephan

  reply	other threads:[~2025-04-10  6:41 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-09 19:47 [PATCH v38 00/31] Introduce QC USB SND audio offloading support Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 01/31] xhci: sideband: add initial api to register a secondary interrupter entity Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 02/31] usb: host: xhci-mem: Cleanup pending secondary event ring events Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 03/31] usb: host: xhci-mem: Allow for interrupter clients to choose specific index Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 04/31] usb: host: xhci-plat: Set XHCI max interrupters if property is present Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 05/31] usb: host: xhci: Notify xHCI sideband on transfer ring free Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 06/31] usb: dwc3: Specify maximum number of XHCI interrupters Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 07/31] ALSA: Add USB audio device jack type Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 08/31] ALSA: usb-audio: Export USB SND APIs for modules Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 09/31] ALSA: usb-audio: Check for support for requested audio format Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 10/31] ALSA: usb-audio: Save UAC sample size information Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 11/31] ALSA: usb-audio: Prevent starting of audio stream if in use Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 12/31] ALSA: usb-audio: Introduce USB SND platform op callbacks Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 13/31] ALSA: usb-audio: Allow for rediscovery of connected USB SND devices Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 14/31] ASoC: Add SoC USB APIs for adding an USB backend Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 15/31] ASoC: usb: Add PCM format check API for " Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 16/31] ASoC: usb: Create SOC USB SND jack kcontrol Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 17/31] ASoC: usb: Fetch ASoC card and pcm device information Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 18/31] ASoC: usb: Rediscover USB SND devices on USB port add Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 19/31] ASoC: doc: Add documentation for SOC USB Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 20/31] ASoC: dt-bindings: qcom,q6dsp-lpass-ports: Add USB_RX port Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 21/31] ASoC: dt-bindings: Update example for enabling USB offload on SM8250 Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 22/31] ASoC: qcom: qdsp6: Introduce USB AFE port to q6dsp Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 23/31] ASoC: qcom: qdsp6: q6afe: Increase APR timeout Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 24/31] ASoC: qcom: qdsp6: Add USB backend ASoC driver for Q6 Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 25/31] ASoC: qcom: qdsp6: Add headphone jack for offload connection status Wesley Cheng
2025-04-09 19:47 ` [PATCH v38 26/31] ASoC: qcom: qdsp6: Fetch USB offload mapped card and PCM device Wesley Cheng
2025-04-10  6:41   ` Stephan Gerhold [this message]
2025-04-09 19:48 ` [PATCH v38 27/31] ALSA: usb-audio: qcom: Add USB QMI definitions Wesley Cheng
2025-04-09 19:48 ` [PATCH v38 28/31] ALSA: usb-audio: qcom: Introduce QC USB SND offloading support Wesley Cheng
2025-04-09 19:48 ` [PATCH v38 29/31] ALSA: usb-audio: qcom: Don't allow USB offload path if PCM device is in use Wesley Cheng
2025-04-09 19:48 ` [PATCH v38 30/31] ALSA: usb-audio: qcom: Add USB offload route kcontrol Wesley Cheng
2025-04-09 19:48 ` [PATCH v38 31/31] ALSA: usb-audio: qcom: Notify USB audio devices on USB offload probing Wesley Cheng
2025-04-10  7:11 ` [PATCH v38 00/31] Introduce QC USB SND audio offloading support Greg KH
2025-04-11 11:04   ` Greg KH
2025-04-11 12:40     ` Stephan Gerhold
2025-04-11 12:54       ` Greg KH
2025-04-11 16:47         ` Wesley Cheng
2025-04-10 11:55 ` Mark Brown

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=Z_doJMXjSFHt6eAp@linaro.org \
    --to=stephan.gerhold@linaro.org \
    --cc=Thinh.Nguyen@synopsys.com \
    --cc=broonie@kernel.org \
    --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.intel.com \
    --cc=quic_wcheng@quicinc.com \
    --cc=robh@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.