diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index 0b12be261f8e..cf5a582df059 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c @@ -653,6 +653,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) { @@ -674,6 +676,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