Lines Matching refs:mixer

219 ct_mixer_recording_select(struct ct_mixer *mixer, enum CT_AMIXER_CTL type);
222 ct_mixer_recording_unselect(struct ct_mixer *mixer, enum CT_AMIXER_CTL type);
267 get_switch_state(struct ct_mixer *mixer, enum CTALSA_MIXER_CTL type) in get_switch_state() argument
269 return (mixer->switch_state & (0x1 << (type - SWH_MIXER_START))) in get_switch_state()
274 set_switch_state(struct ct_mixer *mixer, in set_switch_state() argument
278 mixer->switch_state |= (0x1 << (type - SWH_MIXER_START)); in set_switch_state()
280 mixer->switch_state &= ~(0x1 << (type - SWH_MIXER_START)); in set_switch_state()
350 amixer = ((struct ct_mixer *)atc->mixer)-> in ct_alsa_mix_volume_get()
367 struct ct_mixer *mixer = atc->mixer; in ct_alsa_mix_volume_put() local
379 amixer = mixer->amixers[type*CHN_NUM+i]; in ct_alsa_mix_volume_put()
388 amixer = mixer-> in ct_alsa_mix_volume_put()
487 set_switch_state(atc->mixer, MIXER_MIC_C_S, 0); in do_line_mic_switch()
492 set_switch_state(atc->mixer, MIXER_LINEIN_C_S, 0); in do_line_mic_switch()
501 struct ct_mixer *mixer = atc->mixer; in do_digit_io_switch() local
506 get_switch_state(mixer, MIXER_SPDIFO_P_S)); in do_digit_io_switch()
512 if (get_switch_state(mixer, MIXER_LINEIN_C_S)) in do_digit_io_switch()
514 else if (get_switch_state(mixer, MIXER_MIC_C_S)) in do_digit_io_switch()
525 struct ct_mixer *mixer = atc->mixer; in do_switch() local
531 ct_mixer_recording_select(mixer, in do_switch()
534 ct_mixer_recording_unselect(mixer, in do_switch()
581 struct ct_mixer *mixer = in ct_alsa_mix_switch_get() local
582 ((struct ct_atc *)snd_kcontrol_chip(kcontrol))->mixer; in ct_alsa_mix_switch_get()
585 ucontrol->value.integer.value[0] = get_switch_state(mixer, type); in ct_alsa_mix_switch_get()
593 struct ct_mixer *mixer = atc->mixer; in ct_alsa_mix_switch_put() local
598 if (get_switch_state(mixer, type) == state) in ct_alsa_mix_switch_put()
601 set_switch_state(mixer, type, state); in ct_alsa_mix_switch_put()
706 ct_mixer_kcontrol_new(struct ct_mixer *mixer, struct snd_kcontrol_new *new) in ct_mixer_kcontrol_new() argument
711 kctl = snd_ctl_new1(new, mixer->atc); in ct_mixer_kcontrol_new()
718 err = snd_ctl_add(mixer->atc->card, kctl); in ct_mixer_kcontrol_new()
734 static int ct_mixer_kcontrols_create(struct ct_mixer *mixer) in ct_mixer_kcontrols_create() argument
737 struct ct_atc *atc = mixer->atc; in ct_mixer_kcontrols_create()
746 err = ct_mixer_kcontrol_new(mixer, &vol_ctl); in ct_mixer_kcontrols_create()
758 err = ct_mixer_kcontrol_new(mixer, &swh_ctl); in ct_mixer_kcontrols_create()
764 err = ct_mixer_kcontrol_new(mixer, &iec958_mask_ctl); in ct_mixer_kcontrols_create()
768 err = ct_mixer_kcontrol_new(mixer, &iec958_default_ctl); in ct_mixer_kcontrols_create()
772 err = ct_mixer_kcontrol_new(mixer, &iec958_ctl); in ct_mixer_kcontrols_create()
777 err = ct_mixer_kcontrol_new(mixer, &output_ctl); in ct_mixer_kcontrols_create()
783 err = ct_mixer_kcontrol_new(mixer, &mic_source_ctl); in ct_mixer_kcontrols_create()
788 set_switch_state(mixer, MIXER_WAVEF_P_S, 1); in ct_mixer_kcontrols_create()
790 set_switch_state(mixer, MIXER_WAVES_P_S, 0); in ct_mixer_kcontrols_create()
792 set_switch_state(mixer, MIXER_WAVEC_P_S, 0); in ct_mixer_kcontrols_create()
794 set_switch_state(mixer, MIXER_WAVER_P_S, 0); in ct_mixer_kcontrols_create()
796 set_switch_state(mixer, MIXER_SPDIFO_P_S, 0); in ct_mixer_kcontrols_create()
801 set_switch_state(mixer, MIXER_PCM_C_S, 0); in ct_mixer_kcontrols_create()
802 set_switch_state(mixer, MIXER_LINEIN_C_S, 0); in ct_mixer_kcontrols_create()
803 set_switch_state(mixer, MIXER_SPDIFI_C_S, 0); in ct_mixer_kcontrols_create()
809 ct_mixer_recording_select(struct ct_mixer *mixer, enum CT_AMIXER_CTL type) in ct_mixer_recording_select() argument
816 amix_d = mixer->amixers[type*CHN_NUM+i]; in ct_mixer_recording_select()
817 sum_c = mixer->sums[SUM_IN_F_C*CHN_NUM+i]; in ct_mixer_recording_select()
824 ct_mixer_recording_unselect(struct ct_mixer *mixer, enum CT_AMIXER_CTL type) in ct_mixer_recording_unselect() argument
830 amix_d = mixer->amixers[type*CHN_NUM+i]; in ct_mixer_recording_unselect()
836 static int ct_mixer_get_resources(struct ct_mixer *mixer) in ct_mixer_get_resources() argument
848 sum_mgr = (struct sum_mgr *)mixer->atc->rsc_mgrs[SUM]; in ct_mixer_get_resources()
849 sum_desc.msr = mixer->atc->msr; in ct_mixer_get_resources()
853 dev_err(mixer->atc->card->dev, in ct_mixer_get_resources()
857 mixer->sums[i] = sum; in ct_mixer_get_resources()
863 amixer_mgr = (struct amixer_mgr *)mixer->atc->rsc_mgrs[AMIXER]; in ct_mixer_get_resources()
864 am_desc.msr = mixer->atc->msr; in ct_mixer_get_resources()
868 dev_err(mixer->atc->card->dev, in ct_mixer_get_resources()
872 mixer->amixers[i] = amixer; in ct_mixer_get_resources()
881 if (NULL != mixer->amixers[i]) { in ct_mixer_get_resources()
882 amixer = mixer->amixers[i]; in ct_mixer_get_resources()
884 mixer->amixers[i] = NULL; in ct_mixer_get_resources()
889 if (NULL != mixer->sums[i]) { in ct_mixer_get_resources()
890 sum_mgr->put_sum(sum_mgr, (struct sum *)mixer->sums[i]); in ct_mixer_get_resources()
891 mixer->sums[i] = NULL; in ct_mixer_get_resources()
900 struct ct_mixer *mixer; in ct_mixer_get_mem() local
905 mixer = kzalloc(sizeof(*mixer), GFP_KERNEL); in ct_mixer_get_mem()
906 if (!mixer) in ct_mixer_get_mem()
909 mixer->amixers = kcalloc(NUM_CT_AMIXERS * CHN_NUM, sizeof(void *), in ct_mixer_get_mem()
911 if (!mixer->amixers) { in ct_mixer_get_mem()
915 mixer->sums = kcalloc(NUM_CT_SUMS * CHN_NUM, sizeof(void *), in ct_mixer_get_mem()
917 if (!mixer->sums) { in ct_mixer_get_mem()
922 *rmixer = mixer; in ct_mixer_get_mem()
926 kfree(mixer->amixers); in ct_mixer_get_mem()
928 kfree(mixer); in ct_mixer_get_mem()
932 static int ct_mixer_topology_build(struct ct_mixer *mixer) in ct_mixer_topology_build() argument
944 amix_d = mixer->amixers[i*CHN_NUM]; in ct_mixer_topology_build()
945 sum = mixer->sums[k*CHN_NUM]; in ct_mixer_topology_build()
947 amix_d = mixer->amixers[i*CHN_NUM+1]; in ct_mixer_topology_build()
948 sum = mixer->sums[k*CHN_NUM+1]; in ct_mixer_topology_build()
955 amix_d = mixer->amixers[i*CHN_NUM]; in ct_mixer_topology_build()
956 amix_s = mixer->amixers[j*CHN_NUM]; in ct_mixer_topology_build()
958 amix_d = mixer->amixers[i*CHN_NUM+1]; in ct_mixer_topology_build()
959 amix_s = mixer->amixers[j*CHN_NUM+1]; in ct_mixer_topology_build()
964 amix_d = mixer->amixers[AMIXER_SPDIFO*CHN_NUM]; in ct_mixer_topology_build()
965 amix_s = mixer->amixers[AMIXER_MASTER_F*CHN_NUM]; in ct_mixer_topology_build()
967 amix_d = mixer->amixers[AMIXER_SPDIFO*CHN_NUM+1]; in ct_mixer_topology_build()
968 amix_s = mixer->amixers[AMIXER_MASTER_F*CHN_NUM+1]; in ct_mixer_topology_build()
973 amix_d = mixer->amixers[i*CHN_NUM]; in ct_mixer_topology_build()
974 sum = mixer->sums[k*CHN_NUM]; in ct_mixer_topology_build()
976 amix_d = mixer->amixers[i*CHN_NUM+1]; in ct_mixer_topology_build()
977 sum = mixer->sums[k*CHN_NUM+1]; in ct_mixer_topology_build()
982 amix_d = mixer->amixers[AMIXER_LINEIN*CHN_NUM]; in ct_mixer_topology_build()
983 sum = mixer->sums[SUM_IN_F*CHN_NUM]; in ct_mixer_topology_build()
985 amix_d = mixer->amixers[AMIXER_LINEIN*CHN_NUM+1]; in ct_mixer_topology_build()
986 sum = mixer->sums[SUM_IN_F*CHN_NUM+1]; in ct_mixer_topology_build()
990 amix_d = mixer->amixers[AMIXER_MIC*CHN_NUM]; in ct_mixer_topology_build()
991 sum = mixer->sums[SUM_IN_F*CHN_NUM]; in ct_mixer_topology_build()
993 amix_d = mixer->amixers[AMIXER_MIC*CHN_NUM+1]; in ct_mixer_topology_build()
994 sum = mixer->sums[SUM_IN_F*CHN_NUM+1]; in ct_mixer_topology_build()
998 amix_d = mixer->amixers[AMIXER_SPDIFI*CHN_NUM]; in ct_mixer_topology_build()
999 sum = mixer->sums[SUM_IN_F*CHN_NUM]; in ct_mixer_topology_build()
1001 amix_d = mixer->amixers[AMIXER_SPDIFI*CHN_NUM+1]; in ct_mixer_topology_build()
1002 sum = mixer->sums[SUM_IN_F*CHN_NUM+1]; in ct_mixer_topology_build()
1006 amix_d = mixer->amixers[AMIXER_MASTER_F_C*CHN_NUM]; in ct_mixer_topology_build()
1007 sum = mixer->sums[SUM_IN_F_C*CHN_NUM]; in ct_mixer_topology_build()
1009 amix_d = mixer->amixers[AMIXER_MASTER_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1010 sum = mixer->sums[SUM_IN_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1014 amix_d = mixer->amixers[AMIXER_PCM_F_C*CHN_NUM]; in ct_mixer_topology_build()
1015 sum = mixer->sums[SUM_IN_F_C*CHN_NUM]; in ct_mixer_topology_build()
1017 amix_d = mixer->amixers[AMIXER_PCM_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1018 sum = mixer->sums[SUM_IN_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1022 amix_d = mixer->amixers[AMIXER_LINEIN_C*CHN_NUM]; in ct_mixer_topology_build()
1023 sum = mixer->sums[SUM_IN_F_C*CHN_NUM]; in ct_mixer_topology_build()
1025 amix_d = mixer->amixers[AMIXER_LINEIN_C*CHN_NUM+1]; in ct_mixer_topology_build()
1026 sum = mixer->sums[SUM_IN_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1030 amix_d = mixer->amixers[AMIXER_MIC_C*CHN_NUM]; in ct_mixer_topology_build()
1031 sum = mixer->sums[SUM_IN_F_C*CHN_NUM]; in ct_mixer_topology_build()
1033 amix_d = mixer->amixers[AMIXER_MIC_C*CHN_NUM+1]; in ct_mixer_topology_build()
1034 sum = mixer->sums[SUM_IN_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1038 amix_d = mixer->amixers[AMIXER_SPDIFI_C*CHN_NUM]; in ct_mixer_topology_build()
1039 sum = mixer->sums[SUM_IN_F_C*CHN_NUM]; in ct_mixer_topology_build()
1041 amix_d = mixer->amixers[AMIXER_SPDIFI_C*CHN_NUM+1]; in ct_mixer_topology_build()
1042 sum = mixer->sums[SUM_IN_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1076 static int mixer_get_output_ports(struct ct_mixer *mixer, in mixer_get_output_ports() argument
1083 *rleft = &((struct amixer *)mixer->amixers[amix*CHN_NUM])->rsc; in mixer_get_output_ports()
1087 &((struct amixer *)mixer->amixers[amix*CHN_NUM+1])->rsc; in mixer_get_output_ports()
1092 static int mixer_set_input_left(struct ct_mixer *mixer, in mixer_set_input_left() argument
1097 mixer_set_input_port(mixer->amixers[amix*CHN_NUM], rsc); in mixer_set_input_left()
1100 mixer_set_input_port(mixer->amixers[amix*CHN_NUM], rsc); in mixer_set_input_left()
1106 mixer_set_input_right(struct ct_mixer *mixer, in mixer_set_input_right() argument
1111 mixer_set_input_port(mixer->amixers[amix*CHN_NUM+1], rsc); in mixer_set_input_right()
1114 mixer_set_input_port(mixer->amixers[amix*CHN_NUM+1], rsc); in mixer_set_input_right()
1120 static int mixer_resume(struct ct_mixer *mixer) in mixer_resume() argument
1127 amixer = mixer->amixers[i]; in mixer_resume()
1133 state = get_switch_state(mixer, i); in mixer_resume()
1134 do_switch(mixer->atc, i, state); in mixer_resume()
1141 int ct_mixer_destroy(struct ct_mixer *mixer) in ct_mixer_destroy() argument
1143 struct sum_mgr *sum_mgr = (struct sum_mgr *)mixer->atc->rsc_mgrs[SUM]; in ct_mixer_destroy()
1145 (struct amixer_mgr *)mixer->atc->rsc_mgrs[AMIXER]; in ct_mixer_destroy()
1151 if (NULL != mixer->amixers[i]) { in ct_mixer_destroy()
1152 amixer = mixer->amixers[i]; in ct_mixer_destroy()
1159 if (NULL != mixer->sums[i]) in ct_mixer_destroy()
1160 sum_mgr->put_sum(sum_mgr, (struct sum *)mixer->sums[i]); in ct_mixer_destroy()
1164 kfree(mixer->sums); in ct_mixer_destroy()
1165 kfree(mixer->amixers); in ct_mixer_destroy()
1166 kfree(mixer); in ct_mixer_destroy()
1173 struct ct_mixer *mixer; in ct_mixer_create() local
1179 err = ct_mixer_get_mem(&mixer); in ct_mixer_create()
1183 mixer->switch_state = 0; in ct_mixer_create()
1184 mixer->atc = atc; in ct_mixer_create()
1186 mixer->get_output_ports = mixer_get_output_ports; in ct_mixer_create()
1187 mixer->set_input_left = mixer_set_input_left; in ct_mixer_create()
1188 mixer->set_input_right = mixer_set_input_right; in ct_mixer_create()
1190 mixer->resume = mixer_resume; in ct_mixer_create()
1194 err = ct_mixer_get_resources(mixer); in ct_mixer_create()
1199 ct_mixer_topology_build(mixer); in ct_mixer_create()
1201 *rmixer = mixer; in ct_mixer_create()
1206 ct_mixer_destroy(mixer); in ct_mixer_create()
1218 err = ct_mixer_kcontrols_create((struct ct_mixer *)atc->mixer); in ct_alsa_mix_create()