Lines Matching refs:chip
44 struct echoaudio *chip, const short fw_index) in get_firmware() argument
50 if (chip->fw_cache[fw_index]) { in get_firmware()
52 *fw_entry = chip->fw_cache[fw_index]; in get_firmware()
59 err = request_firmware(fw_entry, name, pci_device(chip)); in get_firmware()
64 chip->fw_cache[fw_index] = *fw_entry; in get_firmware()
83 static void free_firmware_cache(struct echoaudio *chip) in free_firmware_cache() argument
89 if (chip->fw_cache[i]) { in free_firmware_cache()
90 release_firmware(chip->fw_cache[i]); in free_firmware_cache()
255 struct echoaudio *chip = rule->private; in hw_rule_sample_rate() local
258 if (!chip->can_set_rate) { in hw_rule_sample_rate()
260 fixed.min = fixed.max = chip->sample_rate; in hw_rule_sample_rate()
270 struct echoaudio *chip; in pcm_open() local
278 chip = snd_pcm_substream_chip(substream); in pcm_open()
295 if (chip->digital_mode == DIGITAL_MODE_ADAT) { in pcm_open()
330 hw_rule_sample_rate, chip, in pcm_open()
336 snd_dma_pci_data(chip->pci), in pcm_open()
349 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_analog_in_open() local
353 if ((err = pcm_open(substream, num_analog_busses_in(chip) - in pcm_analog_in_open()
366 atomic_inc(&chip->opencount); in pcm_analog_in_open()
367 if (atomic_read(&chip->opencount) > 1 && chip->rate_set) in pcm_analog_in_open()
368 chip->can_set_rate=0; in pcm_analog_in_open()
370 chip->can_set_rate, atomic_read(&chip->opencount), in pcm_analog_in_open()
371 chip->sample_rate)); in pcm_analog_in_open()
379 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_analog_out_open() local
383 max_channels = num_pipes_out(chip); in pcm_analog_out_open()
385 max_channels = num_analog_busses_out(chip); in pcm_analog_out_open()
402 atomic_inc(&chip->opencount); in pcm_analog_out_open()
403 if (atomic_read(&chip->opencount) > 1 && chip->rate_set) in pcm_analog_out_open()
404 chip->can_set_rate=0; in pcm_analog_out_open()
406 chip->can_set_rate, atomic_read(&chip->opencount), in pcm_analog_out_open()
407 chip->sample_rate)); in pcm_analog_out_open()
417 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_digital_in_open() local
421 max_channels = num_digital_busses_in(chip) - substream->number; in pcm_digital_in_open()
422 mutex_lock(&chip->mode_mutex); in pcm_digital_in_open()
423 if (chip->digital_mode == DIGITAL_MODE_ADAT) in pcm_digital_in_open()
444 atomic_inc(&chip->opencount); in pcm_digital_in_open()
445 if (atomic_read(&chip->opencount) > 1 && chip->rate_set) in pcm_digital_in_open()
446 chip->can_set_rate=0; in pcm_digital_in_open()
449 mutex_unlock(&chip->mode_mutex); in pcm_digital_in_open()
459 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_digital_out_open() local
463 max_channels = num_digital_busses_out(chip) - substream->number; in pcm_digital_out_open()
464 mutex_lock(&chip->mode_mutex); in pcm_digital_out_open()
465 if (chip->digital_mode == DIGITAL_MODE_ADAT) in pcm_digital_out_open()
487 atomic_inc(&chip->opencount); in pcm_digital_out_open()
488 if (atomic_read(&chip->opencount) > 1 && chip->rate_set) in pcm_digital_out_open()
489 chip->can_set_rate=0; in pcm_digital_out_open()
491 mutex_unlock(&chip->mode_mutex); in pcm_digital_out_open()
503 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_close() local
511 atomic_dec(&chip->opencount); in pcm_close()
512 oc = atomic_read(&chip->opencount); in pcm_close()
514 chip->can_set_rate, chip->rate_set)); in pcm_close()
516 chip->can_set_rate = 1; in pcm_close()
518 chip->rate_set = 0; in pcm_close()
520 chip->can_set_rate,chip->rate_set)); in pcm_close()
532 struct echoaudio *chip; in init_engine() local
536 chip = snd_pcm_substream_chip(substream); in init_engine()
542 spin_lock_irq(&chip->lock); in init_engine()
545 err = free_pipes(chip, pipe); in init_engine()
547 chip->substream[pipe->index] = NULL; in init_engine()
550 err = allocate_pipes(chip, pipe, pipe_index, interleave); in init_engine()
552 spin_unlock_irq(&chip->lock); in init_engine()
557 spin_unlock_irq(&chip->lock); in init_engine()
567 spin_lock_irq(&chip->lock); in init_engine()
568 free_pipes(chip, pipe); in init_engine()
569 spin_unlock_irq(&chip->lock); in init_engine()
574 sglist_init(chip, pipe); in init_engine()
585 sglist_add_mapping(chip, pipe, addr, rest); in init_engine()
586 sglist_add_irq(chip, pipe); in init_engine()
590 sglist_add_mapping(chip, pipe, addr, in init_engine()
603 sglist_wrap(chip, pipe); in init_engine()
608 chip->last_period[pipe_index] = 0; in init_engine()
612 chip->substream[pipe_index] = substream; in init_engine()
613 chip->rate_set = 1; in init_engine()
614 spin_lock_irq(&chip->lock); in init_engine()
615 set_sample_rate(chip, hw_params->rate_num / hw_params->rate_den); in init_engine()
616 spin_unlock_irq(&chip->lock); in init_engine()
626 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_analog_in_hw_params() local
628 return init_engine(substream, hw_params, px_analog_in(chip) + in pcm_analog_in_hw_params()
648 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_digital_in_hw_params() local
650 return init_engine(substream, hw_params, px_digital_in(chip) + in pcm_digital_in_hw_params()
660 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_digital_out_hw_params() local
662 return init_engine(substream, hw_params, px_digital_out(chip) + in pcm_digital_out_hw_params()
673 struct echoaudio *chip; in pcm_hw_free() local
676 chip = snd_pcm_substream_chip(substream); in pcm_hw_free()
679 spin_lock_irq(&chip->lock); in pcm_hw_free()
682 free_pipes(chip, pipe); in pcm_hw_free()
683 chip->substream[pipe->index] = NULL; in pcm_hw_free()
686 spin_unlock_irq(&chip->lock); in pcm_hw_free()
697 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_prepare() local
728 if (snd_BUG_ON(pipe_index >= px_num(chip))) in pcm_prepare()
730 if (snd_BUG_ON(!is_pipe_allocated(chip, pipe_index))) in pcm_prepare()
732 set_audio_format(chip, pipe_index, &format); in pcm_prepare()
740 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_trigger() local
749 if (s == chip->substream[i]) { in pcm_trigger()
756 spin_lock(&chip->lock); in pcm_trigger()
765 pipe = chip->substream[i]->runtime->private_data; in pcm_trigger()
768 chip->last_period[i] = 0; in pcm_trigger()
780 err = start_transport(chip, channelmask, in pcm_trigger()
781 chip->pipe_cyclic_mask); in pcm_trigger()
789 pipe = chip->substream[i]->runtime->private_data; in pcm_trigger()
793 err = stop_transport(chip, channelmask); in pcm_trigger()
799 pipe = chip->substream[i]->runtime->private_data; in pcm_trigger()
803 err = pause_transport(chip, channelmask); in pcm_trigger()
808 spin_unlock(&chip->lock); in pcm_trigger()
910 static int snd_echo_new_pcm(struct echoaudio *chip) in snd_echo_new_pcm() argument
923 if ((err = snd_pcm_new(chip->card, "PCM", 0, num_pipes_out(chip), in snd_echo_new_pcm()
924 num_analog_busses_in(chip), &pcm)) < 0) in snd_echo_new_pcm()
926 pcm->private_data = chip; in snd_echo_new_pcm()
927 chip->analog_pcm = pcm; in snd_echo_new_pcm()
928 strcpy(pcm->name, chip->card->shortname); in snd_echo_new_pcm()
931 if ((err = snd_echo_preallocate_pages(pcm, snd_dma_pci_data(chip->pci))) < 0) in snd_echo_new_pcm()
937 if ((err = snd_pcm_new(chip->card, "Digital PCM", 1, 0, in snd_echo_new_pcm()
938 num_digital_busses_in(chip), &pcm)) < 0) in snd_echo_new_pcm()
940 pcm->private_data = chip; in snd_echo_new_pcm()
941 chip->digital_pcm = pcm; in snd_echo_new_pcm()
942 strcpy(pcm->name, chip->card->shortname); in snd_echo_new_pcm()
944 if ((err = snd_echo_preallocate_pages(pcm, snd_dma_pci_data(chip->pci))) < 0) in snd_echo_new_pcm()
957 if ((err = snd_pcm_new(chip->card, "Analog PCM", 0, in snd_echo_new_pcm()
958 num_analog_busses_out(chip), in snd_echo_new_pcm()
959 num_analog_busses_in(chip), &pcm)) < 0) in snd_echo_new_pcm()
961 pcm->private_data = chip; in snd_echo_new_pcm()
962 chip->analog_pcm = pcm; in snd_echo_new_pcm()
963 strcpy(pcm->name, chip->card->shortname); in snd_echo_new_pcm()
966 if ((err = snd_echo_preallocate_pages(pcm, snd_dma_pci_data(chip->pci))) < 0) in snd_echo_new_pcm()
972 if ((err = snd_pcm_new(chip->card, "Digital PCM", 1, in snd_echo_new_pcm()
973 num_digital_busses_out(chip), in snd_echo_new_pcm()
974 num_digital_busses_in(chip), &pcm)) < 0) in snd_echo_new_pcm()
976 pcm->private_data = chip; in snd_echo_new_pcm()
977 chip->digital_pcm = pcm; in snd_echo_new_pcm()
978 strcpy(pcm->name, chip->card->shortname); in snd_echo_new_pcm()
981 if ((err = snd_echo_preallocate_pages(pcm, snd_dma_pci_data(chip->pci))) < 0) in snd_echo_new_pcm()
1004 struct echoaudio *chip; in snd_echo_output_gain_info() local
1006 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_gain_info()
1008 uinfo->count = num_busses_out(chip); in snd_echo_output_gain_info()
1017 struct echoaudio *chip; in snd_echo_output_gain_get() local
1020 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_gain_get()
1021 for (c = 0; c < num_busses_out(chip); c++) in snd_echo_output_gain_get()
1022 ucontrol->value.integer.value[c] = chip->output_gain[c]; in snd_echo_output_gain_get()
1029 struct echoaudio *chip; in snd_echo_output_gain_put() local
1033 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_gain_put()
1034 spin_lock_irq(&chip->lock); in snd_echo_output_gain_put()
1035 for (c = 0; c < num_busses_out(chip); c++) { in snd_echo_output_gain_put()
1040 if (chip->output_gain[c] != gain) { in snd_echo_output_gain_put()
1041 set_output_gain(chip, c, gain); in snd_echo_output_gain_put()
1046 update_output_line_level(chip); in snd_echo_output_gain_put()
1047 spin_unlock_irq(&chip->lock); in snd_echo_output_gain_put()
1085 struct echoaudio *chip; in snd_echo_input_gain_info() local
1087 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_gain_info()
1089 uinfo->count = num_analog_busses_in(chip); in snd_echo_input_gain_info()
1098 struct echoaudio *chip; in snd_echo_input_gain_get() local
1101 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_gain_get()
1102 for (c = 0; c < num_analog_busses_in(chip); c++) in snd_echo_input_gain_get()
1103 ucontrol->value.integer.value[c] = chip->input_gain[c]; in snd_echo_input_gain_get()
1110 struct echoaudio *chip; in snd_echo_input_gain_put() local
1114 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_gain_put()
1115 spin_lock_irq(&chip->lock); in snd_echo_input_gain_put()
1116 for (c = 0; c < num_analog_busses_in(chip); c++) { in snd_echo_input_gain_put()
1121 if (chip->input_gain[c] != gain) { in snd_echo_input_gain_put()
1122 set_input_gain(chip, c, gain); in snd_echo_input_gain_put()
1127 update_input_line_level(chip); in snd_echo_input_gain_put()
1128 spin_unlock_irq(&chip->lock); in snd_echo_input_gain_put()
1154 struct echoaudio *chip; in snd_echo_output_nominal_info() local
1156 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_nominal_info()
1158 uinfo->count = num_analog_busses_out(chip); in snd_echo_output_nominal_info()
1167 struct echoaudio *chip; in snd_echo_output_nominal_get() local
1170 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_nominal_get()
1171 for (c = 0; c < num_analog_busses_out(chip); c++) in snd_echo_output_nominal_get()
1172 ucontrol->value.integer.value[c] = chip->nominal_level[c]; in snd_echo_output_nominal_get()
1179 struct echoaudio *chip; in snd_echo_output_nominal_put() local
1183 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_nominal_put()
1184 spin_lock_irq(&chip->lock); in snd_echo_output_nominal_put()
1185 for (c = 0; c < num_analog_busses_out(chip); c++) { in snd_echo_output_nominal_put()
1186 if (chip->nominal_level[c] != ucontrol->value.integer.value[c]) { in snd_echo_output_nominal_put()
1187 set_nominal_level(chip, c, in snd_echo_output_nominal_put()
1193 update_output_line_level(chip); in snd_echo_output_nominal_put()
1194 spin_unlock_irq(&chip->lock); in snd_echo_output_nominal_put()
1216 struct echoaudio *chip; in snd_echo_input_nominal_info() local
1218 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_nominal_info()
1220 uinfo->count = num_analog_busses_in(chip); in snd_echo_input_nominal_info()
1229 struct echoaudio *chip; in snd_echo_input_nominal_get() local
1232 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_nominal_get()
1233 for (c = 0; c < num_analog_busses_in(chip); c++) in snd_echo_input_nominal_get()
1235 chip->nominal_level[bx_analog_in(chip) + c]; in snd_echo_input_nominal_get()
1242 struct echoaudio *chip; in snd_echo_input_nominal_put() local
1246 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_nominal_put()
1247 spin_lock_irq(&chip->lock); in snd_echo_input_nominal_put()
1248 for (c = 0; c < num_analog_busses_in(chip); c++) { in snd_echo_input_nominal_put()
1249 if (chip->nominal_level[bx_analog_in(chip) + c] != in snd_echo_input_nominal_put()
1251 set_nominal_level(chip, bx_analog_in(chip) + c, in snd_echo_input_nominal_put()
1257 update_output_line_level(chip); /* "Output" is not a mistake in snd_echo_input_nominal_put()
1260 spin_unlock_irq(&chip->lock); in snd_echo_input_nominal_put()
1282 struct echoaudio *chip; in snd_echo_mixer_info() local
1284 chip = snd_kcontrol_chip(kcontrol); in snd_echo_mixer_info()
1289 uinfo->dimen.d[0] = num_busses_out(chip); in snd_echo_mixer_info()
1290 uinfo->dimen.d[1] = num_busses_in(chip); in snd_echo_mixer_info()
1297 struct echoaudio *chip; in snd_echo_mixer_get() local
1299 chip = snd_kcontrol_chip(kcontrol); in snd_echo_mixer_get()
1301 chip->monitor_gain[ucontrol->id.index / num_busses_in(chip)] in snd_echo_mixer_get()
1302 [ucontrol->id.index % num_busses_in(chip)]; in snd_echo_mixer_get()
1309 struct echoaudio *chip; in snd_echo_mixer_put() local
1314 chip = snd_kcontrol_chip(kcontrol); in snd_echo_mixer_put()
1315 out = ucontrol->id.index / num_busses_in(chip); in snd_echo_mixer_put()
1316 in = ucontrol->id.index % num_busses_in(chip); in snd_echo_mixer_put()
1320 if (chip->monitor_gain[out][in] != gain) { in snd_echo_mixer_put()
1321 spin_lock_irq(&chip->lock); in snd_echo_mixer_put()
1322 set_monitor_gain(chip, out, in, gain); in snd_echo_mixer_put()
1323 update_output_line_level(chip); in snd_echo_mixer_put()
1324 spin_unlock_irq(&chip->lock); in snd_echo_mixer_put()
1350 struct echoaudio *chip; in snd_echo_vmixer_info() local
1352 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vmixer_info()
1357 uinfo->dimen.d[0] = num_busses_out(chip); in snd_echo_vmixer_info()
1358 uinfo->dimen.d[1] = num_pipes_out(chip); in snd_echo_vmixer_info()
1365 struct echoaudio *chip; in snd_echo_vmixer_get() local
1367 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vmixer_get()
1369 chip->vmixer_gain[ucontrol->id.index / num_pipes_out(chip)] in snd_echo_vmixer_get()
1370 [ucontrol->id.index % num_pipes_out(chip)]; in snd_echo_vmixer_get()
1377 struct echoaudio *chip; in snd_echo_vmixer_put() local
1382 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vmixer_put()
1383 out = ucontrol->id.index / num_pipes_out(chip); in snd_echo_vmixer_put()
1384 vch = ucontrol->id.index % num_pipes_out(chip); in snd_echo_vmixer_put()
1388 if (chip->vmixer_gain[out][vch] != ucontrol->value.integer.value[0]) { in snd_echo_vmixer_put()
1389 spin_lock_irq(&chip->lock); in snd_echo_vmixer_put()
1390 set_vmixer_gain(chip, out, vch, ucontrol->value.integer.value[0]); in snd_echo_vmixer_put()
1391 update_vmixer_level(chip); in snd_echo_vmixer_put()
1392 spin_unlock_irq(&chip->lock); in snd_echo_vmixer_put()
1422 struct echoaudio *chip; in snd_echo_digital_mode_info() local
1424 chip = snd_kcontrol_chip(kcontrol); in snd_echo_digital_mode_info()
1426 uinfo->value.enumerated.items = chip->num_digital_modes; in snd_echo_digital_mode_info()
1428 if (uinfo->value.enumerated.item >= chip->num_digital_modes) in snd_echo_digital_mode_info()
1429 uinfo->value.enumerated.item = chip->num_digital_modes - 1; in snd_echo_digital_mode_info()
1431 chip->digital_mode_list[uinfo->value.enumerated.item]]); in snd_echo_digital_mode_info()
1438 struct echoaudio *chip; in snd_echo_digital_mode_get() local
1441 chip = snd_kcontrol_chip(kcontrol); in snd_echo_digital_mode_get()
1442 mode = chip->digital_mode; in snd_echo_digital_mode_get()
1443 for (i = chip->num_digital_modes - 1; i >= 0; i--) in snd_echo_digital_mode_get()
1444 if (mode == chip->digital_mode_list[i]) { in snd_echo_digital_mode_get()
1454 struct echoaudio *chip; in snd_echo_digital_mode_put() local
1459 chip = snd_kcontrol_chip(kcontrol); in snd_echo_digital_mode_put()
1462 if (emode >= chip->num_digital_modes) in snd_echo_digital_mode_put()
1464 dmode = chip->digital_mode_list[emode]; in snd_echo_digital_mode_put()
1466 if (dmode != chip->digital_mode) { in snd_echo_digital_mode_put()
1469 mutex_lock(&chip->mode_mutex); in snd_echo_digital_mode_put()
1474 if (atomic_read(&chip->opencount)) { in snd_echo_digital_mode_put()
1477 changed = set_digital_mode(chip, dmode); in snd_echo_digital_mode_put()
1479 if (changed > 0 && chip->clock_src_ctl) { in snd_echo_digital_mode_put()
1480 snd_ctl_notify(chip->card, in snd_echo_digital_mode_put()
1482 &chip->clock_src_ctl->id); in snd_echo_digital_mode_put()
1488 mutex_unlock(&chip->mode_mutex); in snd_echo_digital_mode_put()
1526 struct echoaudio *chip; in snd_echo_spdif_mode_get() local
1528 chip = snd_kcontrol_chip(kcontrol); in snd_echo_spdif_mode_get()
1529 ucontrol->value.enumerated.item[0] = !!chip->professional_spdif; in snd_echo_spdif_mode_get()
1536 struct echoaudio *chip; in snd_echo_spdif_mode_put() local
1539 chip = snd_kcontrol_chip(kcontrol); in snd_echo_spdif_mode_put()
1541 if (mode != chip->professional_spdif) { in snd_echo_spdif_mode_put()
1542 spin_lock_irq(&chip->lock); in snd_echo_spdif_mode_put()
1543 set_professional_spdif(chip, mode); in snd_echo_spdif_mode_put()
1544 spin_unlock_irq(&chip->lock); in snd_echo_spdif_mode_put()
1572 struct echoaudio *chip; in snd_echo_clock_source_info() local
1574 chip = snd_kcontrol_chip(kcontrol); in snd_echo_clock_source_info()
1576 uinfo->value.enumerated.items = chip->num_clock_sources; in snd_echo_clock_source_info()
1578 if (uinfo->value.enumerated.item >= chip->num_clock_sources) in snd_echo_clock_source_info()
1579 uinfo->value.enumerated.item = chip->num_clock_sources - 1; in snd_echo_clock_source_info()
1581 chip->clock_source_list[uinfo->value.enumerated.item]]); in snd_echo_clock_source_info()
1588 struct echoaudio *chip; in snd_echo_clock_source_get() local
1591 chip = snd_kcontrol_chip(kcontrol); in snd_echo_clock_source_get()
1592 clock = chip->input_clock; in snd_echo_clock_source_get()
1594 for (i = 0; i < chip->num_clock_sources; i++) in snd_echo_clock_source_get()
1595 if (clock == chip->clock_source_list[i]) in snd_echo_clock_source_get()
1604 struct echoaudio *chip; in snd_echo_clock_source_put() local
1609 chip = snd_kcontrol_chip(kcontrol); in snd_echo_clock_source_put()
1611 if (eclock >= chip->input_clock_types) in snd_echo_clock_source_put()
1613 dclock = chip->clock_source_list[eclock]; in snd_echo_clock_source_put()
1614 if (chip->input_clock != dclock) { in snd_echo_clock_source_put()
1615 mutex_lock(&chip->mode_mutex); in snd_echo_clock_source_put()
1616 spin_lock_irq(&chip->lock); in snd_echo_clock_source_put()
1617 if ((changed = set_input_clock(chip, dclock)) == 0) in snd_echo_clock_source_put()
1619 spin_unlock_irq(&chip->lock); in snd_echo_clock_source_put()
1620 mutex_unlock(&chip->mode_mutex); in snd_echo_clock_source_put()
1649 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_phantom_power_get() local
1651 ucontrol->value.integer.value[0] = chip->phantom_power; in snd_echo_phantom_power_get()
1658 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_phantom_power_put() local
1662 if (chip->phantom_power != power) { in snd_echo_phantom_power_put()
1663 spin_lock_irq(&chip->lock); in snd_echo_phantom_power_put()
1664 changed = set_phantom_power(chip, power); in snd_echo_phantom_power_put()
1665 spin_unlock_irq(&chip->lock); in snd_echo_phantom_power_put()
1692 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_automute_get() local
1694 ucontrol->value.integer.value[0] = chip->digital_in_automute; in snd_echo_automute_get()
1701 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_automute_put() local
1705 if (chip->digital_in_automute != automute) { in snd_echo_automute_put()
1706 spin_lock_irq(&chip->lock); in snd_echo_automute_put()
1707 changed = set_input_auto_mute(chip, automute); in snd_echo_automute_put()
1708 spin_unlock_irq(&chip->lock); in snd_echo_automute_put()
1733 struct echoaudio *chip; in snd_echo_vumeters_switch_put() local
1735 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vumeters_switch_put()
1736 spin_lock_irq(&chip->lock); in snd_echo_vumeters_switch_put()
1737 set_meters_on(chip, ucontrol->value.integer.value[0]); in snd_echo_vumeters_switch_put()
1738 spin_unlock_irq(&chip->lock); in snd_echo_vumeters_switch_put()
1756 struct echoaudio *chip; in snd_echo_vumeters_info() local
1758 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vumeters_info()
1776 struct echoaudio *chip; in snd_echo_vumeters_get() local
1778 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vumeters_get()
1779 get_audio_meters(chip, ucontrol->value.integer.value); in snd_echo_vumeters_get()
1800 struct echoaudio *chip; in snd_echo_channels_info_info() local
1802 chip = snd_kcontrol_chip(kcontrol); in snd_echo_channels_info_info()
1813 struct echoaudio *chip; in snd_echo_channels_info_get() local
1816 chip = snd_kcontrol_chip(kcontrol); in snd_echo_channels_info_get()
1817 ucontrol->value.integer.value[0] = num_busses_in(chip); in snd_echo_channels_info_get()
1818 ucontrol->value.integer.value[1] = num_analog_busses_in(chip); in snd_echo_channels_info_get()
1819 ucontrol->value.integer.value[2] = num_busses_out(chip); in snd_echo_channels_info_get()
1820 ucontrol->value.integer.value[3] = num_analog_busses_out(chip); in snd_echo_channels_info_get()
1821 ucontrol->value.integer.value[4] = num_pipes_out(chip); in snd_echo_channels_info_get()
1824 detected = detect_input_clocks(chip); in snd_echo_channels_info_get()
1826 src = chip->num_clock_sources - 1; in snd_echo_channels_info_get()
1830 if (bit == chip->clock_source_list[src]) { in snd_echo_channels_info_get()
1856 struct echoaudio *chip = dev_id; in snd_echo_interrupt() local
1860 spin_lock(&chip->lock); in snd_echo_interrupt()
1861 st = service_irq(chip); in snd_echo_interrupt()
1863 spin_unlock(&chip->lock); in snd_echo_interrupt()
1869 substream = chip->substream[ss]; in snd_echo_interrupt()
1874 if (period != chip->last_period[ss]) { in snd_echo_interrupt()
1875 chip->last_period[ss] = period; in snd_echo_interrupt()
1876 spin_unlock(&chip->lock); in snd_echo_interrupt()
1878 spin_lock(&chip->lock); in snd_echo_interrupt()
1882 spin_unlock(&chip->lock); in snd_echo_interrupt()
1885 if (st > 0 && chip->midi_in) { in snd_echo_interrupt()
1886 snd_rawmidi_receive(chip->midi_in, chip->midi_buffer, st); in snd_echo_interrupt()
1900 static int snd_echo_free(struct echoaudio *chip) in snd_echo_free() argument
1903 if (chip->comm_page) in snd_echo_free()
1904 rest_in_peace(chip); in snd_echo_free()
1907 if (chip->irq >= 0) in snd_echo_free()
1908 free_irq(chip->irq, chip); in snd_echo_free()
1910 if (chip->comm_page) in snd_echo_free()
1911 snd_dma_free_pages(&chip->commpage_dma_buf); in snd_echo_free()
1913 if (chip->dsp_registers) in snd_echo_free()
1914 iounmap(chip->dsp_registers); in snd_echo_free()
1916 if (chip->iores) in snd_echo_free()
1917 release_and_free_resource(chip->iores); in snd_echo_free()
1921 pci_disable_device(chip->pci); in snd_echo_free()
1924 free_firmware_cache(chip); in snd_echo_free()
1925 kfree(chip); in snd_echo_free()
1934 struct echoaudio *chip = device->device_data; in snd_echo_dev_free() local
1937 return snd_echo_free(chip); in snd_echo_dev_free()
1947 struct echoaudio *chip; in snd_echo_create() local
1964 chip = kzalloc(sizeof(*chip), GFP_KERNEL); in snd_echo_create()
1965 if (!chip) { in snd_echo_create()
1969 DE_INIT(("chip=%p\n", chip)); in snd_echo_create()
1970 spin_lock_init(&chip->lock); in snd_echo_create()
1971 chip->card = card; in snd_echo_create()
1972 chip->pci = pci; in snd_echo_create()
1973 chip->irq = -1; in snd_echo_create()
1974 atomic_set(&chip->opencount, 0); in snd_echo_create()
1975 mutex_init(&chip->mode_mutex); in snd_echo_create()
1976 chip->can_set_rate = 1; in snd_echo_create()
1981 chip = *rchip; in snd_echo_create()
1985 chip->dsp_registers_phys = pci_resource_start(pci, 0); in snd_echo_create()
1990 if ((chip->iores = request_mem_region(chip->dsp_registers_phys, sz, in snd_echo_create()
1992 snd_echo_free(chip); in snd_echo_create()
1996 chip->dsp_registers = (volatile u32 __iomem *) in snd_echo_create()
1997 ioremap_nocache(chip->dsp_registers_phys, sz); in snd_echo_create()
2000 KBUILD_MODNAME, chip)) { in snd_echo_create()
2001 snd_echo_free(chip); in snd_echo_create()
2005 chip->irq = pci->irq; in snd_echo_create()
2007 chip->pci, chip->irq, chip->pci->subsystem_device)); in snd_echo_create()
2011 if (snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, snd_dma_pci_data(chip->pci), in snd_echo_create()
2013 &chip->commpage_dma_buf) < 0) { in snd_echo_create()
2014 snd_echo_free(chip); in snd_echo_create()
2018 chip->comm_page_phys = chip->commpage_dma_buf.addr; in snd_echo_create()
2019 chip->comm_page = (struct comm_page *)chip->commpage_dma_buf.area; in snd_echo_create()
2021 err = init_hw(chip, chip->pci->device, chip->pci->subsystem_device); in snd_echo_create()
2023 err = set_mixer_defaults(chip); in snd_echo_create()
2026 snd_echo_free(chip); in snd_echo_create()
2031 if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) { in snd_echo_create()
2032 snd_echo_free(chip); in snd_echo_create()
2035 *rchip = chip; in snd_echo_create()
2048 struct echoaudio *chip; in snd_echo_probe() local
2067 chip = NULL; /* Tells snd_echo_create to allocate chip */ in snd_echo_probe()
2068 if ((err = snd_echo_create(card, pci, &chip)) < 0) { in snd_echo_probe()
2074 strcpy(card->shortname, chip->card_name); in snd_echo_probe()
2082 chip->dsp_registers_phys, chip->irq); in snd_echo_probe()
2084 if ((err = snd_echo_new_pcm(chip)) < 0) { in snd_echo_probe()
2091 if (chip->has_midi) { /* Some Mia's do not have midi */ in snd_echo_probe()
2092 if ((err = snd_echo_midi_create(card, chip)) < 0) { in snd_echo_probe()
2101 snd_echo_vmixer.count = num_pipes_out(chip) * num_busses_out(chip); in snd_echo_probe()
2102 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_vmixer, chip))) < 0) in snd_echo_probe()
2105 err = snd_ctl_add(chip->card, in snd_echo_probe()
2106 snd_ctl_new1(&snd_echo_line_output_gain, chip)); in snd_echo_probe()
2111 err = snd_ctl_add(chip->card, in snd_echo_probe()
2112 snd_ctl_new1(&snd_echo_pcm_output_gain, chip)); in snd_echo_probe()
2118 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_line_input_gain, chip))) < 0) in snd_echo_probe()
2123 if (!chip->hasnt_input_nominal_level) in snd_echo_probe()
2124 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_intput_nominal_level, chip))) < 0) in snd_echo_probe()
2129 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_output_nominal_level, chip))) < 0) in snd_echo_probe()
2133 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_vumeters_switch, chip))) < 0) in snd_echo_probe()
2136 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_vumeters, chip))) < 0) in snd_echo_probe()
2140 snd_echo_monitor_mixer.count = num_busses_in(chip) * num_busses_out(chip); in snd_echo_probe()
2141 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_monitor_mixer, chip))) < 0) in snd_echo_probe()
2146 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_automute_switch, chip))) < 0) in snd_echo_probe()
2150 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_channels_info, chip))) < 0) in snd_echo_probe()
2155 chip->num_digital_modes = 0; in snd_echo_probe()
2157 if (chip->digital_modes & (1 << i)) in snd_echo_probe()
2158 chip->digital_mode_list[chip->num_digital_modes++] = i; in snd_echo_probe()
2160 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_digital_mode_switch, chip))) < 0) in snd_echo_probe()
2166 chip->num_clock_sources = 0; in snd_echo_probe()
2168 if (chip->input_clock_types & (1 << i)) in snd_echo_probe()
2169 chip->clock_source_list[chip->num_clock_sources++] = i; in snd_echo_probe()
2171 if (chip->num_clock_sources > 1) { in snd_echo_probe()
2172 chip->clock_src_ctl = snd_ctl_new1(&snd_echo_clock_source_switch, chip); in snd_echo_probe()
2173 if ((err = snd_ctl_add(chip->card, chip->clock_src_ctl)) < 0) in snd_echo_probe()
2179 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_spdif_mode_switch, chip))) < 0) in snd_echo_probe()
2184 if (chip->has_phantom_power) in snd_echo_probe()
2185 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_phantom_power_switch, chip))) < 0) in snd_echo_probe()
2194 pci_set_drvdata(pci, chip); in snd_echo_probe()
2211 struct echoaudio *chip = dev_get_drvdata(dev); in snd_echo_suspend() local
2214 snd_pcm_suspend_all(chip->analog_pcm); in snd_echo_suspend()
2215 snd_pcm_suspend_all(chip->digital_pcm); in snd_echo_suspend()
2219 if (chip->midi_out) in snd_echo_suspend()
2220 snd_echo_midi_output_trigger(chip->midi_out, 0); in snd_echo_suspend()
2222 spin_lock_irq(&chip->lock); in snd_echo_suspend()
2223 if (wait_handshake(chip)) { in snd_echo_suspend()
2224 spin_unlock_irq(&chip->lock); in snd_echo_suspend()
2227 clear_handshake(chip); in snd_echo_suspend()
2228 if (send_vector(chip, DSP_VC_GO_COMATOSE) < 0) { in snd_echo_suspend()
2229 spin_unlock_irq(&chip->lock); in snd_echo_suspend()
2232 spin_unlock_irq(&chip->lock); in snd_echo_suspend()
2234 chip->dsp_code = NULL; in snd_echo_suspend()
2235 free_irq(chip->irq, chip); in snd_echo_suspend()
2236 chip->irq = -1; in snd_echo_suspend()
2249 struct echoaudio *chip = dev_get_drvdata(dev); in snd_echo_resume() local
2259 commpage = chip->comm_page; in snd_echo_resume()
2262 err = init_hw(chip, chip->pci->device, chip->pci->subsystem_device); in snd_echo_resume()
2266 snd_echo_free(chip); in snd_echo_resume()
2274 pipe_alloc_mask = chip->pipe_alloc_mask; in snd_echo_resume()
2275 chip->pipe_alloc_mask = 0; in snd_echo_resume()
2276 err = restore_dsp_rettings(chip); in snd_echo_resume()
2277 chip->pipe_alloc_mask = pipe_alloc_mask; in snd_echo_resume()
2293 KBUILD_MODNAME, chip)) { in snd_echo_resume()
2294 snd_echo_free(chip); in snd_echo_resume()
2298 chip->irq = pci->irq; in snd_echo_resume()
2299 DE_INIT(("resume irq=%d\n", chip->irq)); in snd_echo_resume()
2302 if (chip->midi_input_enabled) in snd_echo_resume()
2303 enable_midi_input(chip, TRUE); in snd_echo_resume()
2304 if (chip->midi_out) in snd_echo_resume()
2305 snd_echo_midi_output_trigger(chip->midi_out, 1); in snd_echo_resume()
2321 struct echoaudio *chip; in snd_echo_remove() local
2323 chip = pci_get_drvdata(pci); in snd_echo_remove()
2324 if (chip) in snd_echo_remove()
2325 snd_card_free(chip->card); in snd_echo_remove()