Lines Matching refs:ff
16 static void name_card(struct snd_ff *ff) in name_card() argument
18 struct fw_device *fw_dev = fw_parent_device(ff->unit); in name_card()
20 strcpy(ff->card->driver, "Fireface"); in name_card()
21 strcpy(ff->card->shortname, ff->spec->name); in name_card()
22 strcpy(ff->card->mixername, ff->spec->name); in name_card()
23 snprintf(ff->card->longname, sizeof(ff->card->longname), in name_card()
24 "RME %s, GUID %08x%08x at %s, S%d", ff->spec->name, in name_card()
26 dev_name(&ff->unit->device), 100 << fw_dev->max_speed); in name_card()
31 struct snd_ff *ff = card->private_data; in ff_card_free() local
33 snd_ff_stream_destroy_duplex(ff); in ff_card_free()
34 snd_ff_transaction_unregister(ff); in ff_card_free()
39 struct snd_ff *ff = container_of(work, struct snd_ff, dwork.work); in do_registration() local
42 if (ff->registered) in do_registration()
45 err = snd_card_new(&ff->unit->device, -1, NULL, THIS_MODULE, 0, in do_registration()
46 &ff->card); in do_registration()
49 ff->card->private_free = ff_card_free; in do_registration()
50 ff->card->private_data = ff; in do_registration()
52 err = snd_ff_transaction_register(ff); in do_registration()
56 name_card(ff); in do_registration()
58 err = snd_ff_stream_init_duplex(ff); in do_registration()
62 snd_ff_proc_init(ff); in do_registration()
64 err = snd_ff_create_midi_devices(ff); in do_registration()
68 err = snd_ff_create_pcm_devices(ff); in do_registration()
72 err = snd_ff_create_hwdep_devices(ff); in do_registration()
76 err = snd_card_register(ff->card); in do_registration()
80 ff->registered = true; in do_registration()
84 snd_card_free(ff->card); in do_registration()
85 dev_info(&ff->unit->device, in do_registration()
92 struct snd_ff *ff; in snd_ff_probe() local
94 ff = devm_kzalloc(&unit->device, sizeof(struct snd_ff), GFP_KERNEL); in snd_ff_probe()
95 if (!ff) in snd_ff_probe()
97 ff->unit = fw_unit_get(unit); in snd_ff_probe()
98 dev_set_drvdata(&unit->device, ff); in snd_ff_probe()
100 mutex_init(&ff->mutex); in snd_ff_probe()
101 spin_lock_init(&ff->lock); in snd_ff_probe()
102 init_waitqueue_head(&ff->hwdep_wait); in snd_ff_probe()
104 ff->spec = (const struct snd_ff_spec *)entry->driver_data; in snd_ff_probe()
107 INIT_DEFERRABLE_WORK(&ff->dwork, do_registration); in snd_ff_probe()
108 snd_fw_schedule_registration(unit, &ff->dwork); in snd_ff_probe()
115 struct snd_ff *ff = dev_get_drvdata(&unit->device); in snd_ff_update() local
118 if (!ff->registered) in snd_ff_update()
119 snd_fw_schedule_registration(unit, &ff->dwork); in snd_ff_update()
121 snd_ff_transaction_reregister(ff); in snd_ff_update()
123 if (ff->registered) in snd_ff_update()
124 snd_ff_stream_update_duplex(ff); in snd_ff_update()
129 struct snd_ff *ff = dev_get_drvdata(&unit->device); in snd_ff_remove() local
136 cancel_work_sync(&ff->dwork.work); in snd_ff_remove()
138 if (ff->registered) { in snd_ff_remove()
140 snd_card_free(ff->card); in snd_ff_remove()
143 mutex_destroy(&ff->mutex); in snd_ff_remove()
144 fw_unit_put(ff->unit); in snd_ff_remove()