All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Amadeusz Sławiński" <amadeuszx.slawinski@linux.intel.com>
To: Wesley Cheng <quic_wcheng@quicinc.com>,
	srinivas.kandagatla@linaro.org, mathias.nyman@intel.com,
	perex@perex.cz, conor+dt@kernel.org, corbet@lwn.net,
	lgirdwood@gmail.com, andersson@kernel.org,
	krzysztof.kozlowski+dt@linaro.org, gregkh@linuxfoundation.org,
	Thinh.Nguyen@synopsys.com, broonie@kernel.org,
	bgoswami@quicinc.com, tiwai@suse.com, robh+dt@kernel.org,
	konrad.dybcio@linaro.org
Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
	linux-sound@vger.kernel.org, linux-usb@vger.kernel.org,
	linux-arm-msm@vger.kernel.org, linux-doc@vger.kernel.org,
	alsa-devel@alsa-project.org
Subject: Re: [PATCH v13 50/53] ALSA: usb-audio: Allow for rediscovery of connected USB SND devices
Date: Mon, 5 Feb 2024 10:01:03 +0100	[thread overview]
Message-ID: <aaa76d7a-4299-4e1c-83f1-cbbea763927f@linux.intel.com> (raw)
In-Reply-To: <20240203023645.31105-51-quic_wcheng@quicinc.com>

On 2/3/2024 3:36 AM, Wesley Cheng wrote:
> In case of notifying SND platform drivers of connection events, some of
> these use cases, such as offloading, require an ASoC USB backend device to
> be initialized before the events can be handled.  If the USB backend device
> has not yet been probed, this leads to missing initial USB audio device
> connection events.
> 
> Expose an API that traverses the usb_chip array for connected devices, and
> to call the respective connection callback registered to the SND platform
> driver.
> 
> Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com>
> ---
>   sound/usb/card.c                  | 19 +++++++++++++++++++
>   sound/usb/card.h                  |  2 ++
>   sound/usb/qcom/qc_audio_offload.c |  2 ++
>   3 files changed, 23 insertions(+)
> 
> diff --git a/sound/usb/card.c b/sound/usb/card.c
> index 11b827b7a2a5..995b2df676ab 100644
> --- a/sound/usb/card.c
> +++ b/sound/usb/card.c
> @@ -202,6 +202,25 @@ struct snd_usb_stream *snd_usb_find_suppported_substream(int card_idx,
>   }
>   EXPORT_SYMBOL_GPL(snd_usb_find_suppported_substream);
>   
> +/*
> + * in case the platform driver was not ready at the time of USB SND
> + * device connect, expose an API to discover all connected USB devices
> + * so it can populate any dependent resources/structures.
> + */
> +void snd_usb_rediscover_devices(void)
> +{
> +	int i;
> +
> +	mutex_lock(&register_mutex);
> +	for (i = 0; i < SNDRV_CARDS; i++) {
> +		if (usb_chip[i])
> +			if (platform_ops && platform_ops->connect_cb)
> +				platform_ops->connect_cb(usb_chip[i]);

if inside if, it can just be && or maybe move callback check before 
mutex lock and just return early if it is not present?

> +	}
> +	mutex_unlock(&register_mutex);
> +}
> +EXPORT_SYMBOL_GPL(snd_usb_rediscover_devices);
> +
>   /*
>    * disconnect streams
>    * called from usb_audio_disconnect()
> diff --git a/sound/usb/card.h b/sound/usb/card.h
> index 6d59995440c3..3a0d68f453a1 100644
> --- a/sound/usb/card.h
> +++ b/sound/usb/card.h
> @@ -222,11 +222,13 @@ int snd_usb_unregister_platform_ops(void);
>   #if IS_ENABLED(CONFIG_SND_USB_AUDIO)
>   struct snd_usb_stream *snd_usb_find_suppported_substream(int card_idx,
>   			struct snd_pcm_hw_params *params, int direction);
> +void snd_usb_rediscover_devices(void);
>   #else
>   static struct snd_usb_stream *snd_usb_find_suppported_substream(int card_idx,
>   			struct snd_pcm_hw_params *params, int direction)
>   {
>   	return NULL;
>   }
> +static void snd_usb_rediscover_devices(void) { }
>   #endif /* IS_ENABLED(CONFIG_SND_USB_AUDIO) */
>   #endif /* __USBAUDIO_CARD_H */
> diff --git a/sound/usb/qcom/qc_audio_offload.c b/sound/usb/qcom/qc_audio_offload.c
> index 08af82ec22ad..9b0f98600e58 100644
> --- a/sound/usb/qcom/qc_audio_offload.c
> +++ b/sound/usb/qcom/qc_audio_offload.c
> @@ -1867,6 +1867,8 @@ static int __init qc_usb_audio_offload_init(void)
>   	if (ret < 0)
>   		goto release_qmi;
>   
> +	snd_usb_rediscover_devices();
> +
>   	return 0;
>   
>   release_qmi:
> 


  reply	other threads:[~2024-02-05  9:02 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-03  2:35 [PATCH v13 00/53] Introduce QC USB SND audio offloading support Wesley Cheng
2024-02-03  2:35 ` [PATCH v13 01/53] xhci: fix possible null pointer dereference at secondary interrupter removal Wesley Cheng
2024-02-03  2:35 ` [PATCH v13 02/53] xhci: fix off by one check when adding a secondary interrupter Wesley Cheng
2024-02-03  2:35 ` [PATCH v13 03/53] xhci: Add interrupt pending autoclear flag to each interrupter Wesley Cheng
2024-02-03  2:35 ` [PATCH v13 04/53] xhci: Add helper to set an interrupters interrupt moderation interval Wesley Cheng
2024-02-03  2:35 ` [PATCH v13 05/53] xhci: make isoc_bei_interval variable interrupter specific Wesley Cheng
2024-02-03  2:35 ` [PATCH v13 06/53] xhci: remove unnecessary event_ring_deq parameter from xhci_handle_event() Wesley Cheng
2024-02-03  2:35 ` [PATCH v13 07/53] xhci: update event ring dequeue pointer position to controller correctly Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 08/53] xhci: move event processing for one interrupter to a separate function Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 09/53] xhci: add helper that checks for unhandled events on a event ring Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 10/53] xhci: Don't check if the event ring is valid before every event TRB Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 11/53] xhci: Decouple handling an event from checking for unhandled events Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 12/53] xhci: add helper to stop endpoint and wait for completion Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 13/53] usb: host: xhci: Export enable and disable interrupter APIs Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 14/53] usb: host: xhci: Repurpose event handler for skipping interrupter events Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 15/53] xhci: export XHCI IMOD setting helper for interrupters Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 16/53] xhci: sideband: add initial api to register a sideband entity Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 17/53] usb: host: xhci-sideband: Expose a sideband interrupter enable API Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 18/53] usb: host: xhci-mem: Cleanup pending secondary event ring events Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 19/53] usb: host: xhci-mem: Allow for interrupter clients to choose specific index Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 20/53] ASoC: Add SOC USB APIs for adding an USB backend Wesley Cheng
2024-02-05  8:20   ` Amadeusz Sławiński
2024-02-05 21:26     ` Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 21/53] ASoC: dt-bindings: qcom,q6dsp-lpass-ports: Add USB_RX port Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 22/53] ASoC: qcom: qdsp6: Introduce USB AFE port to q6dsp Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 23/53] ASoC: qdsp6: q6afe: Increase APR timeout Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 24/53] ASoC: qcom: qdsp6: Add USB backend ASoC driver for Q6 Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 25/53] ALSA: usb-audio: Introduce USB SND platform op callbacks Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 26/53] ALSA: usb-audio: Export USB SND APIs for modules Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 27/53] ALSA: usb-audio: Save UAC sample size information Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 28/53] usb: dwc3: Specify maximum number of XHCI interrupters Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 29/53] usb: host: xhci-plat: Set XHCI max interrupters if property is present Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 30/53] ALSA: usb-audio: qcom: Add USB QMI definitions Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 31/53] ALSA: usb-audio: qcom: Introduce QC USB SND offloading support Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 32/53] ALSA: usb-audio: Check for support for requested audio format Wesley Cheng
2024-02-06 13:12   ` Takashi Iwai
2024-02-06 14:50     ` Greg KH
2024-02-06 14:53       ` Takashi Iwai
2024-02-08  0:04         ` Wesley Cheng
2024-02-07  0:08     ` Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 33/53] ASoC: usb: Add PCM format check API for USB backend Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 34/53] ASoC: qcom: qdsp6: Ensure PCM format is supported by USB audio device Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 35/53] ALSA: usb-audio: Prevent starting of audio stream if in use Wesley Cheng
2024-02-06 13:07   ` Takashi Iwai
2024-02-07  0:08     ` Wesley Cheng
2024-02-07  7:05       ` Takashi Iwai
2024-02-08  0:02         ` Wesley Cheng
2024-02-08  1:12           ` Wesley Cheng
2024-02-08  8:33             ` Takashi Iwai
2024-02-08 20:19               ` Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 36/53] ALSA: usb-audio: Do not allow USB offload path if PCM device is " Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 37/53] ASoC: dt-bindings: Add Q6USB backend Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 38/53] ASoC: dt-bindings: Update example for enabling USB offload on SM8250 Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 39/53] ALSA: usb-audio: qcom: Populate PCM and USB chip information Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 40/53] ASoC: qcom: qdsp6: Add support to track available USB PCM devices Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 41/53] ASoC: Introduce SND kcontrols to select sound card and PCM device Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 42/53] ASoC: qcom: qdsp6: Add SOC USB offload select get/put callbacks Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 43/53] ASoC: Add SND kcontrol for fetching USB offload status Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 44/53] ASoC: qcom: qdsp6: Add PCM ops to track current state Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 45/53] ASoC: usb: Create SOC USB SND jack kcontrol Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 46/53] ASoC: qcom: qdsp6: Add headphone jack for offload connection status Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 47/53] ASoC: usb: Fetch ASoC sound card information Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 48/53] ALSA: usb-audio: mixer: Add USB offloading mixer control Wesley Cheng
2024-02-06 12:57   ` Takashi Iwai
2024-02-07  1:24     ` Wesley Cheng
2024-02-07  7:00       ` Takashi Iwai
2024-02-03  2:36 ` [PATCH v13 49/53] ALSA: usb-audio: qcom: Use card and PCM index from QMI request Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 50/53] ALSA: usb-audio: Allow for rediscovery of connected USB SND devices Wesley Cheng
2024-02-05  9:01   ` Amadeusz Sławiński [this message]
2024-02-05 21:27     ` Wesley Cheng
2024-02-06 13:00     ` Takashi Iwai
2024-02-03  2:36 ` [PATCH v13 51/53] ASoC: usb: Rediscover USB SND devices on USB port add Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 52/53] ASoC: qcom: Populate SoC components string Wesley Cheng
2024-02-03  2:36 ` [PATCH v13 53/53] ASoC: doc: Add documentation for SOC USB 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=aaa76d7a-4299-4e1c-83f1-cbbea763927f@linux.intel.com \
    --to=amadeuszx.slawinski@linux.intel.com \
    --cc=Thinh.Nguyen@synopsys.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=andersson@kernel.org \
    --cc=bgoswami@quicinc.com \
    --cc=broonie@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=corbet@lwn.net \
    --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-doc@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=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 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.