Lines Matching refs:chip
33 struct echoaudio *chip, const short fw_index) in get_firmware() argument
38 if (chip->fw_cache[fw_index]) { in get_firmware()
39 dev_dbg(chip->card->dev, in get_firmware()
42 *fw_entry = chip->fw_cache[fw_index]; in get_firmware()
46 dev_dbg(chip->card->dev, in get_firmware()
49 err = request_firmware(fw_entry, name, &chip->pci->dev); in get_firmware()
51 dev_err(chip->card->dev, in get_firmware()
54 chip->fw_cache[fw_index] = *fw_entry; in get_firmware()
61 struct echoaudio *chip) in free_firmware() argument
63 dev_dbg(chip->card->dev, "firmware not released (kept in cache)\n"); in free_firmware()
68 static void free_firmware_cache(struct echoaudio *chip) in free_firmware_cache() argument
73 if (chip->fw_cache[i]) { in free_firmware_cache()
74 release_firmware(chip->fw_cache[i]); in free_firmware_cache()
75 dev_dbg(chip->card->dev, "release_firmware(%d)\n", i); in free_firmware_cache()
236 struct echoaudio *chip = rule->private; in hw_rule_sample_rate() local
240 guard(mutex)(&chip->mode_mutex); in hw_rule_sample_rate()
242 if (chip->can_set_rate) { in hw_rule_sample_rate()
246 fixed.min = fixed.max = chip->sample_rate; in hw_rule_sample_rate()
257 struct echoaudio *chip; in pcm_open() local
265 chip = snd_pcm_substream_chip(substream); in pcm_open()
275 dev_dbg(chip->card->dev, "max_channels=%d\n", max_channels); in pcm_open()
282 if (chip->digital_mode == DIGITAL_MODE_ADAT) { in pcm_open()
319 hw_rule_sample_rate, chip, in pcm_open()
326 &chip->pci->dev, in pcm_open()
329 dev_err(chip->card->dev, "s-g list allocation failed\n"); in pcm_open()
337 dev_dbg(chip->card->dev, "pcm_open opencount=%d can_set_rate=%d, rate_set=%d", in pcm_open()
338 chip->opencount, chip->can_set_rate, chip->rate_set); in pcm_open()
340 chip->opencount++; in pcm_open()
341 if (chip->opencount > 1 && chip->rate_set) in pcm_open()
342 chip->can_set_rate = 0; in pcm_open()
351 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_analog_in_open() local
355 num_analog_busses_in(chip) - substream->number); in pcm_analog_in_open()
378 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_analog_out_open() local
382 max_channels = num_pipes_out(chip); in pcm_analog_out_open()
384 max_channels = num_analog_busses_out(chip); in pcm_analog_out_open()
413 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_digital_in_open() local
416 max_channels = num_digital_busses_in(chip) - substream->number; in pcm_digital_in_open()
417 guard(mutex)(&chip->mode_mutex); in pcm_digital_in_open()
418 if (chip->digital_mode == DIGITAL_MODE_ADAT) in pcm_digital_in_open()
450 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_digital_out_open() local
453 max_channels = num_digital_busses_out(chip) - substream->number; in pcm_digital_out_open()
454 guard(mutex)(&chip->mode_mutex); in pcm_digital_out_open()
455 if (chip->digital_mode == DIGITAL_MODE_ADAT) in pcm_digital_out_open()
491 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_close() local
497 guard(mutex)(&chip->mode_mutex); in pcm_close()
499 dev_dbg(chip->card->dev, "pcm_open opencount=%d can_set_rate=%d, rate_set=%d", in pcm_close()
500 chip->opencount, chip->can_set_rate, chip->rate_set); in pcm_close()
502 chip->opencount--; in pcm_close()
504 switch (chip->opencount) { in pcm_close()
506 chip->can_set_rate = 1; in pcm_close()
510 chip->rate_set = 0; in pcm_close()
524 struct echoaudio *chip; in init_engine() local
528 chip = snd_pcm_substream_chip(substream); in init_engine()
534 scoped_guard(spinlock_irq, &chip->lock) { in init_engine()
536 dev_dbg(chip->card->dev, "hwp_ie free(%d)\n", pipe->index); in init_engine()
537 err = free_pipes(chip, pipe); in init_engine()
539 chip->substream[pipe->index] = NULL; in init_engine()
542 err = allocate_pipes(chip, pipe, pipe_index, interleave); in init_engine()
544 dev_err(chip->card->dev, "allocate_pipes(%d) err=%d\n", in init_engine()
549 dev_dbg(chip->card->dev, "allocate_pipes()=%d\n", pipe_index); in init_engine()
551 dev_dbg(chip->card->dev, in init_engine()
556 sglist_init(chip, pipe); in init_engine()
567 sglist_add_mapping(chip, pipe, addr, rest); in init_engine()
568 sglist_add_irq(chip, pipe); in init_engine()
572 sglist_add_mapping(chip, pipe, addr, in init_engine()
585 sglist_wrap(chip, pipe); in init_engine()
594 chip->substream[pipe_index] = substream; in init_engine()
595 chip->rate_set = 1; in init_engine()
596 guard(spinlock_irq)(&chip->lock); in init_engine()
597 set_sample_rate(chip, hw_params->rate_num / hw_params->rate_den); in init_engine()
606 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_analog_in_hw_params() local
608 return init_engine(substream, hw_params, px_analog_in(chip) + in pcm_analog_in_hw_params()
628 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_digital_in_hw_params() local
630 return init_engine(substream, hw_params, px_digital_in(chip) + in pcm_digital_in_hw_params()
640 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_digital_out_hw_params() local
642 return init_engine(substream, hw_params, px_digital_out(chip) + in pcm_digital_out_hw_params()
653 struct echoaudio *chip; in pcm_hw_free() local
656 chip = snd_pcm_substream_chip(substream); in pcm_hw_free()
659 guard(spinlock_irq)(&chip->lock); in pcm_hw_free()
661 dev_dbg(chip->card->dev, "pcm_hw_free(%d)\n", pipe->index); in pcm_hw_free()
662 free_pipes(chip, pipe); in pcm_hw_free()
663 chip->substream[pipe->index] = NULL; in pcm_hw_free()
674 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_prepare() local
679 dev_dbg(chip->card->dev, "Prepare rate=%d format=%d channels=%d\n", in pcm_prepare()
701 dev_err(chip->card->dev, in pcm_prepare()
707 if (snd_BUG_ON(pipe_index >= px_num(chip))) in pcm_prepare()
715 guard(spinlock_irq)(&chip->lock); in pcm_prepare()
717 if (snd_BUG_ON(!is_pipe_allocated(chip, pipe_index))) in pcm_prepare()
720 set_audio_format(chip, pipe_index, &format); in pcm_prepare()
729 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_trigger() local
737 if (s == chip->substream[i]) { in pcm_trigger()
744 guard(spinlock)(&chip->lock); in pcm_trigger()
751 pipe = chip->substream[i]->runtime->private_data; in pcm_trigger()
767 err = start_transport(chip, channelmask, in pcm_trigger()
768 chip->pipe_cyclic_mask); in pcm_trigger()
774 pipe = chip->substream[i]->runtime->private_data; in pcm_trigger()
778 err = stop_transport(chip, channelmask); in pcm_trigger()
783 pipe = chip->substream[i]->runtime->private_data; in pcm_trigger()
787 err = pause_transport(chip, channelmask); in pcm_trigger()
888 static int snd_echo_new_pcm(struct echoaudio *chip) in snd_echo_new_pcm() argument
901 err = snd_pcm_new(chip->card, "PCM", 0, num_pipes_out(chip), in snd_echo_new_pcm()
902 num_analog_busses_in(chip), &pcm); in snd_echo_new_pcm()
905 pcm->private_data = chip; in snd_echo_new_pcm()
906 chip->analog_pcm = pcm; in snd_echo_new_pcm()
907 strscpy(pcm->name, chip->card->shortname); in snd_echo_new_pcm()
910 snd_echo_preallocate_pages(pcm, &chip->pci->dev); in snd_echo_new_pcm()
914 err = snd_pcm_new(chip->card, "Digital PCM", 1, 0, in snd_echo_new_pcm()
915 num_digital_busses_in(chip), &pcm); in snd_echo_new_pcm()
918 pcm->private_data = chip; in snd_echo_new_pcm()
919 chip->digital_pcm = pcm; in snd_echo_new_pcm()
920 strscpy(pcm->name, chip->card->shortname); in snd_echo_new_pcm()
922 snd_echo_preallocate_pages(pcm, &chip->pci->dev); in snd_echo_new_pcm()
933 err = snd_pcm_new(chip->card, "Analog PCM", 0, in snd_echo_new_pcm()
934 num_analog_busses_out(chip), in snd_echo_new_pcm()
935 num_analog_busses_in(chip), &pcm); in snd_echo_new_pcm()
938 pcm->private_data = chip; in snd_echo_new_pcm()
939 chip->analog_pcm = pcm; in snd_echo_new_pcm()
940 strscpy(pcm->name, chip->card->shortname); in snd_echo_new_pcm()
943 snd_echo_preallocate_pages(pcm, &chip->pci->dev); in snd_echo_new_pcm()
947 err = snd_pcm_new(chip->card, "Digital PCM", 1, in snd_echo_new_pcm()
948 num_digital_busses_out(chip), in snd_echo_new_pcm()
949 num_digital_busses_in(chip), &pcm); in snd_echo_new_pcm()
952 pcm->private_data = chip; in snd_echo_new_pcm()
953 chip->digital_pcm = pcm; in snd_echo_new_pcm()
954 strscpy(pcm->name, chip->card->shortname); in snd_echo_new_pcm()
957 snd_echo_preallocate_pages(pcm, &chip->pci->dev); in snd_echo_new_pcm()
978 struct echoaudio *chip; in snd_echo_output_gain_info() local
980 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_gain_info()
982 uinfo->count = num_busses_out(chip); in snd_echo_output_gain_info()
991 struct echoaudio *chip; in snd_echo_output_gain_get() local
994 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_gain_get()
995 for (c = 0; c < num_busses_out(chip); c++) in snd_echo_output_gain_get()
996 ucontrol->value.integer.value[c] = chip->output_gain[c]; in snd_echo_output_gain_get()
1003 struct echoaudio *chip; in snd_echo_output_gain_put() local
1007 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_gain_put()
1008 guard(spinlock_irq)(&chip->lock); in snd_echo_output_gain_put()
1009 for (c = 0; c < num_busses_out(chip); c++) { in snd_echo_output_gain_put()
1014 if (chip->output_gain[c] != gain) { in snd_echo_output_gain_put()
1015 set_output_gain(chip, c, gain); in snd_echo_output_gain_put()
1020 update_output_line_level(chip); in snd_echo_output_gain_put()
1058 struct echoaudio *chip; in snd_echo_input_gain_info() local
1060 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_gain_info()
1062 uinfo->count = num_analog_busses_in(chip); in snd_echo_input_gain_info()
1071 struct echoaudio *chip; in snd_echo_input_gain_get() local
1074 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_gain_get()
1075 for (c = 0; c < num_analog_busses_in(chip); c++) in snd_echo_input_gain_get()
1076 ucontrol->value.integer.value[c] = chip->input_gain[c]; in snd_echo_input_gain_get()
1083 struct echoaudio *chip; in snd_echo_input_gain_put() local
1087 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_gain_put()
1088 guard(spinlock_irq)(&chip->lock); in snd_echo_input_gain_put()
1089 for (c = 0; c < num_analog_busses_in(chip); c++) { in snd_echo_input_gain_put()
1094 if (chip->input_gain[c] != gain) { in snd_echo_input_gain_put()
1095 set_input_gain(chip, c, gain); in snd_echo_input_gain_put()
1100 update_input_line_level(chip); in snd_echo_input_gain_put()
1126 struct echoaudio *chip; in snd_echo_output_nominal_info() local
1128 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_nominal_info()
1130 uinfo->count = num_analog_busses_out(chip); in snd_echo_output_nominal_info()
1139 struct echoaudio *chip; in snd_echo_output_nominal_get() local
1142 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_nominal_get()
1143 for (c = 0; c < num_analog_busses_out(chip); c++) in snd_echo_output_nominal_get()
1144 ucontrol->value.integer.value[c] = chip->nominal_level[c]; in snd_echo_output_nominal_get()
1151 struct echoaudio *chip; in snd_echo_output_nominal_put() local
1155 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_nominal_put()
1156 guard(spinlock_irq)(&chip->lock); in snd_echo_output_nominal_put()
1157 for (c = 0; c < num_analog_busses_out(chip); c++) { in snd_echo_output_nominal_put()
1158 if (chip->nominal_level[c] != ucontrol->value.integer.value[c]) { in snd_echo_output_nominal_put()
1159 set_nominal_level(chip, c, in snd_echo_output_nominal_put()
1165 update_output_line_level(chip); in snd_echo_output_nominal_put()
1187 struct echoaudio *chip; in snd_echo_input_nominal_info() local
1189 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_nominal_info()
1191 uinfo->count = num_analog_busses_in(chip); in snd_echo_input_nominal_info()
1200 struct echoaudio *chip; in snd_echo_input_nominal_get() local
1203 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_nominal_get()
1204 for (c = 0; c < num_analog_busses_in(chip); c++) in snd_echo_input_nominal_get()
1206 chip->nominal_level[bx_analog_in(chip) + c]; in snd_echo_input_nominal_get()
1213 struct echoaudio *chip; in snd_echo_input_nominal_put() local
1217 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_nominal_put()
1218 guard(spinlock_irq)(&chip->lock); in snd_echo_input_nominal_put()
1219 for (c = 0; c < num_analog_busses_in(chip); c++) { in snd_echo_input_nominal_put()
1220 if (chip->nominal_level[bx_analog_in(chip) + c] != in snd_echo_input_nominal_put()
1222 set_nominal_level(chip, bx_analog_in(chip) + c, in snd_echo_input_nominal_put()
1228 update_output_line_level(chip); /* "Output" is not a mistake in snd_echo_input_nominal_put()
1262 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_mixer_get() local
1263 unsigned int out = ucontrol->id.index / num_busses_in(chip); in snd_echo_mixer_get()
1264 unsigned int in = ucontrol->id.index % num_busses_in(chip); in snd_echo_mixer_get()
1269 ucontrol->value.integer.value[0] = chip->monitor_gain[out][in]; in snd_echo_mixer_get()
1276 struct echoaudio *chip; in snd_echo_mixer_put() local
1281 chip = snd_kcontrol_chip(kcontrol); in snd_echo_mixer_put()
1282 out = ucontrol->id.index / num_busses_in(chip); in snd_echo_mixer_put()
1283 in = ucontrol->id.index % num_busses_in(chip); in snd_echo_mixer_put()
1289 if (chip->monitor_gain[out][in] != gain) { in snd_echo_mixer_put()
1290 guard(spinlock_irq)(&chip->lock); in snd_echo_mixer_put()
1291 set_monitor_gain(chip, out, in, gain); in snd_echo_mixer_put()
1292 update_output_line_level(chip); in snd_echo_mixer_put()
1328 struct echoaudio *chip; in snd_echo_vmixer_get() local
1330 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vmixer_get()
1332 chip->vmixer_gain[ucontrol->id.index / num_pipes_out(chip)] in snd_echo_vmixer_get()
1333 [ucontrol->id.index % num_pipes_out(chip)]; in snd_echo_vmixer_get()
1340 struct echoaudio *chip; in snd_echo_vmixer_put() local
1345 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vmixer_put()
1346 out = ucontrol->id.index / num_pipes_out(chip); in snd_echo_vmixer_put()
1347 vch = ucontrol->id.index % num_pipes_out(chip); in snd_echo_vmixer_put()
1351 if (chip->vmixer_gain[out][vch] != ucontrol->value.integer.value[0]) { in snd_echo_vmixer_put()
1352 guard(spinlock_irq)(&chip->lock); in snd_echo_vmixer_put()
1353 set_vmixer_gain(chip, out, vch, ucontrol->value.integer.value[0]); in snd_echo_vmixer_put()
1354 update_vmixer_level(chip); in snd_echo_vmixer_put()
1384 struct echoaudio *chip; in snd_echo_digital_mode_info() local
1386 chip = snd_kcontrol_chip(kcontrol); in snd_echo_digital_mode_info()
1387 return snd_ctl_enum_info(uinfo, 1, chip->num_digital_modes, names); in snd_echo_digital_mode_info()
1393 struct echoaudio *chip; in snd_echo_digital_mode_get() local
1396 chip = snd_kcontrol_chip(kcontrol); in snd_echo_digital_mode_get()
1397 mode = chip->digital_mode; in snd_echo_digital_mode_get()
1398 for (i = chip->num_digital_modes - 1; i >= 0; i--) in snd_echo_digital_mode_get()
1399 if (mode == chip->digital_mode_list[i]) { in snd_echo_digital_mode_get()
1409 struct echoaudio *chip; in snd_echo_digital_mode_put() local
1414 chip = snd_kcontrol_chip(kcontrol); in snd_echo_digital_mode_put()
1417 if (emode >= chip->num_digital_modes) in snd_echo_digital_mode_put()
1419 dmode = chip->digital_mode_list[emode]; in snd_echo_digital_mode_put()
1421 if (dmode != chip->digital_mode) { in snd_echo_digital_mode_put()
1424 guard(mutex)(&chip->mode_mutex); in snd_echo_digital_mode_put()
1429 if (chip->opencount) { in snd_echo_digital_mode_put()
1432 changed = set_digital_mode(chip, dmode); in snd_echo_digital_mode_put()
1434 if (changed > 0 && chip->clock_src_ctl) { in snd_echo_digital_mode_put()
1435 snd_ctl_notify(chip->card, in snd_echo_digital_mode_put()
1437 &chip->clock_src_ctl->id); in snd_echo_digital_mode_put()
1438 dev_dbg(chip->card->dev, in snd_echo_digital_mode_put()
1474 struct echoaudio *chip; in snd_echo_spdif_mode_get() local
1476 chip = snd_kcontrol_chip(kcontrol); in snd_echo_spdif_mode_get()
1477 ucontrol->value.enumerated.item[0] = !!chip->professional_spdif; in snd_echo_spdif_mode_get()
1484 struct echoaudio *chip; in snd_echo_spdif_mode_put() local
1487 chip = snd_kcontrol_chip(kcontrol); in snd_echo_spdif_mode_put()
1489 if (mode != chip->professional_spdif) { in snd_echo_spdif_mode_put()
1490 guard(spinlock_irq)(&chip->lock); in snd_echo_spdif_mode_put()
1491 set_professional_spdif(chip, mode); in snd_echo_spdif_mode_put()
1519 struct echoaudio *chip; in snd_echo_clock_source_info() local
1521 chip = snd_kcontrol_chip(kcontrol); in snd_echo_clock_source_info()
1522 return snd_ctl_enum_info(uinfo, 1, chip->num_clock_sources, names); in snd_echo_clock_source_info()
1528 struct echoaudio *chip; in snd_echo_clock_source_get() local
1531 chip = snd_kcontrol_chip(kcontrol); in snd_echo_clock_source_get()
1532 clock = chip->input_clock; in snd_echo_clock_source_get()
1534 for (i = 0; i < chip->num_clock_sources; i++) in snd_echo_clock_source_get()
1535 if (clock == chip->clock_source_list[i]) in snd_echo_clock_source_get()
1544 struct echoaudio *chip; in snd_echo_clock_source_put() local
1549 chip = snd_kcontrol_chip(kcontrol); in snd_echo_clock_source_put()
1551 if (eclock >= chip->input_clock_types) in snd_echo_clock_source_put()
1553 dclock = chip->clock_source_list[eclock]; in snd_echo_clock_source_put()
1554 if (chip->input_clock != dclock) { in snd_echo_clock_source_put()
1555 guard(mutex)(&chip->mode_mutex); in snd_echo_clock_source_put()
1556 guard(spinlock_irq)(&chip->lock); in snd_echo_clock_source_put()
1557 changed = set_input_clock(chip, dclock); in snd_echo_clock_source_put()
1563 dev_dbg(chip->card->dev, in snd_echo_clock_source_put()
1589 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_phantom_power_get() local
1591 ucontrol->value.integer.value[0] = chip->phantom_power; in snd_echo_phantom_power_get()
1598 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_phantom_power_put() local
1602 if (chip->phantom_power != power) { in snd_echo_phantom_power_put()
1603 guard(spinlock_irq)(&chip->lock); in snd_echo_phantom_power_put()
1604 changed = set_phantom_power(chip, power); in snd_echo_phantom_power_put()
1631 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_automute_get() local
1633 ucontrol->value.integer.value[0] = chip->digital_in_automute; in snd_echo_automute_get()
1640 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_automute_put() local
1644 if (chip->digital_in_automute != automute) { in snd_echo_automute_put()
1645 guard(spinlock_irq)(&chip->lock); in snd_echo_automute_put()
1646 changed = set_input_auto_mute(chip, automute); in snd_echo_automute_put()
1671 struct echoaudio *chip; in snd_echo_vumeters_switch_put() local
1673 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vumeters_switch_put()
1674 guard(spinlock_irq)(&chip->lock); in snd_echo_vumeters_switch_put()
1675 set_meters_on(chip, ucontrol->value.integer.value[0]); in snd_echo_vumeters_switch_put()
1703 struct echoaudio *chip; in snd_echo_vumeters_get() local
1705 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vumeters_get()
1706 get_audio_meters(chip, ucontrol->value.integer.value); in snd_echo_vumeters_get()
1737 struct echoaudio *chip; in snd_echo_channels_info_get() local
1740 chip = snd_kcontrol_chip(kcontrol); in snd_echo_channels_info_get()
1741 ucontrol->value.integer.value[0] = num_busses_in(chip); in snd_echo_channels_info_get()
1742 ucontrol->value.integer.value[1] = num_analog_busses_in(chip); in snd_echo_channels_info_get()
1743 ucontrol->value.integer.value[2] = num_busses_out(chip); in snd_echo_channels_info_get()
1744 ucontrol->value.integer.value[3] = num_analog_busses_out(chip); in snd_echo_channels_info_get()
1745 ucontrol->value.integer.value[4] = num_pipes_out(chip); in snd_echo_channels_info_get()
1748 detected = detect_input_clocks(chip); in snd_echo_channels_info_get()
1750 src = chip->num_clock_sources - 1; in snd_echo_channels_info_get()
1754 if (bit == chip->clock_source_list[src]) { in snd_echo_channels_info_get()
1810 struct echoaudio *chip = dev_id; in snd_echo_interrupt() local
1813 spin_lock(&chip->lock); in snd_echo_interrupt()
1814 st = service_irq(chip); in snd_echo_interrupt()
1816 spin_unlock(&chip->lock); in snd_echo_interrupt()
1824 substream = chip->substream[ss]; in snd_echo_interrupt()
1826 spin_unlock(&chip->lock); in snd_echo_interrupt()
1828 spin_lock(&chip->lock); in snd_echo_interrupt()
1831 spin_unlock(&chip->lock); in snd_echo_interrupt()
1834 if (st > 0 && chip->midi_in) { in snd_echo_interrupt()
1835 snd_rawmidi_receive(chip->midi_in, chip->midi_buffer, st); in snd_echo_interrupt()
1836 dev_dbg(chip->card->dev, "rawmidi_iread=%d\n", st); in snd_echo_interrupt()
1851 struct echoaudio *chip = card->private_data; in snd_echo_free() local
1853 if (chip->comm_page) in snd_echo_free()
1854 rest_in_peace(chip); in snd_echo_free()
1856 if (chip->irq >= 0) in snd_echo_free()
1857 free_irq(chip->irq, chip); in snd_echo_free()
1860 free_firmware_cache(chip); in snd_echo_free()
1867 struct echoaudio *chip = card->private_data; in snd_echo_create() local
1879 spin_lock_init(&chip->lock); in snd_echo_create()
1880 chip->card = card; in snd_echo_create()
1881 chip->pci = pci; in snd_echo_create()
1882 chip->irq = -1; in snd_echo_create()
1883 chip->opencount = 0; in snd_echo_create()
1884 mutex_init(&chip->mode_mutex); in snd_echo_create()
1885 chip->can_set_rate = 1; in snd_echo_create()
1892 chip->dsp_registers_phys = pci_resource_start(pci, 0); in snd_echo_create()
1897 chip->dsp_registers = devm_ioremap(&pci->dev, chip->dsp_registers_phys, sz); in snd_echo_create()
1898 if (!chip->dsp_registers) { in snd_echo_create()
1899 dev_err(chip->card->dev, "ioremap failed\n"); in snd_echo_create()
1904 KBUILD_MODNAME, chip)) { in snd_echo_create()
1905 dev_err(chip->card->dev, "cannot grab irq\n"); in snd_echo_create()
1908 chip->irq = pci->irq; in snd_echo_create()
1909 card->sync_irq = chip->irq; in snd_echo_create()
1911 chip->pci, chip->irq, chip->pci->subsystem_device); in snd_echo_create()
1917 chip->commpage_dma_buf = in snd_echo_create()
1920 if (!chip->commpage_dma_buf) in snd_echo_create()
1922 chip->comm_page_phys = chip->commpage_dma_buf->addr; in snd_echo_create()
1923 chip->comm_page = (struct comm_page *)chip->commpage_dma_buf->area; in snd_echo_create()
1925 err = init_hw(chip, chip->pci->device, chip->pci->subsystem_device); in snd_echo_create()
1927 err = set_mixer_defaults(chip); in snd_echo_create()
1942 struct echoaudio *chip; in __snd_echo_probe() local
1954 sizeof(*chip), &card); in __snd_echo_probe()
1957 chip = card->private_data; in __snd_echo_probe()
1964 strscpy(card->shortname, chip->card_name); in __snd_echo_probe()
1972 chip->dsp_registers_phys, chip->irq); in __snd_echo_probe()
1974 err = snd_echo_new_pcm(chip); in __snd_echo_probe()
1976 dev_err(chip->card->dev, "new pcm error %d\n", err); in __snd_echo_probe()
1981 if (chip->has_midi) { /* Some Mia's do not have midi */ in __snd_echo_probe()
1982 err = snd_echo_midi_create(card, chip); in __snd_echo_probe()
1984 dev_err(chip->card->dev, "new midi error %d\n", err); in __snd_echo_probe()
1991 snd_echo_vmixer.count = num_pipes_out(chip) * num_busses_out(chip); in __snd_echo_probe()
1992 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_vmixer, chip)); in __snd_echo_probe()
1996 err = snd_ctl_add(chip->card, in __snd_echo_probe()
1997 snd_ctl_new1(&snd_echo_line_output_gain, chip)); in __snd_echo_probe()
2002 err = snd_ctl_add(chip->card, in __snd_echo_probe()
2003 snd_ctl_new1(&snd_echo_pcm_output_gain, chip)); in __snd_echo_probe()
2009 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_line_input_gain, chip)); in __snd_echo_probe()
2015 if (!chip->hasnt_input_nominal_level) { in __snd_echo_probe()
2016 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_intput_nominal_level, chip)); in __snd_echo_probe()
2023 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_output_nominal_level, chip)); in __snd_echo_probe()
2028 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_vumeters_switch, chip)); in __snd_echo_probe()
2032 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_vumeters, chip)); in __snd_echo_probe()
2037 snd_echo_monitor_mixer.count = num_busses_in(chip) * num_busses_out(chip); in __snd_echo_probe()
2038 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_monitor_mixer, chip)); in __snd_echo_probe()
2044 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_automute_switch, chip)); in __snd_echo_probe()
2049 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_channels_info, chip)); in __snd_echo_probe()
2055 chip->num_digital_modes = 0; in __snd_echo_probe()
2057 if (chip->digital_modes & (1 << i)) in __snd_echo_probe()
2058 chip->digital_mode_list[chip->num_digital_modes++] = i; in __snd_echo_probe()
2060 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_digital_mode_switch, chip)); in __snd_echo_probe()
2067 chip->num_clock_sources = 0; in __snd_echo_probe()
2069 if (chip->input_clock_types & (1 << i)) in __snd_echo_probe()
2070 chip->clock_source_list[chip->num_clock_sources++] = i; in __snd_echo_probe()
2072 if (chip->num_clock_sources > 1) { in __snd_echo_probe()
2073 chip->clock_src_ctl = snd_ctl_new1(&snd_echo_clock_source_switch, chip); in __snd_echo_probe()
2074 err = snd_ctl_add(chip->card, chip->clock_src_ctl); in __snd_echo_probe()
2081 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_spdif_mode_switch, chip)); in __snd_echo_probe()
2087 if (chip->has_phantom_power) { in __snd_echo_probe()
2088 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_phantom_power_switch, chip)); in __snd_echo_probe()
2099 pci_set_drvdata(pci, chip); in __snd_echo_probe()
2113 struct echoaudio *chip = dev_get_drvdata(dev); in snd_echo_suspend() local
2117 if (chip->midi_out) in snd_echo_suspend()
2118 snd_echo_midi_output_trigger(chip->midi_out, 0); in snd_echo_suspend()
2120 scoped_guard(spinlock_irq, &chip->lock) { in snd_echo_suspend()
2121 if (wait_handshake(chip)) in snd_echo_suspend()
2123 clear_handshake(chip); in snd_echo_suspend()
2124 if (send_vector(chip, DSP_VC_GO_COMATOSE) < 0) in snd_echo_suspend()
2128 chip->dsp_code = NULL; in snd_echo_suspend()
2129 free_irq(chip->irq, chip); in snd_echo_suspend()
2130 chip->irq = -1; in snd_echo_suspend()
2131 chip->card->sync_irq = -1; in snd_echo_suspend()
2140 struct echoaudio *chip = dev_get_drvdata(dev); in snd_echo_resume() local
2145 commpage = chip->comm_page; in snd_echo_resume()
2150 err = init_hw(chip, chip->pci->device, chip->pci->subsystem_device); in snd_echo_resume()
2160 pipe_alloc_mask = chip->pipe_alloc_mask; in snd_echo_resume()
2161 chip->pipe_alloc_mask = 0; in snd_echo_resume()
2162 err = restore_dsp_settings(chip); in snd_echo_resume()
2163 chip->pipe_alloc_mask = pipe_alloc_mask; in snd_echo_resume()
2178 KBUILD_MODNAME, chip)) { in snd_echo_resume()
2179 dev_err(chip->card->dev, "cannot grab irq\n"); in snd_echo_resume()
2182 chip->irq = pci->irq; in snd_echo_resume()
2183 chip->card->sync_irq = chip->irq; in snd_echo_resume()
2184 dev_dbg(dev, "resume irq=%d\n", chip->irq); in snd_echo_resume()
2187 if (chip->midi_input_enabled) in snd_echo_resume()
2188 enable_midi_input(chip, true); in snd_echo_resume()
2189 if (chip->midi_out) in snd_echo_resume()
2190 snd_echo_midi_output_trigger(chip->midi_out, 1); in snd_echo_resume()