Lines Matching refs:dice

109 static int highest_supported_mode_rate(struct snd_dice *dice,  in highest_supported_mode_rate()  argument
116 if (snd_dice_stream_get_rate_mode(dice, *rate, &m) < 0) in highest_supported_mode_rate()
127 static int dice_read_mode_params(struct snd_dice *dice, unsigned int mode) in dice_read_mode_params() argument
133 if (highest_supported_mode_rate(dice, mode, &rate) < 0) { in dice_read_mode_params()
134 dice->tx_channels[mode] = 0; in dice_read_mode_params()
135 dice->tx_midi_ports[mode] = 0; in dice_read_mode_params()
136 dice->rx_channels[mode] = 0; in dice_read_mode_params()
137 dice->rx_midi_ports[mode] = 0; in dice_read_mode_params()
141 err = snd_dice_transaction_set_rate(dice, rate); in dice_read_mode_params()
145 err = snd_dice_transaction_read_tx(dice, TX_NUMBER_AUDIO, in dice_read_mode_params()
150 dice->tx_channels[mode] = be32_to_cpu(values[0]); in dice_read_mode_params()
151 dice->tx_midi_ports[mode] = be32_to_cpu(values[1]); in dice_read_mode_params()
153 err = snd_dice_transaction_read_rx(dice, RX_NUMBER_AUDIO, in dice_read_mode_params()
158 dice->rx_channels[mode] = be32_to_cpu(values[0]); in dice_read_mode_params()
159 dice->rx_midi_ports[mode] = be32_to_cpu(values[1]); in dice_read_mode_params()
164 static int dice_read_params(struct snd_dice *dice) in dice_read_params() argument
170 if (dice->clock_caps > 0) { in dice_read_params()
171 err = snd_dice_transaction_read_global(dice, in dice_read_params()
176 dice->clock_caps = be32_to_cpu(value); in dice_read_params()
179 dice->clock_caps = CLOCK_CAP_RATE_44100 | in dice_read_params()
186 err = dice_read_mode_params(dice, mode); in dice_read_params()
194 static void dice_card_strings(struct snd_dice *dice) in dice_card_strings() argument
196 struct snd_card *card = dice->card; in dice_card_strings()
197 struct fw_device *dev = fw_parent_device(dice->unit); in dice_card_strings()
206 err = snd_dice_transaction_read_global(dice, GLOBAL_NICK_NAME, in dice_card_strings()
220 fw_csr_string(dice->unit->directory, CSR_MODEL, model, sizeof(model)); in dice_card_strings()
224 dev_name(&dice->unit->device), 100 << dev->max_speed); in dice_card_strings()
237 struct snd_dice *dice = card->private_data; in dice_card_free() local
239 snd_dice_stream_destroy_duplex(dice); in dice_card_free()
240 snd_dice_transaction_destroy(dice); in dice_card_free()
241 fw_unit_put(dice->unit); in dice_card_free()
243 mutex_destroy(&dice->mutex); in dice_card_free()
249 struct snd_dice *dice; in dice_probe() local
257 sizeof(*dice), &card); in dice_probe()
261 dice = card->private_data; in dice_probe()
262 dice->card = card; in dice_probe()
263 dice->unit = fw_unit_get(unit); in dice_probe()
266 spin_lock_init(&dice->lock); in dice_probe()
267 mutex_init(&dice->mutex); in dice_probe()
268 init_completion(&dice->clock_accepted); in dice_probe()
269 init_waitqueue_head(&dice->hwdep_wait); in dice_probe()
271 err = snd_dice_transaction_init(dice); in dice_probe()
275 err = dice_read_params(dice); in dice_probe()
279 dice_card_strings(dice); in dice_probe()
281 err = snd_dice_create_pcm(dice); in dice_probe()
285 err = snd_dice_create_hwdep(dice); in dice_probe()
289 snd_dice_create_proc(dice); in dice_probe()
291 err = snd_dice_create_midi(dice); in dice_probe()
295 err = snd_dice_stream_init_duplex(dice); in dice_probe()
301 snd_dice_stream_destroy_duplex(dice); in dice_probe()
305 dev_set_drvdata(&unit->device, dice); in dice_probe()
315 struct snd_dice *dice = dev_get_drvdata(&unit->device); in dice_remove() local
318 snd_card_free_when_closed(dice->card); in dice_remove()
323 struct snd_dice *dice = dev_get_drvdata(&unit->device); in dice_bus_reset() local
326 snd_dice_transaction_reinit(dice); in dice_bus_reset()
328 mutex_lock(&dice->mutex); in dice_bus_reset()
329 snd_dice_stream_update_duplex(dice); in dice_bus_reset()
330 mutex_unlock(&dice->mutex); in dice_bus_reset()