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()
51 dev_dbg(chip->card->dev, in get_firmware()
54 *fw_entry = chip->fw_cache[fw_index]; in get_firmware()
59 dev_dbg(chip->card->dev, in get_firmware()
62 err = request_firmware(fw_entry, name, pci_device(chip)); in get_firmware()
64 dev_err(chip->card->dev, in get_firmware()
68 chip->fw_cache[fw_index] = *fw_entry; in get_firmware()
76 struct echoaudio *chip) in free_firmware() argument
79 dev_dbg(chip->card->dev, "firmware not released (kept in cache)\n"); in free_firmware()
87 static void free_firmware_cache(struct echoaudio *chip) in free_firmware_cache() argument
93 if (chip->fw_cache[i]) { in free_firmware_cache()
94 release_firmware(chip->fw_cache[i]); in free_firmware_cache()
95 dev_dbg(chip->card->dev, "release_firmware(%d)\n", i); in free_firmware_cache()
258 struct echoaudio *chip = rule->private; in hw_rule_sample_rate() local
261 if (!chip->can_set_rate) { in hw_rule_sample_rate()
263 fixed.min = fixed.max = chip->sample_rate; in hw_rule_sample_rate()
273 struct echoaudio *chip; in pcm_open() local
281 chip = snd_pcm_substream_chip(substream); in pcm_open()
291 dev_dbg(chip->card->dev, "max_channels=%d\n", max_channels); in pcm_open()
298 if (chip->digital_mode == DIGITAL_MODE_ADAT) { in pcm_open()
333 hw_rule_sample_rate, chip, in pcm_open()
339 snd_dma_pci_data(chip->pci), in pcm_open()
341 dev_err(chip->card->dev, "s-g list allocation failed\n"); in pcm_open()
352 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_analog_in_open() local
355 if ((err = pcm_open(substream, num_analog_busses_in(chip) - in pcm_analog_in_open()
368 atomic_inc(&chip->opencount); in pcm_analog_in_open()
369 if (atomic_read(&chip->opencount) > 1 && chip->rate_set) in pcm_analog_in_open()
370 chip->can_set_rate=0; in pcm_analog_in_open()
371 dev_dbg(chip->card->dev, "pcm_analog_in_open cs=%d oc=%d r=%d\n", in pcm_analog_in_open()
372 chip->can_set_rate, atomic_read(&chip->opencount), in pcm_analog_in_open()
373 chip->sample_rate); in pcm_analog_in_open()
381 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_analog_out_open() local
385 max_channels = num_pipes_out(chip); in pcm_analog_out_open()
387 max_channels = num_analog_busses_out(chip); in pcm_analog_out_open()
403 atomic_inc(&chip->opencount); in pcm_analog_out_open()
404 if (atomic_read(&chip->opencount) > 1 && chip->rate_set) in pcm_analog_out_open()
405 chip->can_set_rate=0; in pcm_analog_out_open()
406 dev_dbg(chip->card->dev, "pcm_analog_out_open cs=%d oc=%d r=%d\n", in pcm_analog_out_open()
407 chip->can_set_rate, atomic_read(&chip->opencount), in pcm_analog_out_open()
408 chip->sample_rate); in pcm_analog_out_open()
418 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
462 max_channels = num_digital_busses_out(chip) - substream->number; in pcm_digital_out_open()
463 mutex_lock(&chip->mode_mutex); in pcm_digital_out_open()
464 if (chip->digital_mode == DIGITAL_MODE_ADAT) in pcm_digital_out_open()
486 atomic_inc(&chip->opencount); in pcm_digital_out_open()
487 if (atomic_read(&chip->opencount) > 1 && chip->rate_set) in pcm_digital_out_open()
488 chip->can_set_rate=0; in pcm_digital_out_open()
490 mutex_unlock(&chip->mode_mutex); in pcm_digital_out_open()
502 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_close() local
509 atomic_dec(&chip->opencount); in pcm_close()
510 oc = atomic_read(&chip->opencount); in pcm_close()
511 dev_dbg(chip->card->dev, "pcm_close oc=%d cs=%d rs=%d\n", oc, in pcm_close()
512 chip->can_set_rate, chip->rate_set); in pcm_close()
514 chip->can_set_rate = 1; in pcm_close()
516 chip->rate_set = 0; in pcm_close()
517 dev_dbg(chip->card->dev, "pcm_close2 oc=%d cs=%d rs=%d\n", oc, in pcm_close()
518 chip->can_set_rate, chip->rate_set); in pcm_close()
530 struct echoaudio *chip; in init_engine() local
534 chip = snd_pcm_substream_chip(substream); in init_engine()
540 spin_lock_irq(&chip->lock); in init_engine()
542 dev_dbg(chip->card->dev, "hwp_ie free(%d)\n", pipe->index); in init_engine()
543 err = free_pipes(chip, pipe); in init_engine()
545 chip->substream[pipe->index] = NULL; in init_engine()
548 err = allocate_pipes(chip, pipe, pipe_index, interleave); in init_engine()
550 spin_unlock_irq(&chip->lock); in init_engine()
551 dev_err(chip->card->dev, "allocate_pipes(%d) err=%d\n", in init_engine()
555 spin_unlock_irq(&chip->lock); in init_engine()
556 dev_dbg(chip->card->dev, "allocate_pipes()=%d\n", pipe_index); in init_engine()
558 dev_dbg(chip->card->dev, in init_engine()
565 dev_err(chip->card->dev, "malloc_pages err=%d\n", err); in init_engine()
566 spin_lock_irq(&chip->lock); in init_engine()
567 free_pipes(chip, pipe); in init_engine()
568 spin_unlock_irq(&chip->lock); in init_engine()
573 sglist_init(chip, pipe); in init_engine()
584 sglist_add_mapping(chip, pipe, addr, rest); in init_engine()
585 sglist_add_irq(chip, pipe); in init_engine()
589 sglist_add_mapping(chip, pipe, addr, in init_engine()
602 sglist_wrap(chip, pipe); in init_engine()
607 chip->last_period[pipe_index] = 0; in init_engine()
611 chip->substream[pipe_index] = substream; in init_engine()
612 chip->rate_set = 1; in init_engine()
613 spin_lock_irq(&chip->lock); in init_engine()
614 set_sample_rate(chip, hw_params->rate_num / hw_params->rate_den); in init_engine()
615 spin_unlock_irq(&chip->lock); in init_engine()
624 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_analog_in_hw_params() local
626 return init_engine(substream, hw_params, px_analog_in(chip) + in pcm_analog_in_hw_params()
646 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_digital_in_hw_params() local
648 return init_engine(substream, hw_params, px_digital_in(chip) + in pcm_digital_in_hw_params()
658 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_digital_out_hw_params() local
660 return init_engine(substream, hw_params, px_digital_out(chip) + in pcm_digital_out_hw_params()
671 struct echoaudio *chip; in pcm_hw_free() local
674 chip = snd_pcm_substream_chip(substream); in pcm_hw_free()
677 spin_lock_irq(&chip->lock); in pcm_hw_free()
679 dev_dbg(chip->card->dev, "pcm_hw_free(%d)\n", pipe->index); in pcm_hw_free()
680 free_pipes(chip, pipe); in pcm_hw_free()
681 chip->substream[pipe->index] = NULL; in pcm_hw_free()
684 spin_unlock_irq(&chip->lock); in pcm_hw_free()
694 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_prepare() local
699 dev_dbg(chip->card->dev, "Prepare rate=%d format=%d channels=%d\n", in pcm_prepare()
720 dev_err(chip->card->dev, in pcm_prepare()
726 if (snd_BUG_ON(pipe_index >= px_num(chip))) in pcm_prepare()
728 if (snd_BUG_ON(!is_pipe_allocated(chip, pipe_index))) in pcm_prepare()
730 set_audio_format(chip, pipe_index, &format); in pcm_prepare()
738 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_trigger() local
747 if (s == chip->substream[i]) { in pcm_trigger()
754 spin_lock(&chip->lock); in pcm_trigger()
761 pipe = chip->substream[i]->runtime->private_data; in pcm_trigger()
764 chip->last_period[i] = 0; in pcm_trigger()
776 err = start_transport(chip, channelmask, in pcm_trigger()
777 chip->pipe_cyclic_mask); in pcm_trigger()
783 pipe = chip->substream[i]->runtime->private_data; in pcm_trigger()
787 err = stop_transport(chip, channelmask); in pcm_trigger()
792 pipe = chip->substream[i]->runtime->private_data; in pcm_trigger()
796 err = pause_transport(chip, channelmask); in pcm_trigger()
801 spin_unlock(&chip->lock); in pcm_trigger()
903 static int snd_echo_new_pcm(struct echoaudio *chip) in snd_echo_new_pcm() argument
916 if ((err = snd_pcm_new(chip->card, "PCM", 0, num_pipes_out(chip), in snd_echo_new_pcm()
917 num_analog_busses_in(chip), &pcm)) < 0) in snd_echo_new_pcm()
919 pcm->private_data = chip; in snd_echo_new_pcm()
920 chip->analog_pcm = pcm; in snd_echo_new_pcm()
921 strcpy(pcm->name, chip->card->shortname); in snd_echo_new_pcm()
924 if ((err = snd_echo_preallocate_pages(pcm, snd_dma_pci_data(chip->pci))) < 0) in snd_echo_new_pcm()
929 if ((err = snd_pcm_new(chip->card, "Digital PCM", 1, 0, in snd_echo_new_pcm()
930 num_digital_busses_in(chip), &pcm)) < 0) in snd_echo_new_pcm()
932 pcm->private_data = chip; in snd_echo_new_pcm()
933 chip->digital_pcm = pcm; in snd_echo_new_pcm()
934 strcpy(pcm->name, chip->card->shortname); in snd_echo_new_pcm()
936 if ((err = snd_echo_preallocate_pages(pcm, snd_dma_pci_data(chip->pci))) < 0) in snd_echo_new_pcm()
948 if ((err = snd_pcm_new(chip->card, "Analog PCM", 0, in snd_echo_new_pcm()
949 num_analog_busses_out(chip), in snd_echo_new_pcm()
950 num_analog_busses_in(chip), &pcm)) < 0) in snd_echo_new_pcm()
952 pcm->private_data = chip; in snd_echo_new_pcm()
953 chip->analog_pcm = pcm; in snd_echo_new_pcm()
954 strcpy(pcm->name, chip->card->shortname); in snd_echo_new_pcm()
957 if ((err = snd_echo_preallocate_pages(pcm, snd_dma_pci_data(chip->pci))) < 0) in snd_echo_new_pcm()
962 if ((err = snd_pcm_new(chip->card, "Digital PCM", 1, in snd_echo_new_pcm()
963 num_digital_busses_out(chip), in snd_echo_new_pcm()
964 num_digital_busses_in(chip), &pcm)) < 0) in snd_echo_new_pcm()
966 pcm->private_data = chip; in snd_echo_new_pcm()
967 chip->digital_pcm = pcm; in snd_echo_new_pcm()
968 strcpy(pcm->name, chip->card->shortname); in snd_echo_new_pcm()
971 if ((err = snd_echo_preallocate_pages(pcm, snd_dma_pci_data(chip->pci))) < 0) in snd_echo_new_pcm()
993 struct echoaudio *chip; in snd_echo_output_gain_info() local
995 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_gain_info()
997 uinfo->count = num_busses_out(chip); in snd_echo_output_gain_info()
1006 struct echoaudio *chip; in snd_echo_output_gain_get() local
1009 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_gain_get()
1010 for (c = 0; c < num_busses_out(chip); c++) in snd_echo_output_gain_get()
1011 ucontrol->value.integer.value[c] = chip->output_gain[c]; in snd_echo_output_gain_get()
1018 struct echoaudio *chip; in snd_echo_output_gain_put() local
1022 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_gain_put()
1023 spin_lock_irq(&chip->lock); in snd_echo_output_gain_put()
1024 for (c = 0; c < num_busses_out(chip); c++) { in snd_echo_output_gain_put()
1029 if (chip->output_gain[c] != gain) { in snd_echo_output_gain_put()
1030 set_output_gain(chip, c, gain); in snd_echo_output_gain_put()
1035 update_output_line_level(chip); in snd_echo_output_gain_put()
1036 spin_unlock_irq(&chip->lock); in snd_echo_output_gain_put()
1074 struct echoaudio *chip; in snd_echo_input_gain_info() local
1076 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_gain_info()
1078 uinfo->count = num_analog_busses_in(chip); in snd_echo_input_gain_info()
1087 struct echoaudio *chip; in snd_echo_input_gain_get() local
1090 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_gain_get()
1091 for (c = 0; c < num_analog_busses_in(chip); c++) in snd_echo_input_gain_get()
1092 ucontrol->value.integer.value[c] = chip->input_gain[c]; in snd_echo_input_gain_get()
1099 struct echoaudio *chip; in snd_echo_input_gain_put() local
1103 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_gain_put()
1104 spin_lock_irq(&chip->lock); in snd_echo_input_gain_put()
1105 for (c = 0; c < num_analog_busses_in(chip); c++) { in snd_echo_input_gain_put()
1110 if (chip->input_gain[c] != gain) { in snd_echo_input_gain_put()
1111 set_input_gain(chip, c, gain); in snd_echo_input_gain_put()
1116 update_input_line_level(chip); in snd_echo_input_gain_put()
1117 spin_unlock_irq(&chip->lock); in snd_echo_input_gain_put()
1143 struct echoaudio *chip; in snd_echo_output_nominal_info() local
1145 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_nominal_info()
1147 uinfo->count = num_analog_busses_out(chip); in snd_echo_output_nominal_info()
1156 struct echoaudio *chip; in snd_echo_output_nominal_get() local
1159 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_nominal_get()
1160 for (c = 0; c < num_analog_busses_out(chip); c++) in snd_echo_output_nominal_get()
1161 ucontrol->value.integer.value[c] = chip->nominal_level[c]; in snd_echo_output_nominal_get()
1168 struct echoaudio *chip; in snd_echo_output_nominal_put() local
1172 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_nominal_put()
1173 spin_lock_irq(&chip->lock); in snd_echo_output_nominal_put()
1174 for (c = 0; c < num_analog_busses_out(chip); c++) { in snd_echo_output_nominal_put()
1175 if (chip->nominal_level[c] != ucontrol->value.integer.value[c]) { in snd_echo_output_nominal_put()
1176 set_nominal_level(chip, c, in snd_echo_output_nominal_put()
1182 update_output_line_level(chip); in snd_echo_output_nominal_put()
1183 spin_unlock_irq(&chip->lock); in snd_echo_output_nominal_put()
1205 struct echoaudio *chip; in snd_echo_input_nominal_info() local
1207 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_nominal_info()
1209 uinfo->count = num_analog_busses_in(chip); in snd_echo_input_nominal_info()
1218 struct echoaudio *chip; in snd_echo_input_nominal_get() local
1221 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_nominal_get()
1222 for (c = 0; c < num_analog_busses_in(chip); c++) in snd_echo_input_nominal_get()
1224 chip->nominal_level[bx_analog_in(chip) + c]; in snd_echo_input_nominal_get()
1231 struct echoaudio *chip; in snd_echo_input_nominal_put() local
1235 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_nominal_put()
1236 spin_lock_irq(&chip->lock); in snd_echo_input_nominal_put()
1237 for (c = 0; c < num_analog_busses_in(chip); c++) { in snd_echo_input_nominal_put()
1238 if (chip->nominal_level[bx_analog_in(chip) + c] != in snd_echo_input_nominal_put()
1240 set_nominal_level(chip, bx_analog_in(chip) + c, in snd_echo_input_nominal_put()
1246 update_output_line_level(chip); /* "Output" is not a mistake in snd_echo_input_nominal_put()
1249 spin_unlock_irq(&chip->lock); in snd_echo_input_nominal_put()
1271 struct echoaudio *chip; in snd_echo_mixer_info() local
1273 chip = snd_kcontrol_chip(kcontrol); in snd_echo_mixer_info()
1278 uinfo->dimen.d[0] = num_busses_out(chip); in snd_echo_mixer_info()
1279 uinfo->dimen.d[1] = num_busses_in(chip); in snd_echo_mixer_info()
1286 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_mixer_get() local
1287 unsigned int out = ucontrol->id.index / num_busses_in(chip); in snd_echo_mixer_get()
1288 unsigned int in = ucontrol->id.index % num_busses_in(chip); in snd_echo_mixer_get()
1293 ucontrol->value.integer.value[0] = chip->monitor_gain[out][in]; in snd_echo_mixer_get()
1300 struct echoaudio *chip; in snd_echo_mixer_put() local
1305 chip = snd_kcontrol_chip(kcontrol); in snd_echo_mixer_put()
1306 out = ucontrol->id.index / num_busses_in(chip); in snd_echo_mixer_put()
1307 in = ucontrol->id.index % num_busses_in(chip); in snd_echo_mixer_put()
1313 if (chip->monitor_gain[out][in] != gain) { in snd_echo_mixer_put()
1314 spin_lock_irq(&chip->lock); in snd_echo_mixer_put()
1315 set_monitor_gain(chip, out, in, gain); in snd_echo_mixer_put()
1316 update_output_line_level(chip); in snd_echo_mixer_put()
1317 spin_unlock_irq(&chip->lock); in snd_echo_mixer_put()
1343 struct echoaudio *chip; in snd_echo_vmixer_info() local
1345 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vmixer_info()
1350 uinfo->dimen.d[0] = num_busses_out(chip); in snd_echo_vmixer_info()
1351 uinfo->dimen.d[1] = num_pipes_out(chip); in snd_echo_vmixer_info()
1358 struct echoaudio *chip; in snd_echo_vmixer_get() local
1360 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vmixer_get()
1362 chip->vmixer_gain[ucontrol->id.index / num_pipes_out(chip)] in snd_echo_vmixer_get()
1363 [ucontrol->id.index % num_pipes_out(chip)]; in snd_echo_vmixer_get()
1370 struct echoaudio *chip; in snd_echo_vmixer_put() local
1375 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vmixer_put()
1376 out = ucontrol->id.index / num_pipes_out(chip); in snd_echo_vmixer_put()
1377 vch = ucontrol->id.index % num_pipes_out(chip); in snd_echo_vmixer_put()
1381 if (chip->vmixer_gain[out][vch] != ucontrol->value.integer.value[0]) { in snd_echo_vmixer_put()
1382 spin_lock_irq(&chip->lock); in snd_echo_vmixer_put()
1383 set_vmixer_gain(chip, out, vch, ucontrol->value.integer.value[0]); in snd_echo_vmixer_put()
1384 update_vmixer_level(chip); in snd_echo_vmixer_put()
1385 spin_unlock_irq(&chip->lock); in snd_echo_vmixer_put()
1415 struct echoaudio *chip; in snd_echo_digital_mode_info() local
1417 chip = snd_kcontrol_chip(kcontrol); in snd_echo_digital_mode_info()
1418 return snd_ctl_enum_info(uinfo, 1, chip->num_digital_modes, names); in snd_echo_digital_mode_info()
1424 struct echoaudio *chip; in snd_echo_digital_mode_get() local
1427 chip = snd_kcontrol_chip(kcontrol); in snd_echo_digital_mode_get()
1428 mode = chip->digital_mode; in snd_echo_digital_mode_get()
1429 for (i = chip->num_digital_modes - 1; i >= 0; i--) in snd_echo_digital_mode_get()
1430 if (mode == chip->digital_mode_list[i]) { in snd_echo_digital_mode_get()
1440 struct echoaudio *chip; in snd_echo_digital_mode_put() local
1445 chip = snd_kcontrol_chip(kcontrol); in snd_echo_digital_mode_put()
1448 if (emode >= chip->num_digital_modes) in snd_echo_digital_mode_put()
1450 dmode = chip->digital_mode_list[emode]; in snd_echo_digital_mode_put()
1452 if (dmode != chip->digital_mode) { in snd_echo_digital_mode_put()
1455 mutex_lock(&chip->mode_mutex); in snd_echo_digital_mode_put()
1460 if (atomic_read(&chip->opencount)) { in snd_echo_digital_mode_put()
1463 changed = set_digital_mode(chip, dmode); in snd_echo_digital_mode_put()
1465 if (changed > 0 && chip->clock_src_ctl) { in snd_echo_digital_mode_put()
1466 snd_ctl_notify(chip->card, in snd_echo_digital_mode_put()
1468 &chip->clock_src_ctl->id); in snd_echo_digital_mode_put()
1469 dev_dbg(chip->card->dev, in snd_echo_digital_mode_put()
1475 mutex_unlock(&chip->mode_mutex); in snd_echo_digital_mode_put()
1506 struct echoaudio *chip; in snd_echo_spdif_mode_get() local
1508 chip = snd_kcontrol_chip(kcontrol); in snd_echo_spdif_mode_get()
1509 ucontrol->value.enumerated.item[0] = !!chip->professional_spdif; in snd_echo_spdif_mode_get()
1516 struct echoaudio *chip; in snd_echo_spdif_mode_put() local
1519 chip = snd_kcontrol_chip(kcontrol); in snd_echo_spdif_mode_put()
1521 if (mode != chip->professional_spdif) { in snd_echo_spdif_mode_put()
1522 spin_lock_irq(&chip->lock); in snd_echo_spdif_mode_put()
1523 set_professional_spdif(chip, mode); in snd_echo_spdif_mode_put()
1524 spin_unlock_irq(&chip->lock); in snd_echo_spdif_mode_put()
1552 struct echoaudio *chip; in snd_echo_clock_source_info() local
1554 chip = snd_kcontrol_chip(kcontrol); in snd_echo_clock_source_info()
1555 return snd_ctl_enum_info(uinfo, 1, chip->num_clock_sources, names); in snd_echo_clock_source_info()
1561 struct echoaudio *chip; in snd_echo_clock_source_get() local
1564 chip = snd_kcontrol_chip(kcontrol); in snd_echo_clock_source_get()
1565 clock = chip->input_clock; in snd_echo_clock_source_get()
1567 for (i = 0; i < chip->num_clock_sources; i++) in snd_echo_clock_source_get()
1568 if (clock == chip->clock_source_list[i]) in snd_echo_clock_source_get()
1577 struct echoaudio *chip; in snd_echo_clock_source_put() local
1582 chip = snd_kcontrol_chip(kcontrol); in snd_echo_clock_source_put()
1584 if (eclock >= chip->input_clock_types) in snd_echo_clock_source_put()
1586 dclock = chip->clock_source_list[eclock]; in snd_echo_clock_source_put()
1587 if (chip->input_clock != dclock) { in snd_echo_clock_source_put()
1588 mutex_lock(&chip->mode_mutex); in snd_echo_clock_source_put()
1589 spin_lock_irq(&chip->lock); in snd_echo_clock_source_put()
1590 if ((changed = set_input_clock(chip, dclock)) == 0) in snd_echo_clock_source_put()
1592 spin_unlock_irq(&chip->lock); in snd_echo_clock_source_put()
1593 mutex_unlock(&chip->mode_mutex); in snd_echo_clock_source_put()
1597 dev_dbg(chip->card->dev, in snd_echo_clock_source_put()
1623 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_phantom_power_get() local
1625 ucontrol->value.integer.value[0] = chip->phantom_power; in snd_echo_phantom_power_get()
1632 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_phantom_power_put() local
1636 if (chip->phantom_power != power) { in snd_echo_phantom_power_put()
1637 spin_lock_irq(&chip->lock); in snd_echo_phantom_power_put()
1638 changed = set_phantom_power(chip, power); in snd_echo_phantom_power_put()
1639 spin_unlock_irq(&chip->lock); in snd_echo_phantom_power_put()
1666 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_automute_get() local
1668 ucontrol->value.integer.value[0] = chip->digital_in_automute; in snd_echo_automute_get()
1675 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_automute_put() local
1679 if (chip->digital_in_automute != automute) { in snd_echo_automute_put()
1680 spin_lock_irq(&chip->lock); in snd_echo_automute_put()
1681 changed = set_input_auto_mute(chip, automute); in snd_echo_automute_put()
1682 spin_unlock_irq(&chip->lock); in snd_echo_automute_put()
1707 struct echoaudio *chip; in snd_echo_vumeters_switch_put() local
1709 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vumeters_switch_put()
1710 spin_lock_irq(&chip->lock); in snd_echo_vumeters_switch_put()
1711 set_meters_on(chip, ucontrol->value.integer.value[0]); in snd_echo_vumeters_switch_put()
1712 spin_unlock_irq(&chip->lock); in snd_echo_vumeters_switch_put()
1747 struct echoaudio *chip; in snd_echo_vumeters_get() local
1749 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vumeters_get()
1750 get_audio_meters(chip, ucontrol->value.integer.value); in snd_echo_vumeters_get()
1781 struct echoaudio *chip; in snd_echo_channels_info_get() local
1784 chip = snd_kcontrol_chip(kcontrol); in snd_echo_channels_info_get()
1785 ucontrol->value.integer.value[0] = num_busses_in(chip); in snd_echo_channels_info_get()
1786 ucontrol->value.integer.value[1] = num_analog_busses_in(chip); in snd_echo_channels_info_get()
1787 ucontrol->value.integer.value[2] = num_busses_out(chip); in snd_echo_channels_info_get()
1788 ucontrol->value.integer.value[3] = num_analog_busses_out(chip); in snd_echo_channels_info_get()
1789 ucontrol->value.integer.value[4] = num_pipes_out(chip); in snd_echo_channels_info_get()
1792 detected = detect_input_clocks(chip); in snd_echo_channels_info_get()
1794 src = chip->num_clock_sources - 1; in snd_echo_channels_info_get()
1798 if (bit == chip->clock_source_list[src]) { in snd_echo_channels_info_get()
1824 struct echoaudio *chip = dev_id; in snd_echo_interrupt() local
1828 spin_lock(&chip->lock); in snd_echo_interrupt()
1829 st = service_irq(chip); in snd_echo_interrupt()
1831 spin_unlock(&chip->lock); in snd_echo_interrupt()
1837 substream = chip->substream[ss]; in snd_echo_interrupt()
1842 if (period != chip->last_period[ss]) { in snd_echo_interrupt()
1843 chip->last_period[ss] = period; in snd_echo_interrupt()
1844 spin_unlock(&chip->lock); in snd_echo_interrupt()
1846 spin_lock(&chip->lock); in snd_echo_interrupt()
1850 spin_unlock(&chip->lock); in snd_echo_interrupt()
1853 if (st > 0 && chip->midi_in) { in snd_echo_interrupt()
1854 snd_rawmidi_receive(chip->midi_in, chip->midi_buffer, st); in snd_echo_interrupt()
1855 dev_dbg(chip->card->dev, "rawmidi_iread=%d\n", st); in snd_echo_interrupt()
1868 static int snd_echo_free(struct echoaudio *chip) in snd_echo_free() argument
1870 if (chip->comm_page) in snd_echo_free()
1871 rest_in_peace(chip); in snd_echo_free()
1873 if (chip->irq >= 0) in snd_echo_free()
1874 free_irq(chip->irq, chip); in snd_echo_free()
1876 if (chip->comm_page) in snd_echo_free()
1877 snd_dma_free_pages(&chip->commpage_dma_buf); in snd_echo_free()
1879 iounmap(chip->dsp_registers); in snd_echo_free()
1880 release_and_free_resource(chip->iores); in snd_echo_free()
1881 pci_disable_device(chip->pci); in snd_echo_free()
1884 free_firmware_cache(chip); in snd_echo_free()
1885 kfree(chip); in snd_echo_free()
1893 struct echoaudio *chip = device->device_data; in snd_echo_dev_free() local
1895 return snd_echo_free(chip); in snd_echo_dev_free()
1905 struct echoaudio *chip; in snd_echo_create() local
1922 chip = kzalloc(sizeof(*chip), GFP_KERNEL); in snd_echo_create()
1923 if (!chip) { in snd_echo_create()
1927 dev_dbg(card->dev, "chip=%p\n", chip); in snd_echo_create()
1928 spin_lock_init(&chip->lock); in snd_echo_create()
1929 chip->card = card; in snd_echo_create()
1930 chip->pci = pci; in snd_echo_create()
1931 chip->irq = -1; in snd_echo_create()
1932 atomic_set(&chip->opencount, 0); in snd_echo_create()
1933 mutex_init(&chip->mode_mutex); in snd_echo_create()
1934 chip->can_set_rate = 1; in snd_echo_create()
1939 chip = *rchip; in snd_echo_create()
1943 chip->dsp_registers_phys = pci_resource_start(pci, 0); in snd_echo_create()
1948 if ((chip->iores = request_mem_region(chip->dsp_registers_phys, sz, in snd_echo_create()
1950 dev_err(chip->card->dev, "cannot get memory region\n"); in snd_echo_create()
1951 snd_echo_free(chip); in snd_echo_create()
1954 chip->dsp_registers = (volatile u32 __iomem *) in snd_echo_create()
1955 ioremap_nocache(chip->dsp_registers_phys, sz); in snd_echo_create()
1956 if (!chip->dsp_registers) { in snd_echo_create()
1957 dev_err(chip->card->dev, "ioremap failed\n"); in snd_echo_create()
1958 snd_echo_free(chip); in snd_echo_create()
1963 KBUILD_MODNAME, chip)) { in snd_echo_create()
1964 dev_err(chip->card->dev, "cannot grab irq\n"); in snd_echo_create()
1965 snd_echo_free(chip); in snd_echo_create()
1968 chip->irq = pci->irq; in snd_echo_create()
1970 chip->pci, chip->irq, chip->pci->subsystem_device); in snd_echo_create()
1974 if (snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, snd_dma_pci_data(chip->pci), in snd_echo_create()
1976 &chip->commpage_dma_buf) < 0) { in snd_echo_create()
1977 dev_err(chip->card->dev, "cannot allocate the comm page\n"); in snd_echo_create()
1978 snd_echo_free(chip); in snd_echo_create()
1981 chip->comm_page_phys = chip->commpage_dma_buf.addr; in snd_echo_create()
1982 chip->comm_page = (struct comm_page *)chip->commpage_dma_buf.area; in snd_echo_create()
1984 err = init_hw(chip, chip->pci->device, chip->pci->subsystem_device); in snd_echo_create()
1986 err = set_mixer_defaults(chip); in snd_echo_create()
1989 snd_echo_free(chip); in snd_echo_create()
1993 if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) { in snd_echo_create()
1994 snd_echo_free(chip); in snd_echo_create()
1997 *rchip = chip; in snd_echo_create()
2010 struct echoaudio *chip; in snd_echo_probe() local
2027 chip = NULL; /* Tells snd_echo_create to allocate chip */ in snd_echo_probe()
2028 if ((err = snd_echo_create(card, pci, &chip)) < 0) { in snd_echo_probe()
2034 strcpy(card->shortname, chip->card_name); in snd_echo_probe()
2042 chip->dsp_registers_phys, chip->irq); in snd_echo_probe()
2044 if ((err = snd_echo_new_pcm(chip)) < 0) { in snd_echo_probe()
2045 dev_err(chip->card->dev, "new pcm error %d\n", err); in snd_echo_probe()
2051 if (chip->has_midi) { /* Some Mia's do not have midi */ in snd_echo_probe()
2052 if ((err = snd_echo_midi_create(card, chip)) < 0) { in snd_echo_probe()
2053 dev_err(chip->card->dev, "new midi error %d\n", err); in snd_echo_probe()
2061 snd_echo_vmixer.count = num_pipes_out(chip) * num_busses_out(chip); in snd_echo_probe()
2062 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_vmixer, chip))) < 0) in snd_echo_probe()
2065 err = snd_ctl_add(chip->card, in snd_echo_probe()
2066 snd_ctl_new1(&snd_echo_line_output_gain, chip)); in snd_echo_probe()
2071 err = snd_ctl_add(chip->card, in snd_echo_probe()
2072 snd_ctl_new1(&snd_echo_pcm_output_gain, chip)); in snd_echo_probe()
2078 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_line_input_gain, chip))) < 0) in snd_echo_probe()
2083 if (!chip->hasnt_input_nominal_level) in snd_echo_probe()
2084 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_intput_nominal_level, chip))) < 0) in snd_echo_probe()
2089 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_output_nominal_level, chip))) < 0) in snd_echo_probe()
2093 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_vumeters_switch, chip))) < 0) in snd_echo_probe()
2096 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_vumeters, chip))) < 0) in snd_echo_probe()
2100 snd_echo_monitor_mixer.count = num_busses_in(chip) * num_busses_out(chip); in snd_echo_probe()
2101 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_monitor_mixer, chip))) < 0) in snd_echo_probe()
2106 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_automute_switch, chip))) < 0) in snd_echo_probe()
2110 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_channels_info, chip))) < 0) in snd_echo_probe()
2115 chip->num_digital_modes = 0; in snd_echo_probe()
2117 if (chip->digital_modes & (1 << i)) in snd_echo_probe()
2118 chip->digital_mode_list[chip->num_digital_modes++] = i; in snd_echo_probe()
2120 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_digital_mode_switch, chip))) < 0) in snd_echo_probe()
2126 chip->num_clock_sources = 0; in snd_echo_probe()
2128 if (chip->input_clock_types & (1 << i)) in snd_echo_probe()
2129 chip->clock_source_list[chip->num_clock_sources++] = i; in snd_echo_probe()
2131 if (chip->num_clock_sources > 1) { in snd_echo_probe()
2132 chip->clock_src_ctl = snd_ctl_new1(&snd_echo_clock_source_switch, chip); in snd_echo_probe()
2133 if ((err = snd_ctl_add(chip->card, chip->clock_src_ctl)) < 0) in snd_echo_probe()
2139 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_spdif_mode_switch, chip))) < 0) in snd_echo_probe()
2144 if (chip->has_phantom_power) in snd_echo_probe()
2145 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_phantom_power_switch, chip))) < 0) in snd_echo_probe()
2154 pci_set_drvdata(pci, chip); in snd_echo_probe()
2170 struct echoaudio *chip = dev_get_drvdata(dev); in snd_echo_suspend() local
2172 snd_pcm_suspend_all(chip->analog_pcm); in snd_echo_suspend()
2173 snd_pcm_suspend_all(chip->digital_pcm); in snd_echo_suspend()
2177 if (chip->midi_out) in snd_echo_suspend()
2178 snd_echo_midi_output_trigger(chip->midi_out, 0); in snd_echo_suspend()
2180 spin_lock_irq(&chip->lock); in snd_echo_suspend()
2181 if (wait_handshake(chip)) { in snd_echo_suspend()
2182 spin_unlock_irq(&chip->lock); in snd_echo_suspend()
2185 clear_handshake(chip); in snd_echo_suspend()
2186 if (send_vector(chip, DSP_VC_GO_COMATOSE) < 0) { in snd_echo_suspend()
2187 spin_unlock_irq(&chip->lock); in snd_echo_suspend()
2190 spin_unlock_irq(&chip->lock); in snd_echo_suspend()
2192 chip->dsp_code = NULL; in snd_echo_suspend()
2193 free_irq(chip->irq, chip); in snd_echo_suspend()
2194 chip->irq = -1; in snd_echo_suspend()
2203 struct echoaudio *chip = dev_get_drvdata(dev); in snd_echo_resume() local
2211 commpage = chip->comm_page; in snd_echo_resume()
2214 err = init_hw(chip, chip->pci->device, chip->pci->subsystem_device); in snd_echo_resume()
2218 snd_echo_free(chip); in snd_echo_resume()
2225 pipe_alloc_mask = chip->pipe_alloc_mask; in snd_echo_resume()
2226 chip->pipe_alloc_mask = 0; in snd_echo_resume()
2227 err = restore_dsp_rettings(chip); in snd_echo_resume()
2228 chip->pipe_alloc_mask = pipe_alloc_mask; in snd_echo_resume()
2243 KBUILD_MODNAME, chip)) { in snd_echo_resume()
2244 dev_err(chip->card->dev, "cannot grab irq\n"); in snd_echo_resume()
2245 snd_echo_free(chip); in snd_echo_resume()
2248 chip->irq = pci->irq; in snd_echo_resume()
2249 dev_dbg(dev, "resume irq=%d\n", chip->irq); in snd_echo_resume()
2252 if (chip->midi_input_enabled) in snd_echo_resume()
2253 enable_midi_input(chip, true); in snd_echo_resume()
2254 if (chip->midi_out) in snd_echo_resume()
2255 snd_echo_midi_output_trigger(chip->midi_out, 1); in snd_echo_resume()
2270 struct echoaudio *chip; in snd_echo_remove() local
2272 chip = pci_get_drvdata(pci); in snd_echo_remove()
2273 if (chip) in snd_echo_remove()
2274 snd_card_free(chip->card); in snd_echo_remove()