Hi Takashi
On 11/30/2016 05:51 PM, Takashi Iwai wrote:
On Wed, 30 Nov 2016 08:59:22 +0100, Jiada Wang wrote:
From: Daniel Girnus dgirnus@de.adit-jv.com
ALSA usually calls the prepare function twice before starting the playback:
- On hw_params call from userland and
- internally when starting the stream.
Some device are not able to manage this and they will stop playback if the sample rate will be configured several times over USB protocol.
Signed-off-by: Jens Lorenz jlorenz@de.adit-jv.com Signed-off-by: Jiada Wang jiada_wang@mentor.com
The sign-off from Daniel seems missing?
The code change looks OK, but it'd be nice to mention in the changelog that, after this patch, snd_usb_init_sample_rate() is still called properly whenever the parameter is changed since ep->need_setup_ep is set in snd_hsb_hw_params().
I will add missing sign-off and related information in changelog in v2
Thanks, Jiada
thanks,
Takashi
sound/usb/pcm.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index 44d178e..a522c9a 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c @@ -806,17 +806,18 @@ static int snd_usb_pcm_prepare(struct snd_pcm_substream *substream) if (ret < 0) goto unlock;
- iface = usb_ifnum_to_if(subs->dev, subs->cur_audiofmt->iface);
- alts = &iface->altsetting[subs->cur_audiofmt->altset_idx];
- ret = snd_usb_init_sample_rate(subs->stream->chip,
subs->cur_audiofmt->iface,
alts,
subs->cur_audiofmt,
subs->cur_rate);
- if (ret < 0)
goto unlock;
- if (subs->need_setup_ep) {
iface = usb_ifnum_to_if(subs->dev, subs->cur_audiofmt->iface);
alts = &iface->altsetting[subs->cur_audiofmt->altset_idx];
ret = snd_usb_init_sample_rate(subs->stream->chip,
subs->cur_audiofmt->iface,
alts,
subs->cur_audiofmt,
subs->cur_rate);
if (ret < 0)
goto unlock;
- ret = configure_endpoint(subs); if (ret < 0) goto unlock;
-- 2.9.3