Skip to contentSkip to conversation

ALSA: snd-usb: properly initialize the sync endpoint

PATCH Applied Daniel Mack 3 participants 4 messages Nov 22, 2012 – Nov 28, 2012 Sound

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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().

---
 sound/usb/pcm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
sound/usb/pcm.c +1 -1
index bc3c9ac..e919c2e 100644
@@ -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,
Signature · 1 line
1.7.11.7
Applied
#1 lore raw

At Thu, 22 Nov 2012 20:27:59 +0100,

Quoted 8 lines · Daniel Mack

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().

Thanks, applied.

Takashi

Quoted 20 lines
---
 sound/usb/pcm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
sound/usb/pcm.c +1 -1
index bc3c9ac..e919c2e 100644
@@ -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,
Signature · 1 line
1.7.11.7
#2 lore raw

Hi Daniel, Takashi,

Quoted 7 lines · Takashi Iwai

At Thu, 22 Nov 2012 20:27:59 +0100,

Quoted 5 lines · Daniel Mack

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().

Quoted 5 lines
Quoted 3 lines
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

#3 lore raw
Quoted 28 lines · Eldad Zack
Quoted 7 lines · Takashi Iwai

At Thu, 22 Nov 2012 20:27:59 +0100,

Quoted 5 lines · Daniel Mack

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().

Quoted 5 lines
Quoted 3 lines
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.

Quoted 2 lines

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