Lines Matching refs:bebob
70 name_device(struct snd_bebob *bebob, unsigned int vendor_id) in name_device() argument
72 struct fw_device *fw_dev = fw_parent_device(bebob->unit); in name_device()
88 err = fw_csr_string(bebob->unit->directory, CSR_MODEL, in name_device()
94 err = snd_bebob_read_quad(bebob->unit, INFO_OFFSET_HW_MODEL_ID, in name_device()
100 err = snd_bebob_read_quad(bebob->unit, INFO_OFFSET_HW_MODEL_REVISION, in name_device()
106 err = snd_bebob_read_block(bebob->unit, INFO_OFFSET_GUID, in name_device()
111 err = snd_bebob_read_quad(bebob->unit, INFO_OFFSET_BEBOB_VERSION, in name_device()
115 bebob->version = version; in name_device()
117 strcpy(bebob->card->driver, "BeBoB"); in name_device()
118 strcpy(bebob->card->shortname, model); in name_device()
119 strcpy(bebob->card->mixername, model); in name_device()
120 snprintf(bebob->card->longname, sizeof(bebob->card->longname), in name_device()
123 data[0], data[1], dev_name(&bebob->unit->device), in name_device()
138 struct snd_bebob *bebob = card->private_data; in bebob_card_free() local
140 snd_bebob_stream_destroy_duplex(bebob); in bebob_card_free()
141 fw_unit_put(bebob->unit); in bebob_card_free()
143 kfree(bebob->maudio_special_quirk); in bebob_card_free()
145 if (bebob->card_index >= 0) { in bebob_card_free()
147 clear_bit(bebob->card_index, devices_used); in bebob_card_free()
151 mutex_destroy(&bebob->mutex); in bebob_card_free()
184 struct snd_bebob *bebob; in bebob_probe() local
223 bebob = card->private_data; in bebob_probe()
224 bebob->card_index = card_index; in bebob_probe()
228 bebob->card = card; in bebob_probe()
229 bebob->unit = fw_unit_get(unit); in bebob_probe()
230 bebob->spec = spec; in bebob_probe()
231 mutex_init(&bebob->mutex); in bebob_probe()
232 spin_lock_init(&bebob->lock); in bebob_probe()
233 init_waitqueue_head(&bebob->hwdep_wait); in bebob_probe()
235 err = name_device(bebob, entry->vendor_id); in bebob_probe()
241 err = snd_bebob_maudio_special_discover(bebob, true); in bebob_probe()
244 err = snd_bebob_maudio_special_discover(bebob, false); in bebob_probe()
246 err = snd_bebob_stream_discover(bebob); in bebob_probe()
250 snd_bebob_proc_init(bebob); in bebob_probe()
252 if ((bebob->midi_input_ports > 0) || in bebob_probe()
253 (bebob->midi_output_ports > 0)) { in bebob_probe()
254 err = snd_bebob_create_midi_devices(bebob); in bebob_probe()
259 err = snd_bebob_create_pcm_devices(bebob); in bebob_probe()
263 err = snd_bebob_create_hwdep_device(bebob); in bebob_probe()
267 err = snd_bebob_stream_init_duplex(bebob); in bebob_probe()
271 if (!bebob->maudio_special_quirk) { in bebob_probe()
274 snd_bebob_stream_destroy_duplex(bebob); in bebob_probe()
288 bebob->deferred_registration = true; in bebob_probe()
289 fw_schedule_bus_reset(fw_parent_device(bebob->unit)->card, in bebob_probe()
293 dev_set_drvdata(&unit->device, bebob); in bebob_probe()
306 struct snd_bebob *bebob = dev_get_drvdata(&unit->device); in bebob_update() local
308 if (bebob == NULL) in bebob_update()
311 fcp_bus_reset(bebob->unit); in bebob_update()
312 snd_bebob_stream_update_duplex(bebob); in bebob_update()
314 if (bebob->deferred_registration) { in bebob_update()
315 if (snd_card_register(bebob->card) < 0) { in bebob_update()
316 snd_bebob_stream_destroy_duplex(bebob); in bebob_update()
317 snd_card_free(bebob->card); in bebob_update()
319 bebob->deferred_registration = false; in bebob_update()
325 struct snd_bebob *bebob = dev_get_drvdata(&unit->device); in bebob_remove() local
327 if (bebob == NULL) in bebob_remove()
331 if (!completion_done(&bebob->bus_reset)) in bebob_remove()
332 complete_all(&bebob->bus_reset); in bebob_remove()
335 snd_card_free_when_closed(bebob->card); in bebob_remove()