• Home
  • Raw
  • Download

Lines Matching full:ff

2  * ff.c - a part of driver for RME Fireface series
9 #include "ff.h"
17 static void name_card(struct snd_ff *ff) in name_card() argument
19 struct fw_device *fw_dev = fw_parent_device(ff->unit); in name_card()
21 strcpy(ff->card->driver, "Fireface"); in name_card()
22 strcpy(ff->card->shortname, ff->spec->name); in name_card()
23 strcpy(ff->card->mixername, ff->spec->name); in name_card()
24 snprintf(ff->card->longname, sizeof(ff->card->longname), in name_card()
25 "RME %s, GUID %08x%08x at %s, S%d", ff->spec->name, in name_card()
27 dev_name(&ff->unit->device), 100 << fw_dev->max_speed); in name_card()
30 static void ff_free(struct snd_ff *ff) in ff_free() argument
32 snd_ff_stream_destroy_duplex(ff); in ff_free()
33 snd_ff_transaction_unregister(ff); in ff_free()
35 fw_unit_put(ff->unit); in ff_free()
37 mutex_destroy(&ff->mutex); in ff_free()
38 kfree(ff); in ff_free()
48 struct snd_ff *ff = container_of(work, struct snd_ff, dwork.work); in do_registration() local
51 if (ff->registered) in do_registration()
54 err = snd_card_new(&ff->unit->device, -1, NULL, THIS_MODULE, 0, in do_registration()
55 &ff->card); in do_registration()
59 err = snd_ff_transaction_register(ff); in do_registration()
63 name_card(ff); in do_registration()
65 err = snd_ff_stream_init_duplex(ff); in do_registration()
69 snd_ff_proc_init(ff); in do_registration()
71 err = snd_ff_create_midi_devices(ff); in do_registration()
75 err = snd_ff_create_pcm_devices(ff); in do_registration()
79 err = snd_ff_create_hwdep_devices(ff); in do_registration()
83 err = snd_card_register(ff->card); in do_registration()
87 ff->card->private_free = ff_card_free; in do_registration()
88 ff->card->private_data = ff; in do_registration()
89 ff->registered = true; in do_registration()
93 snd_ff_transaction_unregister(ff); in do_registration()
94 snd_ff_stream_destroy_duplex(ff); in do_registration()
95 snd_card_free(ff->card); in do_registration()
96 dev_info(&ff->unit->device, in do_registration()
103 struct snd_ff *ff; in snd_ff_probe() local
105 ff = kzalloc(sizeof(struct snd_ff), GFP_KERNEL); in snd_ff_probe()
106 if (ff == NULL) in snd_ff_probe()
110 ff->unit = fw_unit_get(unit); in snd_ff_probe()
111 dev_set_drvdata(&unit->device, ff); in snd_ff_probe()
113 mutex_init(&ff->mutex); in snd_ff_probe()
114 spin_lock_init(&ff->lock); in snd_ff_probe()
115 init_waitqueue_head(&ff->hwdep_wait); in snd_ff_probe()
117 ff->spec = (const struct snd_ff_spec *)entry->driver_data; in snd_ff_probe()
120 INIT_DEFERRABLE_WORK(&ff->dwork, do_registration); in snd_ff_probe()
121 snd_fw_schedule_registration(unit, &ff->dwork); in snd_ff_probe()
128 struct snd_ff *ff = dev_get_drvdata(&unit->device); in snd_ff_update() local
131 if (!ff->registered) in snd_ff_update()
132 snd_fw_schedule_registration(unit, &ff->dwork); in snd_ff_update()
134 snd_ff_transaction_reregister(ff); in snd_ff_update()
136 if (ff->registered) in snd_ff_update()
137 snd_ff_stream_update_duplex(ff); in snd_ff_update()
142 struct snd_ff *ff = dev_get_drvdata(&unit->device); in snd_ff_remove() local
149 cancel_work_sync(&ff->dwork.work); in snd_ff_remove()
151 if (ff->registered) { in snd_ff_remove()
153 snd_card_free_when_closed(ff->card); in snd_ff_remove()
156 ff_free(ff); in snd_ff_remove()