提交 d2b6f15b 编写于 作者: T Takashi Sakamoto 提交者: Takashi Iwai

ALSA: bebob: enable to deliver MIDI messages for multiple ports

Current implementation of bebob driver doesn't correctly handle the case
that the device has multiple MIDI ports. The cause is the number of MIDI
conformant data channels is passed to AM824 data block processing layer.

This commit fixes the bug.
Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20210321032831.340278-4-o-takashi@sakamocchi.jpSigned-off-by: NTakashi Iwai <tiwai@suse.de>
上级 5c6ea94f
......@@ -517,20 +517,22 @@ int snd_bebob_stream_init_duplex(struct snd_bebob *bebob)
static int keep_resources(struct snd_bebob *bebob, struct amdtp_stream *stream,
unsigned int rate, unsigned int index)
{
struct snd_bebob_stream_formation *formation;
unsigned int pcm_channels;
unsigned int midi_ports;
struct cmp_connection *conn;
int err;
if (stream == &bebob->tx_stream) {
formation = bebob->tx_stream_formations + index;
pcm_channels = bebob->tx_stream_formations[index].pcm;
midi_ports = bebob->midi_input_ports;
conn = &bebob->out_conn;
} else {
formation = bebob->rx_stream_formations + index;
pcm_channels = bebob->rx_stream_formations[index].pcm;
midi_ports = bebob->midi_output_ports;
conn = &bebob->in_conn;
}
err = amdtp_am824_set_parameters(stream, rate, formation->pcm,
formation->midi, false);
err = amdtp_am824_set_parameters(stream, rate, pcm_channels, midi_ports, false);
if (err < 0)
return err;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册