Lines Matching refs:bebob
3 * bebob.c - a part of driver for BeBoB based devices
14 #include "bebob.h"
70 name_device(struct snd_bebob *bebob)
72 struct fw_device *fw_dev = fw_parent_device(bebob->unit);
88 err = fw_csr_string(bebob->unit->directory, CSR_MODEL,
94 err = snd_bebob_read_quad(bebob->unit, INFO_OFFSET_HW_MODEL_ID,
100 err = snd_bebob_read_quad(bebob->unit, INFO_OFFSET_HW_MODEL_REVISION,
106 err = snd_bebob_read_block(bebob->unit, INFO_OFFSET_GUID,
111 err = snd_bebob_read_quad(bebob->unit, INFO_OFFSET_BEBOB_VERSION,
115 bebob->version = version;
117 strcpy(bebob->card->driver, "BeBoB");
118 strcpy(bebob->card->shortname, model);
119 strcpy(bebob->card->mixername, model);
120 snprintf(bebob->card->longname, sizeof(bebob->card->longname),
123 data[0], data[1], dev_name(&bebob->unit->device),
132 struct snd_bebob *bebob = card->private_data;
135 clear_bit(bebob->card_index, devices_used);
138 snd_bebob_stream_destroy_duplex(bebob);
169 struct snd_bebob *bebob =
174 if (bebob->registered)
187 err = snd_card_new(&bebob->unit->device, index[card_index],
188 id[card_index], THIS_MODULE, 0, &bebob->card);
196 bebob->card->private_free = bebob_card_free;
197 bebob->card->private_data = bebob;
199 err = name_device(bebob);
203 if (bebob->spec == &maudio_special_spec) {
204 if (bebob->entry->model_id == MODEL_MAUDIO_FW1814)
205 err = snd_bebob_maudio_special_discover(bebob, true);
207 err = snd_bebob_maudio_special_discover(bebob, false);
209 err = snd_bebob_stream_discover(bebob);
214 err = snd_bebob_stream_init_duplex(bebob);
218 snd_bebob_proc_init(bebob);
220 if (bebob->midi_input_ports > 0 || bebob->midi_output_ports > 0) {
221 err = snd_bebob_create_midi_devices(bebob);
226 err = snd_bebob_create_pcm_devices(bebob);
230 err = snd_bebob_create_hwdep_device(bebob);
234 err = snd_card_register(bebob->card);
238 bebob->registered = true;
242 snd_card_free(bebob->card);
243 dev_info(&bebob->unit->device,
250 struct snd_bebob *bebob;
272 bebob = devm_kzalloc(&unit->device, sizeof(struct snd_bebob),
274 if (!bebob)
276 bebob->unit = fw_unit_get(unit);
277 dev_set_drvdata(&unit->device, bebob);
279 bebob->entry = entry;
280 bebob->spec = spec;
281 mutex_init(&bebob->mutex);
282 spin_lock_init(&bebob->lock);
283 init_waitqueue_head(&bebob->hwdep_wait);
286 INIT_DEFERRABLE_WORK(&bebob->dwork, do_registration);
291 snd_fw_schedule_registration(unit, &bebob->dwork);
303 fw_schedule_bus_reset(fw_parent_device(bebob->unit)->card,
329 struct snd_bebob *bebob = dev_get_drvdata(&unit->device);
331 if (bebob == NULL)
335 if (!bebob->registered)
336 snd_fw_schedule_registration(unit, &bebob->dwork);
338 fcp_bus_reset(bebob->unit);
343 struct snd_bebob *bebob = dev_get_drvdata(&unit->device);
345 if (bebob == NULL)
353 cancel_delayed_work_sync(&bebob->dwork);
355 if (bebob->registered) {
357 snd_card_free(bebob->card);
360 mutex_destroy(&bebob->mutex);
361 fw_unit_put(bebob->unit);