Lines Matching defs:dice
8 #include "dice.h"
68 static int check_clock_caps(struct snd_dice *dice)
74 if (dice->clock_caps > 0) {
75 err = snd_dice_transaction_read_global(dice,
80 dice->clock_caps = be32_to_cpu(value);
83 dice->clock_caps = CLOCK_CAP_RATE_44100 |
92 static void dice_card_strings(struct snd_dice *dice)
94 struct snd_card *card = dice->card;
95 struct fw_device *dev = fw_parent_device(dice->unit);
104 err = snd_dice_transaction_read_global(dice, GLOBAL_NICK_NAME,
118 fw_csr_string(dice->unit->directory, CSR_MODEL, model, sizeof(model));
122 dev_name(&dice->unit->device), 100 << dev->max_speed);
129 struct snd_dice *dice = card->private_data;
131 snd_dice_stream_destroy_duplex(dice);
132 snd_dice_transaction_destroy(dice);
137 struct snd_dice *dice = container_of(work, struct snd_dice, dwork.work);
140 if (dice->registered)
143 err = snd_card_new(&dice->unit->device, -1, NULL, THIS_MODULE, 0,
144 &dice->card);
147 dice->card->private_free = dice_card_free;
148 dice->card->private_data = dice;
150 err = snd_dice_transaction_init(dice);
154 err = check_clock_caps(dice);
158 dice_card_strings(dice);
160 err = dice->detect_formats(dice);
164 err = snd_dice_stream_init_duplex(dice);
168 snd_dice_create_proc(dice);
170 err = snd_dice_create_pcm(dice);
174 err = snd_dice_create_midi(dice);
178 err = snd_dice_create_hwdep(dice);
182 err = snd_card_register(dice->card);
186 dice->registered = true;
190 snd_card_free(dice->card);
191 dev_info(&dice->unit->device,
198 struct snd_dice *dice;
208 dice = devm_kzalloc(&unit->device, sizeof(struct snd_dice), GFP_KERNEL);
209 if (!dice)
211 dice->unit = fw_unit_get(unit);
212 dev_set_drvdata(&unit->device, dice);
215 dice->detect_formats = snd_dice_stream_detect_current_formats;
217 dice->detect_formats =
221 spin_lock_init(&dice->lock);
222 mutex_init(&dice->mutex);
223 init_completion(&dice->clock_accepted);
224 init_waitqueue_head(&dice->hwdep_wait);
227 INIT_DEFERRABLE_WORK(&dice->dwork, do_registration);
228 snd_fw_schedule_registration(unit, &dice->dwork);
235 struct snd_dice *dice = dev_get_drvdata(&unit->device);
242 cancel_delayed_work_sync(&dice->dwork);
244 if (dice->registered) {
246 snd_card_free(dice->card);
249 mutex_destroy(&dice->mutex);
250 fw_unit_put(dice->unit);
255 struct snd_dice *dice = dev_get_drvdata(&unit->device);
258 if (!dice->registered)
259 snd_fw_schedule_registration(unit, &dice->dwork);
262 snd_dice_transaction_reinit(dice);
268 if (dice->registered) {
269 mutex_lock(&dice->mutex);
270 snd_dice_stream_update_duplex(dice);
271 mutex_unlock(&dice->mutex);