Lines Matching +full:open +full:- +full:dice

1 // SPDX-License-Identifier: GPL-2.0-only
3 * dice_midi.c - a part of driver for Dice based devices
7 #include "dice.h"
11 struct snd_dice *dice = substream->rmidi->private_data; in midi_open() local
14 err = snd_dice_stream_lock_try(dice); in midi_open()
18 mutex_lock(&dice->mutex); in midi_open()
20 err = snd_dice_stream_reserve_duplex(dice, 0, 0, 0); in midi_open()
22 ++dice->substreams_counter; in midi_open()
23 err = snd_dice_stream_start_duplex(dice); in midi_open()
25 --dice->substreams_counter; in midi_open()
28 mutex_unlock(&dice->mutex); in midi_open()
31 snd_dice_stream_lock_release(dice); in midi_open()
38 struct snd_dice *dice = substream->rmidi->private_data; in midi_close() local
40 mutex_lock(&dice->mutex); in midi_close()
42 --dice->substreams_counter; in midi_close()
43 snd_dice_stream_stop_duplex(dice); in midi_close()
45 mutex_unlock(&dice->mutex); in midi_close()
47 snd_dice_stream_lock_release(dice); in midi_close()
53 struct snd_dice *dice = substrm->rmidi->private_data; in midi_capture_trigger() local
56 spin_lock_irqsave(&dice->lock, flags); in midi_capture_trigger()
59 amdtp_am824_midi_trigger(&dice->tx_stream[0], in midi_capture_trigger()
60 substrm->number, substrm); in midi_capture_trigger()
62 amdtp_am824_midi_trigger(&dice->tx_stream[0], in midi_capture_trigger()
63 substrm->number, NULL); in midi_capture_trigger()
65 spin_unlock_irqrestore(&dice->lock, flags); in midi_capture_trigger()
70 struct snd_dice *dice = substrm->rmidi->private_data; in midi_playback_trigger() local
73 spin_lock_irqsave(&dice->lock, flags); in midi_playback_trigger()
76 amdtp_am824_midi_trigger(&dice->rx_stream[0], in midi_playback_trigger()
77 substrm->number, substrm); in midi_playback_trigger()
79 amdtp_am824_midi_trigger(&dice->rx_stream[0], in midi_playback_trigger()
80 substrm->number, NULL); in midi_playback_trigger()
82 spin_unlock_irqrestore(&dice->lock, flags); in midi_playback_trigger()
85 static void set_midi_substream_names(struct snd_dice *dice, in set_midi_substream_names() argument
90 list_for_each_entry(subs, &str->substreams, list) { in set_midi_substream_names()
91 scnprintf(subs->name, sizeof(subs->name), in set_midi_substream_names()
92 "%s MIDI %d", dice->card->shortname, subs->number + 1); in set_midi_substream_names()
96 int snd_dice_create_midi(struct snd_dice *dice) in snd_dice_create_midi() argument
99 .open = midi_open, in snd_dice_create_midi()
104 .open = midi_open, in snd_dice_create_midi()
117 midi_in_ports = max(midi_in_ports, dice->tx_midi_ports[i]); in snd_dice_create_midi()
118 midi_out_ports = max(midi_out_ports, dice->rx_midi_ports[i]); in snd_dice_create_midi()
125 err = snd_rawmidi_new(dice->card, dice->card->driver, 0, in snd_dice_create_midi()
131 snprintf(rmidi->name, sizeof(rmidi->name), in snd_dice_create_midi()
132 "%s MIDI", dice->card->shortname); in snd_dice_create_midi()
133 rmidi->private_data = dice; in snd_dice_create_midi()
136 rmidi->info_flags |= SNDRV_RAWMIDI_INFO_INPUT; in snd_dice_create_midi()
141 str = &rmidi->streams[SNDRV_RAWMIDI_STREAM_INPUT]; in snd_dice_create_midi()
143 set_midi_substream_names(dice, str); in snd_dice_create_midi()
147 rmidi->info_flags |= SNDRV_RAWMIDI_INFO_OUTPUT; in snd_dice_create_midi()
152 str = &rmidi->streams[SNDRV_RAWMIDI_STREAM_OUTPUT]; in snd_dice_create_midi()
154 set_midi_substream_names(dice, str); in snd_dice_create_midi()
158 rmidi->info_flags |= SNDRV_RAWMIDI_INFO_DUPLEX; in snd_dice_create_midi()