Commit 1865211d authored by Takashi Iwai's avatar Takashi Iwai

ALSA: usb-audio: Move snd_usb_autoresume() call out of setup_hw_info()

This is a preliminary work for the upcoming hw-constraint change for
the implicit feedback mode.

Currently snd_usb_autoresume() is called at the end of
setup_hwinfo().  It's a bit confusing; because of this implicit
refcount usage, the caller side needs to call snd_usb_autosuspend()
later in the error path although it's not seen inside the function.
Instead, it's clearer to call both snd_usb_autoresume() and suspend()
in the very same function.

It's only refactoring and no functional changes.
Tested-by: default avatarKeith Milner <kamilner@superlative.org>
Tested-by: default avatarDylan Robinson <dylan_robinson@motu.com>
Link: https://lore.kernel.org/r/20201123085347.19667-10-tiwai@suse.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent f6581c0e
......@@ -1378,7 +1378,7 @@ static int setup_hw_info(struct snd_pcm_runtime *runtime, struct snd_usb_substre
return err;
}
return snd_usb_autoresume(subs->stream->chip);
return 0;
}
static int snd_usb_pcm_open(struct snd_pcm_substream *substream)
......@@ -1402,11 +1402,14 @@ static int snd_usb_pcm_open(struct snd_pcm_substream *substream)
subs->dsd_dop.marker = 1;
ret = setup_hw_info(runtime, subs);
if (ret == 0) {
ret = snd_media_stream_init(subs, as->pcm, direction);
if (ret)
snd_usb_autosuspend(subs->stream->chip);
}
if (ret < 0)
return ret;
ret = snd_usb_autoresume(subs->stream->chip);
if (ret < 0)
return ret;
ret = snd_media_stream_init(subs, as->pcm, direction);
if (ret < 0)
snd_usb_autosuspend(subs->stream->chip);
return ret;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment