diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index 7ce5822b719c..087f0ef21dd4 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c @@ -640,6 +640,8 @@ static int set_format(struct snd_usb_substream *subs, struct audioformat *fmt) return 0; } +static int snd_usb_pcm_change_state(struct snd_usb_substream *subs, int state); + int snd_usb_enable_audio_stream(struct snd_usb_substream *subs, int datainterval, bool enable) { @@ -661,6 +663,11 @@ int snd_usb_enable_audio_stream(struct snd_usb_substream *subs, } snd_usb_autoresume(subs->stream->chip); + + ret = snd_usb_pcm_change_state(subs, UAC3_PD_STATE_D0); + if (ret < 0) + return ret; + if (datainterval != -EINVAL) fmt = find_format_and_si(subs, datainterval); else