Lines Matching refs:chip

32 			struct echoaudio *chip, const short fw_index)
38 if (chip->fw_cache[fw_index]) {
39 dev_dbg(chip->card->dev,
42 *fw_entry = chip->fw_cache[fw_index];
47 dev_dbg(chip->card->dev,
50 err = request_firmware(fw_entry, name, &chip->pci->dev);
52 dev_err(chip->card->dev,
56 chip->fw_cache[fw_index] = *fw_entry;
64 struct echoaudio *chip)
67 dev_dbg(chip->card->dev, "firmware not released (kept in cache)\n");
75 static void free_firmware_cache(struct echoaudio *chip)
81 if (chip->fw_cache[i]) {
82 release_firmware(chip->fw_cache[i]);
83 dev_dbg(chip->card->dev, "release_firmware(%d)\n", i);
246 struct echoaudio *chip = rule->private;
250 mutex_lock(&chip->mode_mutex);
252 if (chip->can_set_rate) {
256 fixed.min = fixed.max = chip->sample_rate;
260 mutex_unlock(&chip->mode_mutex);
268 struct echoaudio *chip;
276 chip = snd_pcm_substream_chip(substream);
286 dev_dbg(chip->card->dev, "max_channels=%d\n", max_channels);
293 if (chip->digital_mode == DIGITAL_MODE_ADAT) {
330 hw_rule_sample_rate, chip,
337 &chip->pci->dev,
340 dev_err(chip->card->dev, "s-g list allocation failed\n");
348 dev_dbg(chip->card->dev, "pcm_open opencount=%d can_set_rate=%d, rate_set=%d",
349 chip->opencount, chip->can_set_rate, chip->rate_set);
351 chip->opencount++;
352 if (chip->opencount > 1 && chip->rate_set)
353 chip->can_set_rate = 0;
362 struct echoaudio *chip = snd_pcm_substream_chip(substream);
366 num_analog_busses_in(chip) - substream->number);
389 struct echoaudio *chip = snd_pcm_substream_chip(substream);
393 max_channels = num_pipes_out(chip);
395 max_channels = num_analog_busses_out(chip);
424 struct echoaudio *chip = snd_pcm_substream_chip(substream);
427 max_channels = num_digital_busses_in(chip) - substream->number;
428 mutex_lock(&chip->mode_mutex);
429 if (chip->digital_mode == DIGITAL_MODE_ADAT)
453 mutex_unlock(&chip->mode_mutex);
463 struct echoaudio *chip = snd_pcm_substream_chip(substream);
466 max_channels = num_digital_busses_out(chip) - substream->number;
467 mutex_lock(&chip->mode_mutex);
468 if (chip->digital_mode == DIGITAL_MODE_ADAT)
494 mutex_unlock(&chip->mode_mutex);
506 struct echoaudio *chip = snd_pcm_substream_chip(substream);
512 mutex_lock(&chip->mode_mutex);
514 dev_dbg(chip->card->dev, "pcm_open opencount=%d can_set_rate=%d, rate_set=%d",
515 chip->opencount, chip->can_set_rate, chip->rate_set);
517 chip->opencount--;
519 switch (chip->opencount) {
521 chip->can_set_rate = 1;
525 chip->rate_set = 0;
529 mutex_unlock(&chip->mode_mutex);
540 struct echoaudio *chip;
544 chip = snd_pcm_substream_chip(substream);
550 spin_lock_irq(&chip->lock);
552 dev_dbg(chip->card->dev, "hwp_ie free(%d)\n", pipe->index);
553 err = free_pipes(chip, pipe);
555 chip->substream[pipe->index] = NULL;
558 err = allocate_pipes(chip, pipe, pipe_index, interleave);
560 spin_unlock_irq(&chip->lock);
561 dev_err(chip->card->dev, "allocate_pipes(%d) err=%d\n",
565 spin_unlock_irq(&chip->lock);
566 dev_dbg(chip->card->dev, "allocate_pipes()=%d\n", pipe_index);
568 dev_dbg(chip->card->dev,
573 sglist_init(chip, pipe);
584 sglist_add_mapping(chip, pipe, addr, rest);
585 sglist_add_irq(chip, pipe);
589 sglist_add_mapping(chip, pipe, addr,
602 sglist_wrap(chip, pipe);
605 * initialized before chip->substream
611 chip->substream[pipe_index] = substream;
612 chip->rate_set = 1;
613 spin_lock_irq(&chip->lock);
614 set_sample_rate(chip, hw_params->rate_num / hw_params->rate_den);
615 spin_unlock_irq(&chip->lock);
624 struct echoaudio *chip = snd_pcm_substream_chip(substream);
626 return init_engine(substream, hw_params, px_analog_in(chip) +
646 struct echoaudio *chip = snd_pcm_substream_chip(substream);
648 return init_engine(substream, hw_params, px_digital_in(chip) +
658 struct echoaudio *chip = snd_pcm_substream_chip(substream);
660 return init_engine(substream, hw_params, px_digital_out(chip) +
671 struct echoaudio *chip;
674 chip = snd_pcm_substream_chip(substream);
677 spin_lock_irq(&chip->lock);
679 dev_dbg(chip->card->dev, "pcm_hw_free(%d)\n", pipe->index);
680 free_pipes(chip, pipe);
681 chip->substream[pipe->index] = NULL;
684 spin_unlock_irq(&chip->lock);
693 struct echoaudio *chip = snd_pcm_substream_chip(substream);
698 dev_dbg(chip->card->dev, "Prepare rate=%d format=%d channels=%d\n",
720 dev_err(chip->card->dev,
726 if (snd_BUG_ON(pipe_index >= px_num(chip)))
734 spin_lock_irq(&chip->lock);
736 if (snd_BUG_ON(!is_pipe_allocated(chip, pipe_index))) {
737 spin_unlock_irq(&chip->lock);
741 set_audio_format(chip, pipe_index, &format);
742 spin_unlock_irq(&chip->lock);
751 struct echoaudio *chip = snd_pcm_substream_chip(substream);
759 if (s == chip->substream[i]) {
766 spin_lock(&chip->lock);
773 pipe = chip->substream[i]->runtime->private_data;
789 err = start_transport(chip, channelmask,
790 chip->pipe_cyclic_mask);
796 pipe = chip->substream[i]->runtime->private_data;
800 err = stop_transport(chip, channelmask);
805 pipe = chip->substream[i]->runtime->private_data;
809 err = pause_transport(chip, channelmask);
814 spin_unlock(&chip->lock);
911 static int snd_echo_new_pcm(struct echoaudio *chip)
924 err = snd_pcm_new(chip->card, "PCM", 0, num_pipes_out(chip),
925 num_analog_busses_in(chip), &pcm);
928 pcm->private_data = chip;
929 chip->analog_pcm = pcm;
930 strcpy(pcm->name, chip->card->shortname);
933 snd_echo_preallocate_pages(pcm, &chip->pci->dev);
937 err = snd_pcm_new(chip->card, "Digital PCM", 1, 0,
938 num_digital_busses_in(chip), &pcm);
941 pcm->private_data = chip;
942 chip->digital_pcm = pcm;
943 strcpy(pcm->name, chip->card->shortname);
945 snd_echo_preallocate_pages(pcm, &chip->pci->dev);
956 err = snd_pcm_new(chip->card, "Analog PCM", 0,
957 num_analog_busses_out(chip),
958 num_analog_busses_in(chip), &pcm);
961 pcm->private_data = chip;
962 chip->analog_pcm = pcm;
963 strcpy(pcm->name, chip->card->shortname);
966 snd_echo_preallocate_pages(pcm, &chip->pci->dev);
970 err = snd_pcm_new(chip->card, "Digital PCM", 1,
971 num_digital_busses_out(chip),
972 num_digital_busses_in(chip), &pcm);
975 pcm->private_data = chip;
976 chip->digital_pcm = pcm;
977 strcpy(pcm->name, chip->card->shortname);
980 snd_echo_preallocate_pages(pcm, &chip->pci->dev);
1001 struct echoaudio *chip;
1003 chip = snd_kcontrol_chip(kcontrol);
1005 uinfo->count = num_busses_out(chip);
1014 struct echoaudio *chip;
1017 chip = snd_kcontrol_chip(kcontrol);
1018 for (c = 0; c < num_busses_out(chip); c++)
1019 ucontrol->value.integer.value[c] = chip->output_gain[c];
1026 struct echoaudio *chip;
1030 chip = snd_kcontrol_chip(kcontrol);
1031 spin_lock_irq(&chip->lock);
1032 for (c = 0; c < num_busses_out(chip); c++) {
1037 if (chip->output_gain[c] != gain) {
1038 set_output_gain(chip, c, gain);
1043 update_output_line_level(chip);
1044 spin_unlock_irq(&chip->lock);
1082 struct echoaudio *chip;
1084 chip = snd_kcontrol_chip(kcontrol);
1086 uinfo->count = num_analog_busses_in(chip);
1095 struct echoaudio *chip;
1098 chip = snd_kcontrol_chip(kcontrol);
1099 for (c = 0; c < num_analog_busses_in(chip); c++)
1100 ucontrol->value.integer.value[c] = chip->input_gain[c];
1107 struct echoaudio *chip;
1111 chip = snd_kcontrol_chip(kcontrol);
1112 spin_lock_irq(&chip->lock);
1113 for (c = 0; c < num_analog_busses_in(chip); c++) {
1118 if (chip->input_gain[c] != gain) {
1119 set_input_gain(chip, c, gain);
1124 update_input_line_level(chip);
1125 spin_unlock_irq(&chip->lock);
1151 struct echoaudio *chip;
1153 chip = snd_kcontrol_chip(kcontrol);
1155 uinfo->count = num_analog_busses_out(chip);
1164 struct echoaudio *chip;
1167 chip = snd_kcontrol_chip(kcontrol);
1168 for (c = 0; c < num_analog_busses_out(chip); c++)
1169 ucontrol->value.integer.value[c] = chip->nominal_level[c];
1176 struct echoaudio *chip;
1180 chip = snd_kcontrol_chip(kcontrol);
1181 spin_lock_irq(&chip->lock);
1182 for (c = 0; c < num_analog_busses_out(chip); c++) {
1183 if (chip->nominal_level[c] != ucontrol->value.integer.value[c]) {
1184 set_nominal_level(chip, c,
1190 update_output_line_level(chip);
1191 spin_unlock_irq(&chip->lock);
1213 struct echoaudio *chip;
1215 chip = snd_kcontrol_chip(kcontrol);
1217 uinfo->count = num_analog_busses_in(chip);
1226 struct echoaudio *chip;
1229 chip = snd_kcontrol_chip(kcontrol);
1230 for (c = 0; c < num_analog_busses_in(chip); c++)
1232 chip->nominal_level[bx_analog_in(chip) + c];
1239 struct echoaudio *chip;
1243 chip = snd_kcontrol_chip(kcontrol);
1244 spin_lock_irq(&chip->lock);
1245 for (c = 0; c < num_analog_busses_in(chip); c++) {
1246 if (chip->nominal_level[bx_analog_in(chip) + c] !=
1248 set_nominal_level(chip, bx_analog_in(chip) + c,
1254 update_output_line_level(chip); /* "Output" is not a mistake
1257 spin_unlock_irq(&chip->lock);
1289 struct echoaudio *chip = snd_kcontrol_chip(kcontrol);
1290 unsigned int out = ucontrol->id.index / num_busses_in(chip);
1291 unsigned int in = ucontrol->id.index % num_busses_in(chip);
1296 ucontrol->value.integer.value[0] = chip->monitor_gain[out][in];
1303 struct echoaudio *chip;
1308 chip = snd_kcontrol_chip(kcontrol);
1309 out = ucontrol->id.index / num_busses_in(chip);
1310 in = ucontrol->id.index % num_busses_in(chip);
1316 if (chip->monitor_gain[out][in] != gain) {
1317 spin_lock_irq(&chip->lock);
1318 set_monitor_gain(chip, out, in, gain);
1319 update_output_line_level(chip);
1320 spin_unlock_irq(&chip->lock);
1356 struct echoaudio *chip;
1358 chip = snd_kcontrol_chip(kcontrol);
1360 chip->vmixer_gain[ucontrol->id.index / num_pipes_out(chip)]
1361 [ucontrol->id.index % num_pipes_out(chip)];
1368 struct echoaudio *chip;
1373 chip = snd_kcontrol_chip(kcontrol);
1374 out = ucontrol->id.index / num_pipes_out(chip);
1375 vch = ucontrol->id.index % num_pipes_out(chip);
1379 if (chip->vmixer_gain[out][vch] != ucontrol->value.integer.value[0]) {
1380 spin_lock_irq(&chip->lock);
1381 set_vmixer_gain(chip, out, vch, ucontrol->value.integer.value[0]);
1382 update_vmixer_level(chip);
1383 spin_unlock_irq(&chip->lock);
1413 struct echoaudio *chip;
1415 chip = snd_kcontrol_chip(kcontrol);
1416 return snd_ctl_enum_info(uinfo, 1, chip->num_digital_modes, names);
1422 struct echoaudio *chip;
1425 chip = snd_kcontrol_chip(kcontrol);
1426 mode = chip->digital_mode;
1427 for (i = chip->num_digital_modes - 1; i >= 0; i--)
1428 if (mode == chip->digital_mode_list[i]) {
1438 struct echoaudio *chip;
1443 chip = snd_kcontrol_chip(kcontrol);
1446 if (emode >= chip->num_digital_modes)
1448 dmode = chip->digital_mode_list[emode];
1450 if (dmode != chip->digital_mode) {
1453 mutex_lock(&chip->mode_mutex);
1458 if (chip->opencount) {
1461 changed = set_digital_mode(chip, dmode);
1463 if (changed > 0 && chip->clock_src_ctl) {
1464 snd_ctl_notify(chip->card,
1466 &chip->clock_src_ctl->id);
1467 dev_dbg(chip->card->dev,
1473 mutex_unlock(&chip->mode_mutex);
1504 struct echoaudio *chip;
1506 chip = snd_kcontrol_chip(kcontrol);
1507 ucontrol->value.enumerated.item[0] = !!chip->professional_spdif;
1514 struct echoaudio *chip;
1517 chip = snd_kcontrol_chip(kcontrol);
1519 if (mode != chip->professional_spdif) {
1520 spin_lock_irq(&chip->lock);
1521 set_professional_spdif(chip, mode);
1522 spin_unlock_irq(&chip->lock);
1550 struct echoaudio *chip;
1552 chip = snd_kcontrol_chip(kcontrol);
1553 return snd_ctl_enum_info(uinfo, 1, chip->num_clock_sources, names);
1559 struct echoaudio *chip;
1562 chip = snd_kcontrol_chip(kcontrol);
1563 clock = chip->input_clock;
1565 for (i = 0; i < chip->num_clock_sources; i++)
1566 if (clock == chip->clock_source_list[i])
1575 struct echoaudio *chip;
1580 chip = snd_kcontrol_chip(kcontrol);
1582 if (eclock >= chip->input_clock_types)
1584 dclock = chip->clock_source_list[eclock];
1585 if (chip->input_clock != dclock) {
1586 mutex_lock(&chip->mode_mutex);
1587 spin_lock_irq(&chip->lock);
1588 changed = set_input_clock(chip, dclock);
1591 spin_unlock_irq(&chip->lock);
1592 mutex_unlock(&chip->mode_mutex);
1596 dev_dbg(chip->card->dev,
1622 struct echoaudio *chip = snd_kcontrol_chip(kcontrol);
1624 ucontrol->value.integer.value[0] = chip->phantom_power;
1631 struct echoaudio *chip = snd_kcontrol_chip(kcontrol);
1635 if (chip->phantom_power != power) {
1636 spin_lock_irq(&chip->lock);
1637 changed = set_phantom_power(chip, power);
1638 spin_unlock_irq(&chip->lock);
1665 struct echoaudio *chip = snd_kcontrol_chip(kcontrol);
1667 ucontrol->value.integer.value[0] = chip->digital_in_automute;
1674 struct echoaudio *chip = snd_kcontrol_chip(kcontrol);
1678 if (chip->digital_in_automute != automute) {
1679 spin_lock_irq(&chip->lock);
1680 changed = set_input_auto_mute(chip, automute);
1681 spin_unlock_irq(&chip->lock);
1706 struct echoaudio *chip;
1708 chip = snd_kcontrol_chip(kcontrol);
1709 spin_lock_irq(&chip->lock);
1710 set_meters_on(chip, ucontrol->value.integer.value[0]);
1711 spin_unlock_irq(&chip->lock);
1739 struct echoaudio *chip;
1741 chip = snd_kcontrol_chip(kcontrol);
1742 get_audio_meters(chip, ucontrol->value.integer.value);
1773 struct echoaudio *chip;
1776 chip = snd_kcontrol_chip(kcontrol);
1777 ucontrol->value.integer.value[0] = num_busses_in(chip);
1778 ucontrol->value.integer.value[1] = num_analog_busses_in(chip);
1779 ucontrol->value.integer.value[2] = num_busses_out(chip);
1780 ucontrol->value.integer.value[3] = num_analog_busses_out(chip);
1781 ucontrol->value.integer.value[4] = num_pipes_out(chip);
1784 detected = detect_input_clocks(chip);
1786 src = chip->num_clock_sources - 1;
1790 if (bit == chip->clock_source_list[src]) {
1846 struct echoaudio *chip = dev_id;
1849 spin_lock(&chip->lock);
1850 st = service_irq(chip);
1852 spin_unlock(&chip->lock);
1860 substream = chip->substream[ss];
1862 spin_unlock(&chip->lock);
1864 spin_lock(&chip->lock);
1867 spin_unlock(&chip->lock);
1870 if (st > 0 && chip->midi_in) {
1871 snd_rawmidi_receive(chip->midi_in, chip->midi_buffer, st);
1872 dev_dbg(chip->card->dev, "rawmidi_iread=%d\n", st);
1887 struct echoaudio *chip = card->private_data;
1889 if (chip->comm_page)
1890 rest_in_peace(chip);
1892 if (chip->irq >= 0)
1893 free_irq(chip->irq, chip);
1895 /* release chip data */
1896 free_firmware_cache(chip);
1903 struct echoaudio *chip = card->private_data;
1914 /* Allocate chip if needed */
1915 spin_lock_init(&chip->lock);
1916 chip->card = card;
1917 chip->pci = pci;
1918 chip->irq = -1;
1919 chip->opencount = 0;
1920 mutex_init(&chip->mode_mutex);
1921 chip->can_set_rate = 1;
1928 chip->dsp_registers_phys = pci_resource_start(pci, 0);
1933 chip->dsp_registers = devm_ioremap(&pci->dev, chip->dsp_registers_phys, sz);
1934 if (!chip->dsp_registers) {
1935 dev_err(chip->card->dev, "ioremap failed\n");
1940 KBUILD_MODNAME, chip)) {
1941 dev_err(chip->card->dev, "cannot grab irq\n");
1944 chip->irq = pci->irq;
1945 card->sync_irq = chip->irq;
1947 chip->pci, chip->irq, chip->pci->subsystem_device);
1953 chip->commpage_dma_buf =
1956 if (!chip->commpage_dma_buf)
1958 chip->comm_page_phys = chip->commpage_dma_buf->addr;
1959 chip->comm_page = (struct comm_page *)chip->commpage_dma_buf->area;
1961 err = init_hw(chip, chip->pci->device, chip->pci->subsystem_device);
1963 err = set_mixer_defaults(chip);
1978 struct echoaudio *chip;
1992 sizeof(*chip), &card);
1995 chip = card->private_data;
2002 strcpy(card->shortname, chip->card_name);
2010 chip->dsp_registers_phys, chip->irq);
2012 err = snd_echo_new_pcm(chip);
2014 dev_err(chip->card->dev, "new pcm error %d\n", err);
2019 if (chip->has_midi) { /* Some Mia's do not have midi */
2020 err = snd_echo_midi_create(card, chip);
2022 dev_err(chip->card->dev, "new midi error %d\n", err);
2029 snd_echo_vmixer.count = num_pipes_out(chip) * num_busses_out(chip);
2030 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_vmixer, chip));
2034 err = snd_ctl_add(chip->card,
2035 snd_ctl_new1(&snd_echo_line_output_gain, chip));
2040 err = snd_ctl_add(chip->card,
2041 snd_ctl_new1(&snd_echo_pcm_output_gain, chip));
2047 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_line_input_gain, chip));
2053 if (!chip->hasnt_input_nominal_level) {
2054 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_intput_nominal_level, chip));
2061 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_output_nominal_level, chip));
2066 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_vumeters_switch, chip));
2070 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_vumeters, chip));
2075 snd_echo_monitor_mixer.count = num_busses_in(chip) * num_busses_out(chip);
2076 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_monitor_mixer, chip));
2082 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_automute_switch, chip));
2087 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_channels_info, chip));
2093 chip->num_digital_modes = 0;
2095 if (chip->digital_modes & (1 << i))
2096 chip->digital_mode_list[chip->num_digital_modes++] = i;
2098 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_digital_mode_switch, chip));
2105 chip->num_clock_sources = 0;
2107 if (chip->input_clock_types & (1 << i))
2108 chip->clock_source_list[chip->num_clock_sources++] = i;
2110 if (chip->num_clock_sources > 1) {
2111 chip->clock_src_ctl = snd_ctl_new1(&snd_echo_clock_source_switch, chip);
2112 err = snd_ctl_add(chip->card, chip->clock_src_ctl);
2119 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_spdif_mode_switch, chip));
2125 if (chip->has_phantom_power) {
2126 err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_phantom_power_switch, chip));
2137 pci_set_drvdata(pci, chip);
2153 struct echoaudio *chip = dev_get_drvdata(dev);
2157 if (chip->midi_out)
2158 snd_echo_midi_output_trigger(chip->midi_out, 0);
2160 spin_lock_irq(&chip->lock);
2161 if (wait_handshake(chip)) {
2162 spin_unlock_irq(&chip->lock);
2165 clear_handshake(chip);
2166 if (send_vector(chip, DSP_VC_GO_COMATOSE) < 0) {
2167 spin_unlock_irq(&chip->lock);
2170 spin_unlock_irq(&chip->lock);
2172 chip->dsp_code = NULL;
2173 free_irq(chip->irq, chip);
2174 chip->irq = -1;
2175 chip->card->sync_irq = -1;
2184 struct echoaudio *chip = dev_get_drvdata(dev);
2189 commpage = chip->comm_page;
2194 err = init_hw(chip, chip->pci->device, chip->pci->subsystem_device);
2201 /* Temporarily set chip->pipe_alloc_mask=0 otherwise
2204 pipe_alloc_mask = chip->pipe_alloc_mask;
2205 chip->pipe_alloc_mask = 0;
2206 err = restore_dsp_rettings(chip);
2207 chip->pipe_alloc_mask = pipe_alloc_mask;
2222 KBUILD_MODNAME, chip)) {
2223 dev_err(chip->card->dev, "cannot grab irq\n");
2226 chip->irq = pci->irq;
2227 chip->card->sync_irq = chip->irq;
2228 dev_dbg(dev, "resume irq=%d\n", chip->irq);
2231 if (chip->midi_input_enabled)
2232 enable_midi_input(chip, true);
2233 if (chip->midi_out)
2234 snd_echo_midi_output_trigger(chip->midi_out, 1);