Skip to content

Commit

Permalink
ALSA: dice: add MIDI ports according to current number of MIDI substr…
Browse files Browse the repository at this point in the history
…eams

This commit changes the way to add ALSA MIDI ports. This driver read the
number of multiplexed MIDI substreams from hardware register, then adds the
same number of ALSA MIDI ports. This commit is based on my assumption that
the number is fixed at all of supported sampling transfer frequency.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Takashi Sakamoto authored and Takashi Iwai committed Feb 9, 2016
1 parent 1bc8e12 commit b9022f4
Showing 1 changed file with 17 additions and 6 deletions.
23 changes: 17 additions & 6 deletions sound/firewire/dice/dice-midi.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,16 +103,27 @@ static void set_midi_substream_names(struct snd_dice *dice,

int snd_dice_create_midi(struct snd_dice *dice)
{
__be32 reg;
struct snd_rawmidi *rmidi;
struct snd_rawmidi_str *str;
unsigned int i, midi_in_ports, midi_out_ports;
unsigned int midi_in_ports, midi_out_ports;
int err;

midi_in_ports = midi_out_ports = 0;
for (i = 0; i < 3; i++) {
midi_in_ports = max(dice->tx_midi_ports[i], midi_in_ports);
midi_out_ports = max(dice->rx_midi_ports[i], midi_out_ports);
}
/*
* 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);

if (midi_in_ports + midi_out_ports == 0)
return 0;
Expand Down

0 comments on commit b9022f4

Please sign in to comment.