Message ID | 20210618040447.113306-1-o-takashi@sakamocchi.jp (mailing list archive) |
---|---|
State | Accepted |
Commit | 6b6c17fe6fa58900fa69dd000d5333b679e5e33e |
Headers | show |
Series | ALSA: bebob: fix rx packet format for Yamaha GO44/GO46, Terratec Phase 24/x24 | expand |
On Fri, 18 Jun 2021 06:04:47 +0200, Takashi Sakamoto wrote: > > Below devices reports zero as the number of channels for external output > plug with MIDI type: > > * Yamaha GO44/GO46 > * Terratec Phase 24/X24 > > As a result, rx packet format is invalid and they generate silent sound. > This is a regression added in v5.13. > > This commit fixes the bug, addressed at a commit 1bd1b3be8655 ("ALSA: > bebob: perform sequence replay for media clock recovery"). > > Cc: <stable@vger.kernel.org> > Fixes: 5c6ea94f2b7c ("ALSA: bebob: detect the number of available MIDI ports") > Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Thanks, applied. Takashi
diff --git a/sound/firewire/bebob/bebob_stream.c b/sound/firewire/bebob/bebob_stream.c index e3e23e42add3..8629b14ded76 100644 --- a/sound/firewire/bebob/bebob_stream.c +++ b/sound/firewire/bebob/bebob_stream.c @@ -856,6 +856,11 @@ static int detect_midi_ports(struct snd_bebob *bebob, err = avc_bridgeco_get_plug_ch_count(bebob->unit, addr, &ch_count); if (err < 0) break; + // Yamaha GO44, GO46, Terratec Phase 24, Phase x24 reports 0 for the number of + // channels in external output plug 3 (MIDI type) even if it has a pair of physical + // MIDI jacks. As a workaround, assume it as one. + if (ch_count == 0) + ch_count = 1; *midi_ports += ch_count; } @@ -934,12 +939,12 @@ int snd_bebob_stream_discover(struct snd_bebob *bebob) if (err < 0) goto end; - err = detect_midi_ports(bebob, bebob->rx_stream_formations, addr, AVC_BRIDGECO_PLUG_DIR_IN, + err = detect_midi_ports(bebob, bebob->tx_stream_formations, addr, AVC_BRIDGECO_PLUG_DIR_IN, plugs[2], &bebob->midi_input_ports); if (err < 0) goto end; - err = detect_midi_ports(bebob, bebob->tx_stream_formations, addr, AVC_BRIDGECO_PLUG_DIR_OUT, + err = detect_midi_ports(bebob, bebob->rx_stream_formations, addr, AVC_BRIDGECO_PLUG_DIR_OUT, plugs[3], &bebob->midi_output_ports); if (err < 0) goto end;
Below devices reports zero as the number of channels for external output plug with MIDI type: * Yamaha GO44/GO46 * Terratec Phase 24/X24 As a result, rx packet format is invalid and they generate silent sound. This is a regression added in v5.13. This commit fixes the bug, addressed at a commit 1bd1b3be8655 ("ALSA: bebob: perform sequence replay for media clock recovery"). Cc: <stable@vger.kernel.org> Fixes: 5c6ea94f2b7c ("ALSA: bebob: detect the number of available MIDI ports") Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> --- sound/firewire/bebob/bebob_stream.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)