lkml.org 
[lkml]   [2021]   [May]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 015/141] ALSA: bebob: enable to deliver MIDI messages for multiple ports
    Date
    From: Takashi Sakamoto <o-takashi@sakamocchi.jp>

    [ Upstream commit d2b6f15bc18ac8fbce25398290774c21f5b2cd44 ]

    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: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Link: https://lore.kernel.org/r/20210321032831.340278-4-o-takashi@sakamocchi.jp
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    sound/firewire/bebob/bebob_stream.c | 12 +++++++-----
    1 file changed, 7 insertions(+), 5 deletions(-)

    diff --git a/sound/firewire/bebob/bebob_stream.c b/sound/firewire/bebob/bebob_stream.c
    index ce07ea0d4e71..3935e90c8e8f 100644
    --- a/sound/firewire/bebob/bebob_stream.c
    +++ b/sound/firewire/bebob/bebob_stream.c
    @@ -534,20 +534,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;

    --
    2.30.2


    \
     
     \ /
      Last update: 2021-05-17 16:52    [W:3.191 / U:0.264 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site