Lines Matching refs:chip
32 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()
47 dev_dbg(chip->card->dev, in get_firmware()
50 err = request_firmware(fw_entry, name, &chip->pci->dev); in get_firmware()
52 dev_err(chip->card->dev, in get_firmware()
56 chip->fw_cache[fw_index] = *fw_entry; in get_firmware()
64 struct echoaudio *chip) in free_firmware() argument
67 dev_dbg(chip->card->dev, "firmware not released (kept in cache)\n"); in free_firmware()
75 static void free_firmware_cache(struct echoaudio *chip) in free_firmware_cache() argument
81 if (chip->fw_cache[i]) { in free_firmware_cache()
82 release_firmware(chip->fw_cache[i]); in free_firmware_cache()
83 dev_dbg(chip->card->dev, "release_firmware(%d)\n", i); in free_firmware_cache()
246 struct echoaudio *chip = rule->private; in hw_rule_sample_rate() local
249 if (!chip->can_set_rate) { in hw_rule_sample_rate()
251 fixed.min = fixed.max = chip->sample_rate; in hw_rule_sample_rate()
261 struct echoaudio *chip; in pcm_open() local
269 chip = snd_pcm_substream_chip(substream); in pcm_open()
279 dev_dbg(chip->card->dev, "max_channels=%d\n", max_channels); in pcm_open()
286 if (chip->digital_mode == DIGITAL_MODE_ADAT) { in pcm_open()
321 hw_rule_sample_rate, chip, in pcm_open()
327 snd_dma_pci_data(chip->pci), in pcm_open()
329 dev_err(chip->card->dev, "s-g list allocation failed\n"); in pcm_open()
340 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_analog_in_open() local
343 if ((err = pcm_open(substream, num_analog_busses_in(chip) - in pcm_analog_in_open()
356 atomic_inc(&chip->opencount); in pcm_analog_in_open()
357 if (atomic_read(&chip->opencount) > 1 && chip->rate_set) in pcm_analog_in_open()
358 chip->can_set_rate=0; in pcm_analog_in_open()
359 dev_dbg(chip->card->dev, "pcm_analog_in_open cs=%d oc=%d r=%d\n", in pcm_analog_in_open()
360 chip->can_set_rate, atomic_read(&chip->opencount), in pcm_analog_in_open()
361 chip->sample_rate); in pcm_analog_in_open()
369 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_analog_out_open() local
373 max_channels = num_pipes_out(chip); in pcm_analog_out_open()
375 max_channels = num_analog_busses_out(chip); in pcm_analog_out_open()
391 atomic_inc(&chip->opencount); in pcm_analog_out_open()
392 if (atomic_read(&chip->opencount) > 1 && chip->rate_set) in pcm_analog_out_open()
393 chip->can_set_rate=0; in pcm_analog_out_open()
394 dev_dbg(chip->card->dev, "pcm_analog_out_open cs=%d oc=%d r=%d\n", in pcm_analog_out_open()
395 chip->can_set_rate, atomic_read(&chip->opencount), in pcm_analog_out_open()
396 chip->sample_rate); in pcm_analog_out_open()
406 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_digital_in_open() local
409 max_channels = num_digital_busses_in(chip) - substream->number; in pcm_digital_in_open()
410 mutex_lock(&chip->mode_mutex); in pcm_digital_in_open()
411 if (chip->digital_mode == DIGITAL_MODE_ADAT) in pcm_digital_in_open()
432 atomic_inc(&chip->opencount); in pcm_digital_in_open()
433 if (atomic_read(&chip->opencount) > 1 && chip->rate_set) in pcm_digital_in_open()
434 chip->can_set_rate=0; in pcm_digital_in_open()
437 mutex_unlock(&chip->mode_mutex); in pcm_digital_in_open()
447 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_digital_out_open() local
450 max_channels = num_digital_busses_out(chip) - substream->number; in pcm_digital_out_open()
451 mutex_lock(&chip->mode_mutex); in pcm_digital_out_open()
452 if (chip->digital_mode == DIGITAL_MODE_ADAT) in pcm_digital_out_open()
474 atomic_inc(&chip->opencount); in pcm_digital_out_open()
475 if (atomic_read(&chip->opencount) > 1 && chip->rate_set) in pcm_digital_out_open()
476 chip->can_set_rate=0; in pcm_digital_out_open()
478 mutex_unlock(&chip->mode_mutex); in pcm_digital_out_open()
490 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_close() local
497 atomic_dec(&chip->opencount); in pcm_close()
498 oc = atomic_read(&chip->opencount); in pcm_close()
499 dev_dbg(chip->card->dev, "pcm_close oc=%d cs=%d rs=%d\n", oc, in pcm_close()
500 chip->can_set_rate, chip->rate_set); in pcm_close()
502 chip->can_set_rate = 1; in pcm_close()
504 chip->rate_set = 0; in pcm_close()
505 dev_dbg(chip->card->dev, "pcm_close2 oc=%d cs=%d rs=%d\n", oc, in pcm_close()
506 chip->can_set_rate, chip->rate_set); in pcm_close()
518 struct echoaudio *chip; in init_engine() local
522 chip = snd_pcm_substream_chip(substream); in init_engine()
528 spin_lock_irq(&chip->lock); in init_engine()
530 dev_dbg(chip->card->dev, "hwp_ie free(%d)\n", pipe->index); in init_engine()
531 err = free_pipes(chip, pipe); in init_engine()
533 chip->substream[pipe->index] = NULL; in init_engine()
536 err = allocate_pipes(chip, pipe, pipe_index, interleave); in init_engine()
538 spin_unlock_irq(&chip->lock); in init_engine()
539 dev_err(chip->card->dev, "allocate_pipes(%d) err=%d\n", in init_engine()
543 spin_unlock_irq(&chip->lock); in init_engine()
544 dev_dbg(chip->card->dev, "allocate_pipes()=%d\n", pipe_index); in init_engine()
546 dev_dbg(chip->card->dev, in init_engine()
553 dev_err(chip->card->dev, "malloc_pages err=%d\n", err); in init_engine()
554 spin_lock_irq(&chip->lock); in init_engine()
555 free_pipes(chip, pipe); in init_engine()
556 spin_unlock_irq(&chip->lock); in init_engine()
561 sglist_init(chip, pipe); in init_engine()
572 sglist_add_mapping(chip, pipe, addr, rest); in init_engine()
573 sglist_add_irq(chip, pipe); in init_engine()
577 sglist_add_mapping(chip, pipe, addr, in init_engine()
590 sglist_wrap(chip, pipe); in init_engine()
595 chip->last_period[pipe_index] = 0; in init_engine()
599 chip->substream[pipe_index] = substream; in init_engine()
600 chip->rate_set = 1; in init_engine()
601 spin_lock_irq(&chip->lock); in init_engine()
602 set_sample_rate(chip, hw_params->rate_num / hw_params->rate_den); in init_engine()
603 spin_unlock_irq(&chip->lock); in init_engine()
612 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_analog_in_hw_params() local
614 return init_engine(substream, hw_params, px_analog_in(chip) + in pcm_analog_in_hw_params()
634 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_digital_in_hw_params() local
636 return init_engine(substream, hw_params, px_digital_in(chip) + in pcm_digital_in_hw_params()
646 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_digital_out_hw_params() local
648 return init_engine(substream, hw_params, px_digital_out(chip) + in pcm_digital_out_hw_params()
659 struct echoaudio *chip; in pcm_hw_free() local
662 chip = snd_pcm_substream_chip(substream); in pcm_hw_free()
665 spin_lock_irq(&chip->lock); in pcm_hw_free()
667 dev_dbg(chip->card->dev, "pcm_hw_free(%d)\n", pipe->index); in pcm_hw_free()
668 free_pipes(chip, pipe); in pcm_hw_free()
669 chip->substream[pipe->index] = NULL; in pcm_hw_free()
672 spin_unlock_irq(&chip->lock); in pcm_hw_free()
682 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_prepare() local
687 dev_dbg(chip->card->dev, "Prepare rate=%d format=%d channels=%d\n", in pcm_prepare()
709 dev_err(chip->card->dev, in pcm_prepare()
715 if (snd_BUG_ON(pipe_index >= px_num(chip))) in pcm_prepare()
717 if (snd_BUG_ON(!is_pipe_allocated(chip, pipe_index))) in pcm_prepare()
719 set_audio_format(chip, pipe_index, &format); in pcm_prepare()
727 struct echoaudio *chip = snd_pcm_substream_chip(substream); in pcm_trigger() local
735 if (s == chip->substream[i]) { in pcm_trigger()
742 spin_lock(&chip->lock); in pcm_trigger()
749 pipe = chip->substream[i]->runtime->private_data; in pcm_trigger()
752 chip->last_period[i] = 0; in pcm_trigger()
765 err = start_transport(chip, channelmask, in pcm_trigger()
766 chip->pipe_cyclic_mask); in pcm_trigger()
772 pipe = chip->substream[i]->runtime->private_data; in pcm_trigger()
776 err = stop_transport(chip, channelmask); in pcm_trigger()
781 pipe = chip->substream[i]->runtime->private_data; in pcm_trigger()
785 err = pause_transport(chip, channelmask); in pcm_trigger()
790 spin_unlock(&chip->lock); in pcm_trigger()
890 static int snd_echo_new_pcm(struct echoaudio *chip) in snd_echo_new_pcm() argument
903 if ((err = snd_pcm_new(chip->card, "PCM", 0, num_pipes_out(chip), in snd_echo_new_pcm()
904 num_analog_busses_in(chip), &pcm)) < 0) in snd_echo_new_pcm()
906 pcm->private_data = chip; in snd_echo_new_pcm()
907 chip->analog_pcm = pcm; in snd_echo_new_pcm()
908 strcpy(pcm->name, chip->card->shortname); in snd_echo_new_pcm()
911 if ((err = snd_echo_preallocate_pages(pcm, snd_dma_pci_data(chip->pci))) < 0) in snd_echo_new_pcm()
916 if ((err = snd_pcm_new(chip->card, "Digital PCM", 1, 0, in snd_echo_new_pcm()
917 num_digital_busses_in(chip), &pcm)) < 0) in snd_echo_new_pcm()
919 pcm->private_data = chip; in snd_echo_new_pcm()
920 chip->digital_pcm = pcm; in snd_echo_new_pcm()
921 strcpy(pcm->name, chip->card->shortname); in snd_echo_new_pcm()
923 if ((err = snd_echo_preallocate_pages(pcm, snd_dma_pci_data(chip->pci))) < 0) in snd_echo_new_pcm()
935 if ((err = snd_pcm_new(chip->card, "Analog PCM", 0, in snd_echo_new_pcm()
936 num_analog_busses_out(chip), in snd_echo_new_pcm()
937 num_analog_busses_in(chip), &pcm)) < 0) in snd_echo_new_pcm()
939 pcm->private_data = chip; in snd_echo_new_pcm()
940 chip->analog_pcm = pcm; in snd_echo_new_pcm()
941 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()
949 if ((err = snd_pcm_new(chip->card, "Digital PCM", 1, in snd_echo_new_pcm()
950 num_digital_busses_out(chip), in snd_echo_new_pcm()
951 num_digital_busses_in(chip), &pcm)) < 0) in snd_echo_new_pcm()
953 pcm->private_data = chip; in snd_echo_new_pcm()
954 chip->digital_pcm = pcm; in snd_echo_new_pcm()
955 strcpy(pcm->name, chip->card->shortname); in snd_echo_new_pcm()
958 if ((err = snd_echo_preallocate_pages(pcm, snd_dma_pci_data(chip->pci))) < 0) in snd_echo_new_pcm()
980 struct echoaudio *chip; in snd_echo_output_gain_info() local
982 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_gain_info()
984 uinfo->count = num_busses_out(chip); in snd_echo_output_gain_info()
993 struct echoaudio *chip; in snd_echo_output_gain_get() local
996 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_gain_get()
997 for (c = 0; c < num_busses_out(chip); c++) in snd_echo_output_gain_get()
998 ucontrol->value.integer.value[c] = chip->output_gain[c]; in snd_echo_output_gain_get()
1005 struct echoaudio *chip; in snd_echo_output_gain_put() local
1009 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_gain_put()
1010 spin_lock_irq(&chip->lock); in snd_echo_output_gain_put()
1011 for (c = 0; c < num_busses_out(chip); c++) { in snd_echo_output_gain_put()
1016 if (chip->output_gain[c] != gain) { in snd_echo_output_gain_put()
1017 set_output_gain(chip, c, gain); in snd_echo_output_gain_put()
1022 update_output_line_level(chip); in snd_echo_output_gain_put()
1023 spin_unlock_irq(&chip->lock); in snd_echo_output_gain_put()
1061 struct echoaudio *chip; in snd_echo_input_gain_info() local
1063 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_gain_info()
1065 uinfo->count = num_analog_busses_in(chip); in snd_echo_input_gain_info()
1074 struct echoaudio *chip; in snd_echo_input_gain_get() local
1077 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_gain_get()
1078 for (c = 0; c < num_analog_busses_in(chip); c++) in snd_echo_input_gain_get()
1079 ucontrol->value.integer.value[c] = chip->input_gain[c]; in snd_echo_input_gain_get()
1086 struct echoaudio *chip; in snd_echo_input_gain_put() local
1090 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_gain_put()
1091 spin_lock_irq(&chip->lock); in snd_echo_input_gain_put()
1092 for (c = 0; c < num_analog_busses_in(chip); c++) { in snd_echo_input_gain_put()
1097 if (chip->input_gain[c] != gain) { in snd_echo_input_gain_put()
1098 set_input_gain(chip, c, gain); in snd_echo_input_gain_put()
1103 update_input_line_level(chip); in snd_echo_input_gain_put()
1104 spin_unlock_irq(&chip->lock); in snd_echo_input_gain_put()
1130 struct echoaudio *chip; in snd_echo_output_nominal_info() local
1132 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_nominal_info()
1134 uinfo->count = num_analog_busses_out(chip); in snd_echo_output_nominal_info()
1143 struct echoaudio *chip; in snd_echo_output_nominal_get() local
1146 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_nominal_get()
1147 for (c = 0; c < num_analog_busses_out(chip); c++) in snd_echo_output_nominal_get()
1148 ucontrol->value.integer.value[c] = chip->nominal_level[c]; in snd_echo_output_nominal_get()
1155 struct echoaudio *chip; in snd_echo_output_nominal_put() local
1159 chip = snd_kcontrol_chip(kcontrol); in snd_echo_output_nominal_put()
1160 spin_lock_irq(&chip->lock); in snd_echo_output_nominal_put()
1161 for (c = 0; c < num_analog_busses_out(chip); c++) { in snd_echo_output_nominal_put()
1162 if (chip->nominal_level[c] != ucontrol->value.integer.value[c]) { in snd_echo_output_nominal_put()
1163 set_nominal_level(chip, c, in snd_echo_output_nominal_put()
1169 update_output_line_level(chip); in snd_echo_output_nominal_put()
1170 spin_unlock_irq(&chip->lock); in snd_echo_output_nominal_put()
1192 struct echoaudio *chip; in snd_echo_input_nominal_info() local
1194 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_nominal_info()
1196 uinfo->count = num_analog_busses_in(chip); in snd_echo_input_nominal_info()
1205 struct echoaudio *chip; in snd_echo_input_nominal_get() local
1208 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_nominal_get()
1209 for (c = 0; c < num_analog_busses_in(chip); c++) in snd_echo_input_nominal_get()
1211 chip->nominal_level[bx_analog_in(chip) + c]; in snd_echo_input_nominal_get()
1218 struct echoaudio *chip; in snd_echo_input_nominal_put() local
1222 chip = snd_kcontrol_chip(kcontrol); in snd_echo_input_nominal_put()
1223 spin_lock_irq(&chip->lock); in snd_echo_input_nominal_put()
1224 for (c = 0; c < num_analog_busses_in(chip); c++) { in snd_echo_input_nominal_put()
1225 if (chip->nominal_level[bx_analog_in(chip) + c] != in snd_echo_input_nominal_put()
1227 set_nominal_level(chip, bx_analog_in(chip) + c, in snd_echo_input_nominal_put()
1233 update_output_line_level(chip); /* "Output" is not a mistake in snd_echo_input_nominal_put()
1236 spin_unlock_irq(&chip->lock); in snd_echo_input_nominal_put()
1258 struct echoaudio *chip; in snd_echo_mixer_info() local
1260 chip = snd_kcontrol_chip(kcontrol); in snd_echo_mixer_info()
1265 uinfo->dimen.d[0] = num_busses_out(chip); in snd_echo_mixer_info()
1266 uinfo->dimen.d[1] = num_busses_in(chip); in snd_echo_mixer_info()
1273 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_mixer_get() local
1274 unsigned int out = ucontrol->id.index / num_busses_in(chip); in snd_echo_mixer_get()
1275 unsigned int in = ucontrol->id.index % num_busses_in(chip); in snd_echo_mixer_get()
1280 ucontrol->value.integer.value[0] = chip->monitor_gain[out][in]; in snd_echo_mixer_get()
1287 struct echoaudio *chip; in snd_echo_mixer_put() local
1292 chip = snd_kcontrol_chip(kcontrol); in snd_echo_mixer_put()
1293 out = ucontrol->id.index / num_busses_in(chip); in snd_echo_mixer_put()
1294 in = ucontrol->id.index % num_busses_in(chip); in snd_echo_mixer_put()
1300 if (chip->monitor_gain[out][in] != gain) { in snd_echo_mixer_put()
1301 spin_lock_irq(&chip->lock); in snd_echo_mixer_put()
1302 set_monitor_gain(chip, out, in, gain); in snd_echo_mixer_put()
1303 update_output_line_level(chip); in snd_echo_mixer_put()
1304 spin_unlock_irq(&chip->lock); in snd_echo_mixer_put()
1330 struct echoaudio *chip; in snd_echo_vmixer_info() local
1332 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vmixer_info()
1337 uinfo->dimen.d[0] = num_busses_out(chip); in snd_echo_vmixer_info()
1338 uinfo->dimen.d[1] = num_pipes_out(chip); in snd_echo_vmixer_info()
1345 struct echoaudio *chip; in snd_echo_vmixer_get() local
1347 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vmixer_get()
1349 chip->vmixer_gain[ucontrol->id.index / num_pipes_out(chip)] in snd_echo_vmixer_get()
1350 [ucontrol->id.index % num_pipes_out(chip)]; in snd_echo_vmixer_get()
1357 struct echoaudio *chip; in snd_echo_vmixer_put() local
1362 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vmixer_put()
1363 out = ucontrol->id.index / num_pipes_out(chip); in snd_echo_vmixer_put()
1364 vch = ucontrol->id.index % num_pipes_out(chip); in snd_echo_vmixer_put()
1368 if (chip->vmixer_gain[out][vch] != ucontrol->value.integer.value[0]) { in snd_echo_vmixer_put()
1369 spin_lock_irq(&chip->lock); in snd_echo_vmixer_put()
1370 set_vmixer_gain(chip, out, vch, ucontrol->value.integer.value[0]); in snd_echo_vmixer_put()
1371 update_vmixer_level(chip); in snd_echo_vmixer_put()
1372 spin_unlock_irq(&chip->lock); in snd_echo_vmixer_put()
1402 struct echoaudio *chip; in snd_echo_digital_mode_info() local
1404 chip = snd_kcontrol_chip(kcontrol); in snd_echo_digital_mode_info()
1405 return snd_ctl_enum_info(uinfo, 1, chip->num_digital_modes, names); in snd_echo_digital_mode_info()
1411 struct echoaudio *chip; in snd_echo_digital_mode_get() local
1414 chip = snd_kcontrol_chip(kcontrol); in snd_echo_digital_mode_get()
1415 mode = chip->digital_mode; in snd_echo_digital_mode_get()
1416 for (i = chip->num_digital_modes - 1; i >= 0; i--) in snd_echo_digital_mode_get()
1417 if (mode == chip->digital_mode_list[i]) { in snd_echo_digital_mode_get()
1427 struct echoaudio *chip; in snd_echo_digital_mode_put() local
1432 chip = snd_kcontrol_chip(kcontrol); in snd_echo_digital_mode_put()
1435 if (emode >= chip->num_digital_modes) in snd_echo_digital_mode_put()
1437 dmode = chip->digital_mode_list[emode]; in snd_echo_digital_mode_put()
1439 if (dmode != chip->digital_mode) { in snd_echo_digital_mode_put()
1442 mutex_lock(&chip->mode_mutex); in snd_echo_digital_mode_put()
1447 if (atomic_read(&chip->opencount)) { in snd_echo_digital_mode_put()
1450 changed = set_digital_mode(chip, dmode); in snd_echo_digital_mode_put()
1452 if (changed > 0 && chip->clock_src_ctl) { in snd_echo_digital_mode_put()
1453 snd_ctl_notify(chip->card, in snd_echo_digital_mode_put()
1455 &chip->clock_src_ctl->id); in snd_echo_digital_mode_put()
1456 dev_dbg(chip->card->dev, in snd_echo_digital_mode_put()
1462 mutex_unlock(&chip->mode_mutex); in snd_echo_digital_mode_put()
1493 struct echoaudio *chip; in snd_echo_spdif_mode_get() local
1495 chip = snd_kcontrol_chip(kcontrol); in snd_echo_spdif_mode_get()
1496 ucontrol->value.enumerated.item[0] = !!chip->professional_spdif; in snd_echo_spdif_mode_get()
1503 struct echoaudio *chip; in snd_echo_spdif_mode_put() local
1506 chip = snd_kcontrol_chip(kcontrol); in snd_echo_spdif_mode_put()
1508 if (mode != chip->professional_spdif) { in snd_echo_spdif_mode_put()
1509 spin_lock_irq(&chip->lock); in snd_echo_spdif_mode_put()
1510 set_professional_spdif(chip, mode); in snd_echo_spdif_mode_put()
1511 spin_unlock_irq(&chip->lock); in snd_echo_spdif_mode_put()
1539 struct echoaudio *chip; in snd_echo_clock_source_info() local
1541 chip = snd_kcontrol_chip(kcontrol); in snd_echo_clock_source_info()
1542 return snd_ctl_enum_info(uinfo, 1, chip->num_clock_sources, names); in snd_echo_clock_source_info()
1548 struct echoaudio *chip; in snd_echo_clock_source_get() local
1551 chip = snd_kcontrol_chip(kcontrol); in snd_echo_clock_source_get()
1552 clock = chip->input_clock; in snd_echo_clock_source_get()
1554 for (i = 0; i < chip->num_clock_sources; i++) in snd_echo_clock_source_get()
1555 if (clock == chip->clock_source_list[i]) in snd_echo_clock_source_get()
1564 struct echoaudio *chip; in snd_echo_clock_source_put() local
1569 chip = snd_kcontrol_chip(kcontrol); in snd_echo_clock_source_put()
1571 if (eclock >= chip->input_clock_types) in snd_echo_clock_source_put()
1573 dclock = chip->clock_source_list[eclock]; in snd_echo_clock_source_put()
1574 if (chip->input_clock != dclock) { in snd_echo_clock_source_put()
1575 mutex_lock(&chip->mode_mutex); in snd_echo_clock_source_put()
1576 spin_lock_irq(&chip->lock); in snd_echo_clock_source_put()
1577 if ((changed = set_input_clock(chip, dclock)) == 0) in snd_echo_clock_source_put()
1579 spin_unlock_irq(&chip->lock); in snd_echo_clock_source_put()
1580 mutex_unlock(&chip->mode_mutex); in snd_echo_clock_source_put()
1584 dev_dbg(chip->card->dev, in snd_echo_clock_source_put()
1610 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_phantom_power_get() local
1612 ucontrol->value.integer.value[0] = chip->phantom_power; in snd_echo_phantom_power_get()
1619 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_phantom_power_put() local
1623 if (chip->phantom_power != power) { in snd_echo_phantom_power_put()
1624 spin_lock_irq(&chip->lock); in snd_echo_phantom_power_put()
1625 changed = set_phantom_power(chip, power); in snd_echo_phantom_power_put()
1626 spin_unlock_irq(&chip->lock); in snd_echo_phantom_power_put()
1653 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_automute_get() local
1655 ucontrol->value.integer.value[0] = chip->digital_in_automute; in snd_echo_automute_get()
1662 struct echoaudio *chip = snd_kcontrol_chip(kcontrol); in snd_echo_automute_put() local
1666 if (chip->digital_in_automute != automute) { in snd_echo_automute_put()
1667 spin_lock_irq(&chip->lock); in snd_echo_automute_put()
1668 changed = set_input_auto_mute(chip, automute); in snd_echo_automute_put()
1669 spin_unlock_irq(&chip->lock); in snd_echo_automute_put()
1694 struct echoaudio *chip; in snd_echo_vumeters_switch_put() local
1696 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vumeters_switch_put()
1697 spin_lock_irq(&chip->lock); in snd_echo_vumeters_switch_put()
1698 set_meters_on(chip, ucontrol->value.integer.value[0]); in snd_echo_vumeters_switch_put()
1699 spin_unlock_irq(&chip->lock); in snd_echo_vumeters_switch_put()
1734 struct echoaudio *chip; in snd_echo_vumeters_get() local
1736 chip = snd_kcontrol_chip(kcontrol); in snd_echo_vumeters_get()
1737 get_audio_meters(chip, ucontrol->value.integer.value); in snd_echo_vumeters_get()
1768 struct echoaudio *chip; in snd_echo_channels_info_get() local
1771 chip = snd_kcontrol_chip(kcontrol); in snd_echo_channels_info_get()
1772 ucontrol->value.integer.value[0] = num_busses_in(chip); in snd_echo_channels_info_get()
1773 ucontrol->value.integer.value[1] = num_analog_busses_in(chip); in snd_echo_channels_info_get()
1774 ucontrol->value.integer.value[2] = num_busses_out(chip); in snd_echo_channels_info_get()
1775 ucontrol->value.integer.value[3] = num_analog_busses_out(chip); in snd_echo_channels_info_get()
1776 ucontrol->value.integer.value[4] = num_pipes_out(chip); in snd_echo_channels_info_get()
1779 detected = detect_input_clocks(chip); in snd_echo_channels_info_get()
1781 src = chip->num_clock_sources - 1; in snd_echo_channels_info_get()
1785 if (bit == chip->clock_source_list[src]) { in snd_echo_channels_info_get()
1811 struct echoaudio *chip = dev_id; in snd_echo_interrupt() local
1815 spin_lock(&chip->lock); in snd_echo_interrupt()
1816 st = service_irq(chip); in snd_echo_interrupt()
1818 spin_unlock(&chip->lock); in snd_echo_interrupt()
1824 substream = chip->substream[ss]; in snd_echo_interrupt()
1829 if (period != chip->last_period[ss]) { in snd_echo_interrupt()
1830 chip->last_period[ss] = period; in snd_echo_interrupt()
1831 spin_unlock(&chip->lock); in snd_echo_interrupt()
1833 spin_lock(&chip->lock); in snd_echo_interrupt()
1837 spin_unlock(&chip->lock); in snd_echo_interrupt()
1840 if (st > 0 && chip->midi_in) { in snd_echo_interrupt()
1841 snd_rawmidi_receive(chip->midi_in, chip->midi_buffer, st); in snd_echo_interrupt()
1842 dev_dbg(chip->card->dev, "rawmidi_iread=%d\n", st); in snd_echo_interrupt()
1855 static int snd_echo_free(struct echoaudio *chip) in snd_echo_free() argument
1857 if (chip->comm_page) in snd_echo_free()
1858 rest_in_peace(chip); in snd_echo_free()
1860 if (chip->irq >= 0) in snd_echo_free()
1861 free_irq(chip->irq, chip); in snd_echo_free()
1863 if (chip->comm_page) in snd_echo_free()
1864 snd_dma_free_pages(&chip->commpage_dma_buf); in snd_echo_free()
1866 iounmap(chip->dsp_registers); in snd_echo_free()
1867 release_and_free_resource(chip->iores); in snd_echo_free()
1868 pci_disable_device(chip->pci); in snd_echo_free()
1871 free_firmware_cache(chip); in snd_echo_free()
1872 kfree(chip); in snd_echo_free()
1880 struct echoaudio *chip = device->device_data; in snd_echo_dev_free() local
1882 return snd_echo_free(chip); in snd_echo_dev_free()
1892 struct echoaudio *chip; in snd_echo_create() local
1909 chip = kzalloc(sizeof(*chip), GFP_KERNEL); in snd_echo_create()
1910 if (!chip) { in snd_echo_create()
1914 dev_dbg(card->dev, "chip=%p\n", chip); in snd_echo_create()
1915 spin_lock_init(&chip->lock); in snd_echo_create()
1916 chip->card = card; in snd_echo_create()
1917 chip->pci = pci; in snd_echo_create()
1918 chip->irq = -1; in snd_echo_create()
1919 atomic_set(&chip->opencount, 0); in snd_echo_create()
1920 mutex_init(&chip->mode_mutex); in snd_echo_create()
1921 chip->can_set_rate = 1; in snd_echo_create()
1926 chip = *rchip; in snd_echo_create()
1930 chip->dsp_registers_phys = pci_resource_start(pci, 0); in snd_echo_create()
1935 if ((chip->iores = request_mem_region(chip->dsp_registers_phys, sz, in snd_echo_create()
1937 dev_err(chip->card->dev, "cannot get memory region\n"); in snd_echo_create()
1938 snd_echo_free(chip); in snd_echo_create()
1941 chip->dsp_registers = (volatile u32 __iomem *) in snd_echo_create()
1942 ioremap_nocache(chip->dsp_registers_phys, sz); in snd_echo_create()
1943 if (!chip->dsp_registers) { in snd_echo_create()
1944 dev_err(chip->card->dev, "ioremap failed\n"); in snd_echo_create()
1945 snd_echo_free(chip); in snd_echo_create()
1950 KBUILD_MODNAME, chip)) { in snd_echo_create()
1951 dev_err(chip->card->dev, "cannot grab irq\n"); in snd_echo_create()
1952 snd_echo_free(chip); in snd_echo_create()
1955 chip->irq = pci->irq; in snd_echo_create()
1957 chip->pci, chip->irq, chip->pci->subsystem_device); in snd_echo_create()
1961 if (snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, snd_dma_pci_data(chip->pci), in snd_echo_create()
1963 &chip->commpage_dma_buf) < 0) { in snd_echo_create()
1964 dev_err(chip->card->dev, "cannot allocate the comm page\n"); in snd_echo_create()
1965 snd_echo_free(chip); in snd_echo_create()
1968 chip->comm_page_phys = chip->commpage_dma_buf.addr; in snd_echo_create()
1969 chip->comm_page = (struct comm_page *)chip->commpage_dma_buf.area; in snd_echo_create()
1971 err = init_hw(chip, chip->pci->device, chip->pci->subsystem_device); in snd_echo_create()
1973 err = set_mixer_defaults(chip); in snd_echo_create()
1976 snd_echo_free(chip); in snd_echo_create()
1980 if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) { in snd_echo_create()
1981 snd_echo_free(chip); in snd_echo_create()
1984 *rchip = chip; in snd_echo_create()
1997 struct echoaudio *chip; in snd_echo_probe() local
2014 chip = NULL; /* Tells snd_echo_create to allocate chip */ in snd_echo_probe()
2015 if ((err = snd_echo_create(card, pci, &chip)) < 0) { in snd_echo_probe()
2021 strcpy(card->shortname, chip->card_name); in snd_echo_probe()
2029 chip->dsp_registers_phys, chip->irq); in snd_echo_probe()
2031 if ((err = snd_echo_new_pcm(chip)) < 0) { in snd_echo_probe()
2032 dev_err(chip->card->dev, "new pcm error %d\n", err); in snd_echo_probe()
2038 if (chip->has_midi) { /* Some Mia's do not have midi */ in snd_echo_probe()
2039 if ((err = snd_echo_midi_create(card, chip)) < 0) { in snd_echo_probe()
2040 dev_err(chip->card->dev, "new midi error %d\n", err); in snd_echo_probe()
2048 snd_echo_vmixer.count = num_pipes_out(chip) * num_busses_out(chip); in snd_echo_probe()
2049 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_vmixer, chip))) < 0) in snd_echo_probe()
2052 err = snd_ctl_add(chip->card, in snd_echo_probe()
2053 snd_ctl_new1(&snd_echo_line_output_gain, chip)); in snd_echo_probe()
2058 err = snd_ctl_add(chip->card, in snd_echo_probe()
2059 snd_ctl_new1(&snd_echo_pcm_output_gain, chip)); in snd_echo_probe()
2065 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_line_input_gain, chip))) < 0) in snd_echo_probe()
2070 if (!chip->hasnt_input_nominal_level) in snd_echo_probe()
2071 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_intput_nominal_level, chip))) < 0) in snd_echo_probe()
2076 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_output_nominal_level, chip))) < 0) in snd_echo_probe()
2080 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_vumeters_switch, chip))) < 0) in snd_echo_probe()
2083 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_vumeters, chip))) < 0) in snd_echo_probe()
2087 snd_echo_monitor_mixer.count = num_busses_in(chip) * num_busses_out(chip); in snd_echo_probe()
2088 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_monitor_mixer, chip))) < 0) in snd_echo_probe()
2093 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_automute_switch, chip))) < 0) in snd_echo_probe()
2097 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_channels_info, chip))) < 0) in snd_echo_probe()
2102 chip->num_digital_modes = 0; in snd_echo_probe()
2104 if (chip->digital_modes & (1 << i)) in snd_echo_probe()
2105 chip->digital_mode_list[chip->num_digital_modes++] = i; in snd_echo_probe()
2107 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_digital_mode_switch, chip))) < 0) in snd_echo_probe()
2113 chip->num_clock_sources = 0; in snd_echo_probe()
2115 if (chip->input_clock_types & (1 << i)) in snd_echo_probe()
2116 chip->clock_source_list[chip->num_clock_sources++] = i; in snd_echo_probe()
2118 if (chip->num_clock_sources > 1) { in snd_echo_probe()
2119 chip->clock_src_ctl = snd_ctl_new1(&snd_echo_clock_source_switch, chip); in snd_echo_probe()
2120 if ((err = snd_ctl_add(chip->card, chip->clock_src_ctl)) < 0) in snd_echo_probe()
2126 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_spdif_mode_switch, chip))) < 0) in snd_echo_probe()
2131 if (chip->has_phantom_power) in snd_echo_probe()
2132 if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_phantom_power_switch, chip))) < 0) in snd_echo_probe()
2141 pci_set_drvdata(pci, chip); in snd_echo_probe()
2157 struct echoaudio *chip = dev_get_drvdata(dev); in snd_echo_suspend() local
2161 if (chip->midi_out) in snd_echo_suspend()
2162 snd_echo_midi_output_trigger(chip->midi_out, 0); in snd_echo_suspend()
2164 spin_lock_irq(&chip->lock); in snd_echo_suspend()
2165 if (wait_handshake(chip)) { in snd_echo_suspend()
2166 spin_unlock_irq(&chip->lock); in snd_echo_suspend()
2169 clear_handshake(chip); in snd_echo_suspend()
2170 if (send_vector(chip, DSP_VC_GO_COMATOSE) < 0) { in snd_echo_suspend()
2171 spin_unlock_irq(&chip->lock); in snd_echo_suspend()
2174 spin_unlock_irq(&chip->lock); in snd_echo_suspend()
2176 chip->dsp_code = NULL; in snd_echo_suspend()
2177 free_irq(chip->irq, chip); in snd_echo_suspend()
2178 chip->irq = -1; in snd_echo_suspend()
2187 struct echoaudio *chip = dev_get_drvdata(dev); in snd_echo_resume() local
2192 commpage = chip->comm_page; in snd_echo_resume()
2197 err = init_hw(chip, chip->pci->device, chip->pci->subsystem_device); in snd_echo_resume()
2207 pipe_alloc_mask = chip->pipe_alloc_mask; in snd_echo_resume()
2208 chip->pipe_alloc_mask = 0; in snd_echo_resume()
2209 err = restore_dsp_rettings(chip); in snd_echo_resume()
2210 chip->pipe_alloc_mask = pipe_alloc_mask; in snd_echo_resume()
2225 KBUILD_MODNAME, chip)) { in snd_echo_resume()
2226 dev_err(chip->card->dev, "cannot grab irq\n"); in snd_echo_resume()
2229 chip->irq = pci->irq; in snd_echo_resume()
2230 dev_dbg(dev, "resume irq=%d\n", chip->irq); in snd_echo_resume()
2233 if (chip->midi_input_enabled) in snd_echo_resume()
2234 enable_midi_input(chip, true); in snd_echo_resume()
2235 if (chip->midi_out) in snd_echo_resume()
2236 snd_echo_midi_output_trigger(chip->midi_out, 1); in snd_echo_resume()
2251 struct echoaudio *chip; in snd_echo_remove() local
2253 chip = pci_get_drvdata(pci); in snd_echo_remove()
2254 if (chip) in snd_echo_remove()
2255 snd_card_free(chip->card); in snd_echo_remove()