mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 04:31:50 +00:00
ALSA: bebob: fix rx packet format for Yamaha GO44/GO46, Terratec Phase 24/x24
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 commit1bd1b3be86
("ALSA: bebob: perform sequence replay for media clock recovery"). Cc: <stable@vger.kernel.org> Fixes:5c6ea94f2b
("ALSA: bebob: detect the number of available MIDI ports") Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Link: https://lore.kernel.org/r/20210618040447.113306-1-o-takashi@sakamocchi.jp Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
c3d2c88209
commit
6b6c17fe6f
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user