Lines Matching refs:chip

52 static int pcxhr_update_analog_audio_level(struct snd_pcxhr *chip,  in pcxhr_update_analog_audio_level()  argument
61 rmh.cmd[2] = chip->analog_capture_volume[channel]; in pcxhr_update_analog_audio_level()
64 if (chip->analog_playback_active[channel]) in pcxhr_update_analog_audio_level()
65 vol = chip->analog_playback_volume[channel]; in pcxhr_update_analog_audio_level()
71 rmh.cmd[1] = 1 << ((2 * chip->chip_idx) + channel); /* audio mask */ in pcxhr_update_analog_audio_level()
73 err = pcxhr_send_msg(chip->mgr, &rmh); in pcxhr_update_analog_audio_level()
75 dev_dbg(chip->card->dev, in pcxhr_update_analog_audio_level()
78 chip->chip_idx, is_capture, err); in pcxhr_update_analog_audio_level()
90 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_analog_vol_info() local
95 if (chip->mgr->is_hr_stereo) { in pcxhr_analog_vol_info()
107 if (chip->mgr->is_hr_stereo) { in pcxhr_analog_vol_info()
125 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_analog_vol_get() local
126 mutex_lock(&chip->mgr->mixer_mutex); in pcxhr_analog_vol_get()
128 ucontrol->value.integer.value[0] = chip->analog_playback_volume[0]; in pcxhr_analog_vol_get()
129 ucontrol->value.integer.value[1] = chip->analog_playback_volume[1]; in pcxhr_analog_vol_get()
131 ucontrol->value.integer.value[0] = chip->analog_capture_volume[0]; in pcxhr_analog_vol_get()
132 ucontrol->value.integer.value[1] = chip->analog_capture_volume[1]; in pcxhr_analog_vol_get()
134 mutex_unlock(&chip->mgr->mixer_mutex); in pcxhr_analog_vol_get()
141 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_analog_vol_put() local
145 mutex_lock(&chip->mgr->mixer_mutex); in pcxhr_analog_vol_put()
150 &chip->analog_capture_volume[i] : in pcxhr_analog_vol_put()
151 &chip->analog_playback_volume[i]; in pcxhr_analog_vol_put()
153 if (chip->mgr->is_hr_stereo) { in pcxhr_analog_vol_put()
163 if (chip->mgr->is_hr_stereo) { in pcxhr_analog_vol_put()
176 if (chip->mgr->is_hr_stereo) in pcxhr_analog_vol_put()
177 hr222_update_analog_audio_level(chip, in pcxhr_analog_vol_put()
180 pcxhr_update_analog_audio_level(chip, in pcxhr_analog_vol_put()
184 mutex_unlock(&chip->mgr->mixer_mutex); in pcxhr_analog_vol_put()
206 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_audio_sw_get() local
208 mutex_lock(&chip->mgr->mixer_mutex); in pcxhr_audio_sw_get()
209 ucontrol->value.integer.value[0] = chip->analog_playback_active[0]; in pcxhr_audio_sw_get()
210 ucontrol->value.integer.value[1] = chip->analog_playback_active[1]; in pcxhr_audio_sw_get()
211 mutex_unlock(&chip->mgr->mixer_mutex); in pcxhr_audio_sw_get()
218 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_audio_sw_put() local
220 mutex_lock(&chip->mgr->mixer_mutex); in pcxhr_audio_sw_put()
222 if (chip->analog_playback_active[i] != in pcxhr_audio_sw_put()
224 chip->analog_playback_active[i] = in pcxhr_audio_sw_put()
228 if (chip->mgr->is_hr_stereo) in pcxhr_audio_sw_put()
229 hr222_update_analog_audio_level(chip, 0, i); in pcxhr_audio_sw_put()
231 pcxhr_update_analog_audio_level(chip, 0, i); in pcxhr_audio_sw_put()
234 mutex_unlock(&chip->mgr->mixer_mutex); in pcxhr_audio_sw_put()
259 static int pcxhr_update_playback_stream_level(struct snd_pcxhr* chip, int idx) in pcxhr_update_playback_stream_level() argument
263 struct pcxhr_pipe *pipe = &chip->playback_pipe; in pcxhr_update_playback_stream_level()
266 if (chip->digital_playback_active[idx][0]) in pcxhr_update_playback_stream_level()
267 left = chip->digital_playback_volume[idx][0]; in pcxhr_update_playback_stream_level()
270 if (chip->digital_playback_active[idx][1]) in pcxhr_update_playback_stream_level()
271 right = chip->digital_playback_volume[idx][1]; in pcxhr_update_playback_stream_level()
286 err = pcxhr_send_msg(chip->mgr, &rmh); in pcxhr_update_playback_stream_level()
288 dev_dbg(chip->card->dev, "error update_playback_stream_level " in pcxhr_update_playback_stream_level()
289 "card(%d) err(%x)\n", chip->chip_idx, err); in pcxhr_update_playback_stream_level()
302 static int pcxhr_update_audio_pipe_level(struct snd_pcxhr *chip, in pcxhr_update_audio_pipe_level() argument
310 pipe = &chip->capture_pipe[0]; in pcxhr_update_audio_pipe_level()
312 pipe = &chip->playback_pipe; in pcxhr_update_audio_pipe_level()
324 rmh.cmd[2] = chip->digital_capture_volume[channel]; in pcxhr_update_audio_pipe_level()
331 rmh.cmd[2] = chip->monitoring_volume[channel] << 10; in pcxhr_update_audio_pipe_level()
332 if (chip->monitoring_active[channel] == 0) in pcxhr_update_audio_pipe_level()
337 err = pcxhr_send_msg(chip->mgr, &rmh); in pcxhr_update_audio_pipe_level()
339 dev_dbg(chip->card->dev, in pcxhr_update_audio_pipe_level()
341 chip->chip_idx, err); in pcxhr_update_audio_pipe_level()
363 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_pcm_vol_get() local
368 mutex_lock(&chip->mgr->mixer_mutex); in pcxhr_pcm_vol_get()
370 stored_volume = chip->digital_capture_volume; in pcxhr_pcm_vol_get()
372 stored_volume = chip->digital_playback_volume[idx]; in pcxhr_pcm_vol_get()
375 mutex_unlock(&chip->mgr->mixer_mutex); in pcxhr_pcm_vol_get()
382 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_pcm_vol_put() local
389 mutex_lock(&chip->mgr->mixer_mutex); in pcxhr_pcm_vol_put()
391 stored_volume = chip->digital_capture_volume; in pcxhr_pcm_vol_put()
393 stored_volume = chip->digital_playback_volume[idx]; in pcxhr_pcm_vol_put()
403 pcxhr_update_audio_pipe_level(chip, 1, i); in pcxhr_pcm_vol_put()
407 pcxhr_update_playback_stream_level(chip, idx); in pcxhr_pcm_vol_put()
408 mutex_unlock(&chip->mgr->mixer_mutex); in pcxhr_pcm_vol_put()
429 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_pcm_sw_get() local
432 mutex_lock(&chip->mgr->mixer_mutex); in pcxhr_pcm_sw_get()
433 ucontrol->value.integer.value[0] = chip->digital_playback_active[idx][0]; in pcxhr_pcm_sw_get()
434 ucontrol->value.integer.value[1] = chip->digital_playback_active[idx][1]; in pcxhr_pcm_sw_get()
435 mutex_unlock(&chip->mgr->mixer_mutex); in pcxhr_pcm_sw_get()
442 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_pcm_sw_put() local
447 mutex_lock(&chip->mgr->mixer_mutex); in pcxhr_pcm_sw_put()
450 if (chip->digital_playback_active[j][i] != in pcxhr_pcm_sw_put()
452 chip->digital_playback_active[j][i] = in pcxhr_pcm_sw_put()
458 pcxhr_update_playback_stream_level(chip, idx); in pcxhr_pcm_sw_put()
459 mutex_unlock(&chip->mgr->mixer_mutex); in pcxhr_pcm_sw_put()
480 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_monitor_vol_get() local
481 mutex_lock(&chip->mgr->mixer_mutex); in pcxhr_monitor_vol_get()
482 ucontrol->value.integer.value[0] = chip->monitoring_volume[0]; in pcxhr_monitor_vol_get()
483 ucontrol->value.integer.value[1] = chip->monitoring_volume[1]; in pcxhr_monitor_vol_get()
484 mutex_unlock(&chip->mgr->mixer_mutex); in pcxhr_monitor_vol_get()
491 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_monitor_vol_put() local
495 mutex_lock(&chip->mgr->mixer_mutex); in pcxhr_monitor_vol_put()
497 if (chip->monitoring_volume[i] != in pcxhr_monitor_vol_put()
499 chip->monitoring_volume[i] = in pcxhr_monitor_vol_put()
501 if (chip->monitoring_active[i]) in pcxhr_monitor_vol_put()
504 pcxhr_update_audio_pipe_level(chip, 0, i); in pcxhr_monitor_vol_put()
508 mutex_unlock(&chip->mgr->mixer_mutex); in pcxhr_monitor_vol_put()
530 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_monitor_sw_get() local
531 mutex_lock(&chip->mgr->mixer_mutex); in pcxhr_monitor_sw_get()
532 ucontrol->value.integer.value[0] = chip->monitoring_active[0]; in pcxhr_monitor_sw_get()
533 ucontrol->value.integer.value[1] = chip->monitoring_active[1]; in pcxhr_monitor_sw_get()
534 mutex_unlock(&chip->mgr->mixer_mutex); in pcxhr_monitor_sw_get()
541 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_monitor_sw_put() local
545 mutex_lock(&chip->mgr->mixer_mutex); in pcxhr_monitor_sw_put()
547 if (chip->monitoring_active[i] != in pcxhr_monitor_sw_put()
549 chip->monitoring_active[i] = in pcxhr_monitor_sw_put()
556 pcxhr_update_audio_pipe_level(chip, 0, 0); in pcxhr_monitor_sw_put()
559 pcxhr_update_audio_pipe_level(chip, 0, 1); in pcxhr_monitor_sw_put()
561 mutex_unlock(&chip->mgr->mixer_mutex); in pcxhr_monitor_sw_put()
584 static int pcxhr_set_audio_source(struct snd_pcxhr* chip) in pcxhr_set_audio_source() argument
591 switch (chip->chip_idx) { in pcxhr_set_audio_source()
598 if (chip->audio_capture_source != 0) { in pcxhr_set_audio_source()
604 pcxhr_write_io_num_reg_cont(chip->mgr, mask, reg, &changed); in pcxhr_set_audio_source()
608 rmh.cmd[0] |= (1 << chip->chip_idx); in pcxhr_set_audio_source()
609 err = pcxhr_send_msg(chip->mgr, &rmh); in pcxhr_set_audio_source()
613 if (chip->mgr->board_aes_in_192k) { in pcxhr_set_audio_source()
617 for (i = 0; (i < 4) && (i < chip->mgr->capture_chips); i++) { in pcxhr_set_audio_source()
618 if (chip->mgr->chip[i]->audio_capture_source == 2) in pcxhr_set_audio_source()
626 err = pcxhr_send_msg(chip->mgr, &rmh); in pcxhr_set_audio_source()
629 if (chip->audio_capture_source == 2) in pcxhr_set_audio_source()
638 err = pcxhr_send_msg(chip->mgr, &rmh); in pcxhr_set_audio_source()
643 err = pcxhr_send_msg(chip->mgr, &rmh); in pcxhr_set_audio_source()
655 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_audio_src_info() local
658 if (chip->mgr->board_has_aes1) { in pcxhr_audio_src_info()
660 if (chip->mgr->board_has_mic) in pcxhr_audio_src_info()
669 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_audio_src_get() local
670 ucontrol->value.enumerated.item[0] = chip->audio_capture_source; in pcxhr_audio_src_get()
677 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_audio_src_put() local
680 if (chip->mgr->board_has_aes1) { in pcxhr_audio_src_put()
682 if (chip->mgr->board_has_mic) in pcxhr_audio_src_put()
687 mutex_lock(&chip->mgr->mixer_mutex); in pcxhr_audio_src_put()
688 if (chip->audio_capture_source != ucontrol->value.enumerated.item[0]) { in pcxhr_audio_src_put()
689 chip->audio_capture_source = ucontrol->value.enumerated.item[0]; in pcxhr_audio_src_put()
690 if (chip->mgr->is_hr_stereo) in pcxhr_audio_src_put()
691 hr222_set_audio_source(chip); in pcxhr_audio_src_put()
693 pcxhr_set_audio_source(chip); in pcxhr_audio_src_put()
696 mutex_unlock(&chip->mgr->mixer_mutex); in pcxhr_audio_src_put()
864 static int pcxhr_iec958_capture_byte(struct snd_pcxhr *chip, in pcxhr_iec958_capture_byte() argument
873 switch (chip->chip_idx) { in pcxhr_iec958_capture_byte()
881 if (chip->mgr->board_aes_in_192k) { in pcxhr_iec958_capture_byte()
906 err = pcxhr_send_msg(chip->mgr, &rmh); in pcxhr_iec958_capture_byte()
910 if (chip->mgr->board_aes_in_192k) { in pcxhr_iec958_capture_byte()
921 dev_dbg(chip->card->dev, "read iec958 AES %d byte %d = 0x%x\n", in pcxhr_iec958_capture_byte()
922 chip->chip_idx, aes_idx, temp); in pcxhr_iec958_capture_byte()
930 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_iec958_get() local
934 mutex_lock(&chip->mgr->mixer_mutex); in pcxhr_iec958_get()
937 aes_bits = chip->aes_bits[i]; in pcxhr_iec958_get()
939 if (chip->mgr->is_hr_stereo) in pcxhr_iec958_get()
940 err = hr222_iec958_capture_byte(chip, i, in pcxhr_iec958_get()
943 err = pcxhr_iec958_capture_byte(chip, i, in pcxhr_iec958_get()
950 mutex_unlock(&chip->mgr->mixer_mutex); in pcxhr_iec958_get()
963 static int pcxhr_iec958_update_byte(struct snd_pcxhr *chip, in pcxhr_iec958_update_byte() argument
968 unsigned char old_bits = chip->aes_bits[aes_idx]; in pcxhr_iec958_update_byte()
973 cmd = chip->chip_idx & 0x03; /* chip index 0..3 */ in pcxhr_iec958_update_byte()
974 if (chip->chip_idx > 3) in pcxhr_iec958_update_byte()
983 dev_dbg(chip->card->dev, in pcxhr_iec958_update_byte()
985 chip->chip_idx, aes_idx, i, cmd); in pcxhr_iec958_update_byte()
986 err = pcxhr_send_msg(chip->mgr, &rmh); in pcxhr_iec958_update_byte()
993 chip->aes_bits[aes_idx] = aes_bits; in pcxhr_iec958_update_byte()
1000 struct snd_pcxhr *chip = snd_kcontrol_chip(kcontrol); in pcxhr_iec958_put() local
1004 mutex_lock(&chip->mgr->mixer_mutex); in pcxhr_iec958_put()
1006 if (ucontrol->value.iec958.status[i] != chip->aes_bits[i]) { in pcxhr_iec958_put()
1007 if (chip->mgr->is_hr_stereo) in pcxhr_iec958_put()
1008 hr222_iec958_update_byte(chip, i, in pcxhr_iec958_put()
1011 pcxhr_iec958_update_byte(chip, i, in pcxhr_iec958_put()
1016 mutex_unlock(&chip->mgr->mixer_mutex); in pcxhr_iec958_put()
1052 static void pcxhr_init_audio_levels(struct snd_pcxhr *chip) in pcxhr_init_audio_levels() argument
1057 if (chip->nb_streams_play) { in pcxhr_init_audio_levels()
1061 chip->digital_playback_active[j][i] = 1; in pcxhr_init_audio_levels()
1062 chip->digital_playback_volume[j][i] = in pcxhr_init_audio_levels()
1068 chip->aes_bits[0] = (IEC958_AES0_PROFESSIONAL | in pcxhr_init_audio_levels()
1074 chip->analog_playback_active[i] = 1; in pcxhr_init_audio_levels()
1075 if (chip->mgr->is_hr_stereo) in pcxhr_init_audio_levels()
1076 chip->analog_playback_volume[i] = in pcxhr_init_audio_levels()
1079 chip->analog_playback_volume[i] = in pcxhr_init_audio_levels()
1081 pcxhr_update_analog_audio_level(chip, 0, i); in pcxhr_init_audio_levels()
1085 if (chip->mgr->is_hr_stereo) in pcxhr_init_audio_levels()
1086 hr222_update_analog_audio_level(chip, 0, i); in pcxhr_init_audio_levels()
1088 if (chip->nb_streams_capt) { in pcxhr_init_audio_levels()
1090 chip->digital_capture_volume[i] = in pcxhr_init_audio_levels()
1092 chip->analog_capture_active = 1; in pcxhr_init_audio_levels()
1097 if (chip->mgr->is_hr_stereo) in pcxhr_init_audio_levels()
1098 chip->analog_capture_volume[i] = in pcxhr_init_audio_levels()
1101 chip->analog_capture_volume[i] = in pcxhr_init_audio_levels()
1103 pcxhr_update_analog_audio_level(chip, 1, i); in pcxhr_init_audio_levels()
1107 if (chip->mgr->is_hr_stereo) in pcxhr_init_audio_levels()
1108 hr222_update_analog_audio_level(chip, 1, i); in pcxhr_init_audio_levels()
1118 struct snd_pcxhr *chip; in pcxhr_create_mixer() local
1125 chip = mgr->chip[i]; in pcxhr_create_mixer()
1127 if (chip->nb_streams_play) { in pcxhr_create_mixer()
1136 err = snd_ctl_add(chip->card, in pcxhr_create_mixer()
1137 snd_ctl_new1(&temp, chip)); in pcxhr_create_mixer()
1142 err = snd_ctl_add(chip->card, in pcxhr_create_mixer()
1144 chip)); in pcxhr_create_mixer()
1152 err = snd_ctl_add(chip->card, in pcxhr_create_mixer()
1153 snd_ctl_new1(&temp, chip)); in pcxhr_create_mixer()
1157 err = snd_ctl_add(chip->card, in pcxhr_create_mixer()
1158 snd_ctl_new1(&pcxhr_control_pcm_switch, chip)); in pcxhr_create_mixer()
1163 err = snd_ctl_add(chip->card, in pcxhr_create_mixer()
1165 chip)); in pcxhr_create_mixer()
1169 err = snd_ctl_add(chip->card, in pcxhr_create_mixer()
1171 chip)); in pcxhr_create_mixer()
1175 if (chip->nb_streams_capt) { in pcxhr_create_mixer()
1185 err = snd_ctl_add(chip->card, in pcxhr_create_mixer()
1186 snd_ctl_new1(&temp, chip)); in pcxhr_create_mixer()
1195 err = snd_ctl_add(chip->card, in pcxhr_create_mixer()
1196 snd_ctl_new1(&temp, chip)); in pcxhr_create_mixer()
1201 err = snd_ctl_add(chip->card, in pcxhr_create_mixer()
1202 snd_ctl_new1(&pcxhr_control_audio_src, chip)); in pcxhr_create_mixer()
1207 err = snd_ctl_add(chip->card, in pcxhr_create_mixer()
1209 chip)); in pcxhr_create_mixer()
1213 err = snd_ctl_add(chip->card, in pcxhr_create_mixer()
1215 chip)); in pcxhr_create_mixer()
1220 err = hr222_add_mic_controls(chip); in pcxhr_create_mixer()
1226 if (chip->nb_streams_capt > 0 && chip->nb_streams_play > 0) { in pcxhr_create_mixer()
1228 err = snd_ctl_add(chip->card, in pcxhr_create_mixer()
1229 snd_ctl_new1(&pcxhr_control_monitor_vol, chip)); in pcxhr_create_mixer()
1233 err = snd_ctl_add(chip->card, in pcxhr_create_mixer()
1234 snd_ctl_new1(&pcxhr_control_monitor_sw, chip)); in pcxhr_create_mixer()
1241 err = snd_ctl_add(chip->card, in pcxhr_create_mixer()
1248 err = snd_ctl_add(chip->card, in pcxhr_create_mixer()
1255 pcxhr_init_audio_levels(chip); in pcxhr_create_mixer()