Lines Matching refs:dice

114 static int highest_supported_mode_rate(struct snd_dice *dice,  in highest_supported_mode_rate()  argument
121 if (snd_dice_stream_get_rate_mode(dice, *rate, &m) < 0) in highest_supported_mode_rate()
132 static int dice_read_mode_params(struct snd_dice *dice, unsigned int mode) in dice_read_mode_params() argument
138 if (highest_supported_mode_rate(dice, mode, &rate) < 0) { in dice_read_mode_params()
139 dice->tx_channels[mode] = 0; in dice_read_mode_params()
140 dice->tx_midi_ports[mode] = 0; in dice_read_mode_params()
141 dice->rx_channels[mode] = 0; in dice_read_mode_params()
142 dice->rx_midi_ports[mode] = 0; in dice_read_mode_params()
146 err = snd_dice_transaction_set_rate(dice, rate); in dice_read_mode_params()
150 err = snd_dice_transaction_read_tx(dice, TX_NUMBER_AUDIO, in dice_read_mode_params()
155 dice->tx_channels[mode] = be32_to_cpu(values[0]); in dice_read_mode_params()
156 dice->tx_midi_ports[mode] = be32_to_cpu(values[1]); in dice_read_mode_params()
158 err = snd_dice_transaction_read_rx(dice, RX_NUMBER_AUDIO, in dice_read_mode_params()
163 dice->rx_channels[mode] = be32_to_cpu(values[0]); in dice_read_mode_params()
164 dice->rx_midi_ports[mode] = be32_to_cpu(values[1]); in dice_read_mode_params()
169 static int dice_read_params(struct snd_dice *dice) in dice_read_params() argument
175 if (dice->clock_caps > 0) { in dice_read_params()
176 err = snd_dice_transaction_read_global(dice, in dice_read_params()
181 dice->clock_caps = be32_to_cpu(value); in dice_read_params()
184 dice->clock_caps = CLOCK_CAP_RATE_44100 | in dice_read_params()
191 err = dice_read_mode_params(dice, mode); in dice_read_params()
199 static void dice_card_strings(struct snd_dice *dice) in dice_card_strings() argument
201 struct snd_card *card = dice->card; in dice_card_strings()
202 struct fw_device *dev = fw_parent_device(dice->unit); in dice_card_strings()
211 err = snd_dice_transaction_read_global(dice, GLOBAL_NICK_NAME, in dice_card_strings()
225 fw_csr_string(dice->unit->directory, CSR_MODEL, model, sizeof(model)); in dice_card_strings()
229 dev_name(&dice->unit->device), 100 << dev->max_speed); in dice_card_strings()
242 struct snd_dice *dice = card->private_data; in dice_card_free() local
244 snd_dice_stream_destroy_duplex(dice); in dice_card_free()
245 snd_dice_transaction_destroy(dice); in dice_card_free()
246 fw_unit_put(dice->unit); in dice_card_free()
248 mutex_destroy(&dice->mutex); in dice_card_free()
254 struct snd_dice *dice; in dice_probe() local
262 sizeof(*dice), &card); in dice_probe()
266 dice = card->private_data; in dice_probe()
267 dice->card = card; in dice_probe()
268 dice->unit = fw_unit_get(unit); in dice_probe()
271 spin_lock_init(&dice->lock); in dice_probe()
272 mutex_init(&dice->mutex); in dice_probe()
273 init_completion(&dice->clock_accepted); in dice_probe()
274 init_waitqueue_head(&dice->hwdep_wait); in dice_probe()
276 err = snd_dice_transaction_init(dice); in dice_probe()
280 err = dice_read_params(dice); in dice_probe()
284 dice_card_strings(dice); in dice_probe()
286 err = snd_dice_create_pcm(dice); in dice_probe()
290 err = snd_dice_create_hwdep(dice); in dice_probe()
294 snd_dice_create_proc(dice); in dice_probe()
296 err = snd_dice_create_midi(dice); in dice_probe()
300 err = snd_dice_stream_init_duplex(dice); in dice_probe()
306 snd_dice_stream_destroy_duplex(dice); in dice_probe()
310 dev_set_drvdata(&unit->device, dice); in dice_probe()
320 struct snd_dice *dice = dev_get_drvdata(&unit->device); in dice_remove() local
323 snd_card_free_when_closed(dice->card); in dice_remove()
328 struct snd_dice *dice = dev_get_drvdata(&unit->device); in dice_bus_reset() local
331 snd_dice_transaction_reinit(dice); in dice_bus_reset()
333 mutex_lock(&dice->mutex); in dice_bus_reset()
334 snd_dice_stream_update_duplex(dice); in dice_bus_reset()
335 mutex_unlock(&dice->mutex); in dice_bus_reset()