Lines Matching refs:ff

3  * ff.c - a part of driver for RME Fireface series
8 #include "ff.h"
16 static void name_card(struct snd_ff *ff)
18 struct fw_device *fw_dev = fw_parent_device(ff->unit);
28 name = names[ff->unit_version];
30 strcpy(ff->card->driver, "Fireface");
31 strcpy(ff->card->shortname, name);
32 strcpy(ff->card->mixername, name);
33 snprintf(ff->card->longname, sizeof(ff->card->longname),
36 dev_name(&ff->unit->device), 100 << fw_dev->max_speed);
41 struct snd_ff *ff = card->private_data;
43 snd_ff_stream_destroy_duplex(ff);
44 snd_ff_transaction_unregister(ff);
49 struct snd_ff *ff = container_of(work, struct snd_ff, dwork.work);
52 if (ff->registered)
55 err = snd_card_new(&ff->unit->device, -1, NULL, THIS_MODULE, 0,
56 &ff->card);
59 ff->card->private_free = ff_card_free;
60 ff->card->private_data = ff;
62 err = snd_ff_transaction_register(ff);
66 name_card(ff);
68 err = snd_ff_stream_init_duplex(ff);
72 snd_ff_proc_init(ff);
74 err = snd_ff_create_midi_devices(ff);
78 err = snd_ff_create_pcm_devices(ff);
82 err = snd_ff_create_hwdep_devices(ff);
86 err = snd_card_register(ff->card);
90 ff->registered = true;
94 snd_card_free(ff->card);
95 dev_info(&ff->unit->device,
102 struct snd_ff *ff;
104 ff = devm_kzalloc(&unit->device, sizeof(struct snd_ff), GFP_KERNEL);
105 if (!ff)
107 ff->unit = fw_unit_get(unit);
108 dev_set_drvdata(&unit->device, ff);
110 mutex_init(&ff->mutex);
111 spin_lock_init(&ff->lock);
112 init_waitqueue_head(&ff->hwdep_wait);
114 ff->unit_version = entry->version;
115 ff->spec = (const struct snd_ff_spec *)entry->driver_data;
118 INIT_DEFERRABLE_WORK(&ff->dwork, do_registration);
119 snd_fw_schedule_registration(unit, &ff->dwork);
126 struct snd_ff *ff = dev_get_drvdata(&unit->device);
129 if (!ff->registered)
130 snd_fw_schedule_registration(unit, &ff->dwork);
132 snd_ff_transaction_reregister(ff);
134 if (ff->registered)
135 snd_ff_stream_update_duplex(ff);
140 struct snd_ff *ff = dev_get_drvdata(&unit->device);
147 cancel_work_sync(&ff->dwork.work);
149 if (ff->registered) {
151 snd_card_free(ff->card);
154 mutex_destroy(&ff->mutex);
155 fw_unit_put(ff->unit);