Lines Matching refs:oxfw

59 static int name_card(struct snd_oxfw *oxfw)  in name_card()  argument
61 struct fw_device *fw_dev = fw_parent_device(oxfw->unit); in name_card()
75 err = fw_csr_string(oxfw->unit->directory, CSR_MODEL, in name_card()
80 err = snd_fw_transaction(oxfw->unit, TCODE_READ_QUADLET_REQUEST, in name_card()
87 if (oxfw->device_info) { in name_card()
88 d = oxfw->device_info->driver_name; in name_card()
89 v = oxfw->device_info->vendor_name; in name_card()
90 m = oxfw->device_info->model_name; in name_card()
97 strcpy(oxfw->card->driver, d); in name_card()
98 strcpy(oxfw->card->mixername, m); in name_card()
99 strcpy(oxfw->card->shortname, m); in name_card()
101 snprintf(oxfw->card->longname, sizeof(oxfw->card->longname), in name_card()
105 dev_name(&oxfw->unit->device), 100 << fw_dev->max_speed); in name_card()
118 struct snd_oxfw *oxfw = card->private_data; in oxfw_card_free() local
121 snd_oxfw_stream_destroy_simplex(oxfw, &oxfw->rx_stream); in oxfw_card_free()
122 if (oxfw->has_output) in oxfw_card_free()
123 snd_oxfw_stream_destroy_simplex(oxfw, &oxfw->tx_stream); in oxfw_card_free()
125 fw_unit_put(oxfw->unit); in oxfw_card_free()
128 kfree(oxfw->tx_stream_formats[i]); in oxfw_card_free()
129 kfree(oxfw->rx_stream_formats[i]); in oxfw_card_free()
132 mutex_destroy(&oxfw->mutex); in oxfw_card_free()
135 static void detect_quirks(struct snd_oxfw *oxfw) in detect_quirks() argument
137 struct fw_device *fw_dev = fw_parent_device(oxfw->unit); in detect_quirks()
157 oxfw->wrong_dbs = true; in detect_quirks()
164 oxfw->midi_input_ports++; in detect_quirks()
165 oxfw->midi_output_ports++; in detect_quirks()
173 struct snd_oxfw *oxfw; in oxfw_probe() local
180 sizeof(*oxfw), &card); in oxfw_probe()
185 oxfw = card->private_data; in oxfw_probe()
186 oxfw->card = card; in oxfw_probe()
187 mutex_init(&oxfw->mutex); in oxfw_probe()
188 oxfw->unit = fw_unit_get(unit); in oxfw_probe()
189 oxfw->device_info = (const struct device_info *)id->driver_data; in oxfw_probe()
190 spin_lock_init(&oxfw->lock); in oxfw_probe()
191 init_waitqueue_head(&oxfw->hwdep_wait); in oxfw_probe()
193 err = snd_oxfw_stream_discover(oxfw); in oxfw_probe()
197 detect_quirks(oxfw); in oxfw_probe()
199 err = name_card(oxfw); in oxfw_probe()
203 err = snd_oxfw_create_pcm(oxfw); in oxfw_probe()
207 if (oxfw->device_info) { in oxfw_probe()
208 err = snd_oxfw_create_mixer(oxfw); in oxfw_probe()
213 snd_oxfw_proc_init(oxfw); in oxfw_probe()
215 err = snd_oxfw_create_midi(oxfw); in oxfw_probe()
219 err = snd_oxfw_create_hwdep(oxfw); in oxfw_probe()
223 err = snd_oxfw_stream_init_simplex(oxfw, &oxfw->rx_stream); in oxfw_probe()
226 if (oxfw->has_output) { in oxfw_probe()
227 err = snd_oxfw_stream_init_simplex(oxfw, &oxfw->tx_stream); in oxfw_probe()
234 snd_oxfw_stream_destroy_simplex(oxfw, &oxfw->rx_stream); in oxfw_probe()
235 if (oxfw->has_output) in oxfw_probe()
236 snd_oxfw_stream_destroy_simplex(oxfw, &oxfw->tx_stream); in oxfw_probe()
239 dev_set_drvdata(&unit->device, oxfw); in oxfw_probe()
249 struct snd_oxfw *oxfw = dev_get_drvdata(&unit->device); in oxfw_bus_reset() local
251 fcp_bus_reset(oxfw->unit); in oxfw_bus_reset()
253 mutex_lock(&oxfw->mutex); in oxfw_bus_reset()
255 snd_oxfw_stream_update_simplex(oxfw, &oxfw->rx_stream); in oxfw_bus_reset()
256 if (oxfw->has_output) in oxfw_bus_reset()
257 snd_oxfw_stream_update_simplex(oxfw, &oxfw->tx_stream); in oxfw_bus_reset()
259 mutex_unlock(&oxfw->mutex); in oxfw_bus_reset()
264 struct snd_oxfw *oxfw = dev_get_drvdata(&unit->device); in oxfw_remove() local
267 snd_card_free_when_closed(oxfw->card); in oxfw_remove()