Lines Matching refs:oxfw

56 static int name_card(struct snd_oxfw *oxfw)  in name_card()  argument
58 struct fw_device *fw_dev = fw_parent_device(oxfw->unit); in name_card()
72 err = fw_csr_string(oxfw->unit->directory, CSR_MODEL, in name_card()
77 err = snd_fw_transaction(oxfw->unit, TCODE_READ_QUADLET_REQUEST, in name_card()
84 if (oxfw->device_info) { in name_card()
85 d = oxfw->device_info->driver_name; in name_card()
86 v = oxfw->device_info->vendor_name; in name_card()
87 m = oxfw->device_info->model_name; in name_card()
94 strcpy(oxfw->card->driver, d); in name_card()
95 strcpy(oxfw->card->mixername, m); in name_card()
96 strcpy(oxfw->card->shortname, m); in name_card()
98 snprintf(oxfw->card->longname, sizeof(oxfw->card->longname), in name_card()
102 dev_name(&oxfw->unit->device), 100 << fw_dev->max_speed); in name_card()
115 struct snd_oxfw *oxfw = card->private_data; in oxfw_card_free() local
118 snd_oxfw_stream_destroy_simplex(oxfw, &oxfw->rx_stream); in oxfw_card_free()
119 if (oxfw->has_output) in oxfw_card_free()
120 snd_oxfw_stream_destroy_simplex(oxfw, &oxfw->tx_stream); in oxfw_card_free()
122 fw_unit_put(oxfw->unit); in oxfw_card_free()
125 kfree(oxfw->tx_stream_formats[i]); in oxfw_card_free()
126 kfree(oxfw->rx_stream_formats[i]); in oxfw_card_free()
129 mutex_destroy(&oxfw->mutex); in oxfw_card_free()
136 struct snd_oxfw *oxfw; in oxfw_probe() local
143 sizeof(*oxfw), &card); in oxfw_probe()
148 oxfw = card->private_data; in oxfw_probe()
149 oxfw->card = card; in oxfw_probe()
150 mutex_init(&oxfw->mutex); in oxfw_probe()
151 oxfw->unit = fw_unit_get(unit); in oxfw_probe()
152 oxfw->device_info = (const struct device_info *)id->driver_data; in oxfw_probe()
153 spin_lock_init(&oxfw->lock); in oxfw_probe()
154 init_waitqueue_head(&oxfw->hwdep_wait); in oxfw_probe()
156 err = snd_oxfw_stream_discover(oxfw); in oxfw_probe()
160 err = name_card(oxfw); in oxfw_probe()
164 err = snd_oxfw_create_pcm(oxfw); in oxfw_probe()
168 if (oxfw->device_info) { in oxfw_probe()
169 err = snd_oxfw_create_mixer(oxfw); in oxfw_probe()
174 snd_oxfw_proc_init(oxfw); in oxfw_probe()
176 err = snd_oxfw_create_midi(oxfw); in oxfw_probe()
180 err = snd_oxfw_create_hwdep(oxfw); in oxfw_probe()
184 err = snd_oxfw_stream_init_simplex(oxfw, &oxfw->rx_stream); in oxfw_probe()
187 if (oxfw->has_output) { in oxfw_probe()
188 err = snd_oxfw_stream_init_simplex(oxfw, &oxfw->tx_stream); in oxfw_probe()
195 snd_oxfw_stream_destroy_simplex(oxfw, &oxfw->rx_stream); in oxfw_probe()
196 if (oxfw->has_output) in oxfw_probe()
197 snd_oxfw_stream_destroy_simplex(oxfw, &oxfw->tx_stream); in oxfw_probe()
200 dev_set_drvdata(&unit->device, oxfw); in oxfw_probe()
210 struct snd_oxfw *oxfw = dev_get_drvdata(&unit->device); in oxfw_bus_reset() local
212 fcp_bus_reset(oxfw->unit); in oxfw_bus_reset()
214 mutex_lock(&oxfw->mutex); in oxfw_bus_reset()
216 snd_oxfw_stream_update_simplex(oxfw, &oxfw->rx_stream); in oxfw_bus_reset()
217 if (oxfw->has_output) in oxfw_bus_reset()
218 snd_oxfw_stream_update_simplex(oxfw, &oxfw->tx_stream); in oxfw_bus_reset()
220 mutex_unlock(&oxfw->mutex); in oxfw_bus_reset()
225 struct snd_oxfw *oxfw = dev_get_drvdata(&unit->device); in oxfw_remove() local
228 snd_card_free_when_closed(oxfw->card); in oxfw_remove()