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 --- |