[alsa-devel] [PATCH] ALSA: snd-usb: properly initialize the sync endpoint
Jeffrey Barish reported an obvious bug in the pcm part of the usb-audio driver which causes the code to not initialize the sync endpoint from configure_endpoint().
Reported-by: Jeffrey Barish jeff_barish@earthlink.net Signed-off-by: Daniel Mack zonque@gmail.com Cc: stable@kernel.org [3.5+] --- sound/usb/pcm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index bc3c9ac..e919c2e 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c @@ -458,7 +458,7 @@ static int configure_endpoint(struct snd_usb_substream *subs) return ret;
if (subs->sync_endpoint) - ret = snd_usb_endpoint_set_params(subs->data_endpoint, + ret = snd_usb_endpoint_set_params(subs->sync_endpoint, subs->pcm_format, subs->channels, subs->period_bytes,
At Thu, 22 Nov 2012 20:27:59 +0100, Daniel Mack wrote:
Jeffrey Barish reported an obvious bug in the pcm part of the usb-audio driver which causes the code to not initialize the sync endpoint from configure_endpoint().
Reported-by: Jeffrey Barish jeff_barish@earthlink.net Signed-off-by: Daniel Mack zonque@gmail.com Cc: stable@kernel.org [3.5+]
Thanks, applied.
Takashi
sound/usb/pcm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index bc3c9ac..e919c2e 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c @@ -458,7 +458,7 @@ static int configure_endpoint(struct snd_usb_substream *subs) return ret;
if (subs->sync_endpoint)
ret = snd_usb_endpoint_set_params(subs->data_endpoint,
ret = snd_usb_endpoint_set_params(subs->sync_endpoint, subs->pcm_format, subs->channels, subs->period_bytes,
-- 1.7.11.7
Hi Daniel, Takashi,
On Thu, 22 Nov 2012, Takashi Iwai wrote:
At Thu, 22 Nov 2012 20:27:59 +0100, Daniel Mack wrote:
Jeffrey Barish reported an obvious bug in the pcm part of the usb-audio driver which causes the code to not initialize the sync endpoint from configure_endpoint().
Reported-by: Jeffrey Barish <jeff_barish at earthlink.net> Signed-off-by: Daniel Mack <zonque at gmail.com> Cc: stable at kernel.org [3.5+]
Thanks, applied.
This breaks the pcm init for the FT C400 - the reason is once again the mismatch between sync and data in terms of channels and period bytes. I didn't notice it, since I was always opening capture and playback at the same time.
After reverting it works as expected (for capture + playback) - however, the revert is not a fix: If I open only the playback stream from userspace (using jack with -P), it will error out and then it will refuse to open pcm even for capture. But if I first open the device for capture (using jackd with -C), stop it, then open just the playback, it works. Not surprising, since the sync ep was already set up.
Any suggestions on how to initialize the sync ep with its specific channel and period bytes paramaters?
Cheers, Eldad
On Wed, 28 Nov 2012, Eldad Zack wrote:
On Thu, 22 Nov 2012, Takashi Iwai wrote:
At Thu, 22 Nov 2012 20:27:59 +0100, Daniel Mack wrote:
Jeffrey Barish reported an obvious bug in the pcm part of the usb-audio driver which causes the code to not initialize the sync endpoint from configure_endpoint().
Reported-by: Jeffrey Barish <jeff_barish at earthlink.net> Signed-off-by: Daniel Mack <zonque at gmail.com> Cc: stable at kernel.org [3.5+]
Thanks, applied.
This breaks the pcm init for the FT C400 - the reason is once again the mismatch between sync and data in terms of channels and period bytes. I didn't notice it, since I was always opening capture and playback at the same time.
After reverting it works as expected (for capture + playback) - however, the revert is not a fix: If I open only the playback stream from userspace (using jack with -P), it will error out and then it will refuse to open pcm even for capture. But if I first open the device for capture (using jackd with -C), stop it, then open just the playback, it works. Not surprising, since the sync ep was already set up.
Any suggestions on how to initialize the sync ep with its specific channel and period bytes paramaters?
Update: I found a solution for this - I'll post it with the C400 v4 (today or tomorrow).
Cheers, Eldad
participants (3)
-
Daniel Mack
-
Eldad Zack
-
Takashi Iwai