ff.c (61ccc6f6b27c03bb32ca38a3c580d49ce1612d43) ff.c (5b14ec25a79bf60fc9a663fe579a500b6ac9d8ab)
1/*
2 * ff.c - a part of driver for RME Fireface series
3 *
4 * Copyright (c) 2015-2017 Takashi Sakamoto
5 *
6 * Licensed under the terms of the GNU General Public License, version 2.
7 */
8

--- 17 unchanged lines hidden (view full) ---

26 fw_dev->config_rom[3], fw_dev->config_rom[4],
27 dev_name(&ff->unit->device), 100 << fw_dev->max_speed);
28}
29
30static void ff_free(struct snd_ff *ff)
31{
32 snd_ff_stream_destroy_duplex(ff);
33 snd_ff_transaction_unregister(ff);
1/*
2 * ff.c - a part of driver for RME Fireface series
3 *
4 * Copyright (c) 2015-2017 Takashi Sakamoto
5 *
6 * Licensed under the terms of the GNU General Public License, version 2.
7 */
8

--- 17 unchanged lines hidden (view full) ---

26 fw_dev->config_rom[3], fw_dev->config_rom[4],
27 dev_name(&ff->unit->device), 100 << fw_dev->max_speed);
28}
29
30static void ff_free(struct snd_ff *ff)
31{
32 snd_ff_stream_destroy_duplex(ff);
33 snd_ff_transaction_unregister(ff);
34
35 mutex_destroy(&ff->mutex);
36 fw_unit_put(ff->unit);
37}
38
39static void ff_card_free(struct snd_card *card)
40{
41 ff_free(card->private_data);
42}
43
44static void do_registration(struct work_struct *work)

--- 97 unchanged lines hidden (view full) ---

142 * going to be released. The work is not scheduled again because bus
143 * reset handler is not called anymore.
144 */
145 cancel_work_sync(&ff->dwork.work);
146
147 if (ff->registered) {
148 // Block till all of ALSA character devices are released.
149 snd_card_free(ff->card);
34}
35
36static void ff_card_free(struct snd_card *card)
37{
38 ff_free(card->private_data);
39}
40
41static void do_registration(struct work_struct *work)

--- 97 unchanged lines hidden (view full) ---

139 * going to be released. The work is not scheduled again because bus
140 * reset handler is not called anymore.
141 */
142 cancel_work_sync(&ff->dwork.work);
143
144 if (ff->registered) {
145 // Block till all of ALSA character devices are released.
146 snd_card_free(ff->card);
150 } else {
151 /* Don't forget this case. */
152 ff_free(ff);
153 }
147 }
148
149 mutex_destroy(&ff->mutex);
150 fw_unit_put(ff->unit);
154}
155
156static const struct snd_ff_spec spec_ff400 = {
157 .name = "Fireface400",
158 .pcm_capture_channels = {18, 14, 10},
159 .pcm_playback_channels = {18, 14, 10},
160 .midi_in_ports = 2,
161 .midi_out_ports = 2,

--- 44 unchanged lines hidden ---
151}
152
153static const struct snd_ff_spec spec_ff400 = {
154 .name = "Fireface400",
155 .pcm_capture_channels = {18, 14, 10},
156 .pcm_playback_channels = {18, 14, 10},
157 .midi_in_ports = 2,
158 .midi_out_ports = 2,

--- 44 unchanged lines hidden ---