[PATCH] ALSA: usb-audio: Configure sync endpoints before data
Jaroslav Kysela
perex at perex.cz
Tue May 24 08:38:18 CEST 2022
On 24. 05. 22 8:21, Takashi Iwai wrote:
> From: Craig McLure <craig at mclure.net>
>
> Devices such as the TC-Helicon GoXLR require the sync endpoint to be
> configured in advance of the data endpoint in order for sound output
> to work.
>
> This patch simply changes the ordering of EP configuration to resolve
> this.
>
> Fixes: bf6313a0ff76 ("ALSA: usb-audio: Refactor endpoint management")
> BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=215079
> Signed-off-by: Craig McLure <craig at mclure.net>
> Cc: <stable at vger.kernel.org>
> Signed-off-by: Takashi Iwai <tiwai at suse.de>
Reviewed-by: Jaroslav Kysela <perex at perex.cz>
> ---
> sound/usb/pcm.c | 17 +++++++++++------
> 1 file changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
> index 6d699065e81a..b470404a5376 100644
> --- a/sound/usb/pcm.c
> +++ b/sound/usb/pcm.c
> @@ -439,16 +439,21 @@ static int configure_endpoints(struct snd_usb_audio *chip,
> /* stop any running stream beforehand */
> if (stop_endpoints(subs, false))
> sync_pending_stops(subs);
> + if (subs->sync_endpoint) {
> + err = snd_usb_endpoint_configure(chip, subs->sync_endpoint);
> + if (err < 0)
> + return err;
> + }
> err = snd_usb_endpoint_configure(chip, subs->data_endpoint);
> if (err < 0)
> return err;
> snd_usb_set_format_quirk(subs, subs->cur_audiofmt);
> - }
> -
> - if (subs->sync_endpoint) {
> - err = snd_usb_endpoint_configure(chip, subs->sync_endpoint);
> - if (err < 0)
> - return err;
> + } else {
> + if (subs->sync_endpoint) {
> + err = snd_usb_endpoint_configure(chip, subs->sync_endpoint);
> + if (err < 0)
> + return err;
> + }
> }
>
> return 0;
--
Jaroslav Kysela <perex at perex.cz>
Linux Sound Maintainer; ALSA Project; Red Hat, Inc.
More information about the Alsa-devel
mailing list