]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
ALSA: dice: use stream formats to add MIDI substreams
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Wed, 2 May 2018 10:16:49 +0000 (19:16 +0900)
committerTakashi Iwai <tiwai@suse.de>
Wed, 2 May 2018 14:02:05 +0000 (16:02 +0200)
In former commits, proxy structure gets members for cache of stream
formats. The cache can be used to count the number of MIDI substreams
to add.

This commit uses the cache for this purpose.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/firewire/dice/dice-midi.c

index 8ff6da3c51f72c1a3b6d0b0a671eabe43018e5d3..84eca8a51a02fa9057a2c3153ad4d9f3c29b3a29 100644 (file)
@@ -101,27 +101,18 @@ int snd_dice_create_midi(struct snd_dice *dice)
                .close          = midi_close,
                .trigger        = midi_playback_trigger,
        };
-       __be32 reg;
        struct snd_rawmidi *rmidi;
        struct snd_rawmidi_str *str;
        unsigned int midi_in_ports, midi_out_ports;
+       int i;
        int err;
 
-       /*
-        * Use the number of MIDI conformant data channel at current sampling
-        * transfer frequency.
-        */
-       err = snd_dice_transaction_read_tx(dice, TX_NUMBER_MIDI,
-                                          &reg, sizeof(reg));
-       if (err < 0)
-               return err;
-       midi_in_ports = be32_to_cpu(reg);
-
-       err = snd_dice_transaction_read_rx(dice, RX_NUMBER_MIDI,
-                                          &reg, sizeof(reg));
-       if (err < 0)
-               return err;
-       midi_out_ports = be32_to_cpu(reg);
+       midi_in_ports = 0;
+       midi_out_ports = 0;
+       for (i = 0; i < MAX_STREAMS; ++i) {
+               midi_in_ports = max(midi_in_ports, dice->tx_midi_ports[i]);
+               midi_out_ports = max(midi_out_ports, dice->rx_midi_ports[i]);
+       }
 
        if (midi_in_ports + midi_out_ports == 0)
                return 0;