• Home
  • Raw
  • Download

Lines Matching +full:electronic +full:- +full:serial +full:- +full:number

1 // SPDX-License-Identifier: GPL-2.0-only
34 int key, val, vendor = -1, model = -1; in check_dice_category()
40 * GUID chip ID consists of the 8-bit category ID, the 10-bit product in check_dice_category()
41 * ID, and a 22-bit serial number. in check_dice_category()
43 fw_csr_iterator_init(&it, unit->directory); in check_dice_category()
61 if (device->config_rom[3] != ((vendor << 8) | category) || in check_dice_category()
62 device->config_rom[4] >> 22 != model) in check_dice_category()
63 return -ENODEV; in check_dice_category()
74 if (dice->clock_caps > 0) { in check_clock_caps()
80 dice->clock_caps = be32_to_cpu(value); in check_clock_caps()
83 dice->clock_caps = CLOCK_CAP_RATE_44100 | in check_clock_caps()
94 struct snd_card *card = dice->card; in dice_card_strings()
95 struct fw_device *dev = fw_parent_device(dice->unit); in dice_card_strings()
100 strcpy(card->driver, "DICE"); in dice_card_strings()
102 strcpy(card->shortname, "DICE"); in dice_card_strings()
103 BUILD_BUG_ON(NICK_NAME_SIZE < sizeof(card->shortname)); in dice_card_strings()
105 card->shortname, in dice_card_strings()
106 sizeof(card->shortname)); in dice_card_strings()
108 /* DICE strings are returned in "always-wrong" endianness */ in dice_card_strings()
109 BUILD_BUG_ON(sizeof(card->shortname) % 4 != 0); in dice_card_strings()
110 for (i = 0; i < sizeof(card->shortname); i += 4) in dice_card_strings()
111 swab32s((u32 *)&card->shortname[i]); in dice_card_strings()
112 card->shortname[sizeof(card->shortname) - 1] = '\0'; in dice_card_strings()
116 fw_csr_string(dev->config_rom + 5, CSR_VENDOR, vendor, sizeof(vendor)); in dice_card_strings()
118 fw_csr_string(dice->unit->directory, CSR_MODEL, model, sizeof(model)); in dice_card_strings()
119 snprintf(card->longname, sizeof(card->longname), in dice_card_strings()
120 "%s %s (serial %u) at %s, S%d", in dice_card_strings()
121 vendor, model, dev->config_rom[4] & 0x3fffff, in dice_card_strings()
122 dev_name(&dice->unit->device), 100 << dev->max_speed); in dice_card_strings()
124 strcpy(card->mixername, "DICE"); in dice_card_strings()
129 struct snd_dice *dice = card->private_data; in dice_card_free()
140 if (dice->registered) in do_registration()
143 err = snd_card_new(&dice->unit->device, -1, NULL, THIS_MODULE, 0, in do_registration()
144 &dice->card); in do_registration()
147 dice->card->private_free = dice_card_free; in do_registration()
148 dice->card->private_data = dice; in do_registration()
160 err = dice->detect_formats(dice); in do_registration()
182 err = snd_card_register(dice->card); in do_registration()
186 dice->registered = true; in do_registration()
190 snd_card_free(dice->card); in do_registration()
191 dev_info(&dice->unit->device, in do_registration()
201 if (!entry->driver_data && entry->vendor_id != OUI_SSL) { in dice_probe()
204 return -ENODEV; in dice_probe()
208 dice = devm_kzalloc(&unit->device, sizeof(struct snd_dice), GFP_KERNEL); in dice_probe()
210 return -ENOMEM; in dice_probe()
211 dice->unit = fw_unit_get(unit); in dice_probe()
212 dev_set_drvdata(&unit->device, dice); in dice_probe()
214 if (!entry->driver_data) { in dice_probe()
215 dice->detect_formats = snd_dice_stream_detect_current_formats; in dice_probe()
217 dice->detect_formats = in dice_probe()
218 (snd_dice_detect_formats_t)entry->driver_data; in dice_probe()
221 spin_lock_init(&dice->lock); in dice_probe()
222 mutex_init(&dice->mutex); in dice_probe()
223 init_completion(&dice->clock_accepted); in dice_probe()
224 init_waitqueue_head(&dice->hwdep_wait); in dice_probe()
227 INIT_DEFERRABLE_WORK(&dice->dwork, do_registration); in dice_probe()
228 snd_fw_schedule_registration(unit, &dice->dwork); in dice_probe()
235 struct snd_dice *dice = dev_get_drvdata(&unit->device); in dice_remove()
242 cancel_delayed_work_sync(&dice->dwork); in dice_remove()
244 if (dice->registered) { in dice_remove()
246 snd_card_free(dice->card); in dice_remove()
249 mutex_destroy(&dice->mutex); in dice_remove()
250 fw_unit_put(dice->unit); in dice_remove()
255 struct snd_dice *dice = dev_get_drvdata(&unit->device); in dice_bus_reset()
258 if (!dice->registered) in dice_bus_reset()
259 snd_fw_schedule_registration(unit, &dice->dwork); in dice_bus_reset()
268 if (dice->registered) { in dice_bus_reset()
269 mutex_lock(&dice->mutex); in dice_bus_reset()
271 mutex_unlock(&dice->mutex); in dice_bus_reset()
278 /* M-Audio Profire 2626 has a different value in version field. */
286 /* M-Audio Profire 610 has a different value in version field. */
294 /* TC Electronic Konnekt 24D. */
302 /* TC Electronic Konnekt 8. */
310 /* TC Electronic Studio Konnekt 48. */
318 /* TC Electronic Konnekt Live. */
326 /* TC Electronic Desktop Konnekt 6. */
334 /* TC Electronic Impact Twin. */
342 /* TC Electronic Digital Konnekt x32. */
366 /* Mytek Stereo 192 DSD-DAC. */