[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