Lines Matching refs:mixer

223 ct_mixer_recording_select(struct ct_mixer *mixer, enum CT_AMIXER_CTL type);
226 ct_mixer_recording_unselect(struct ct_mixer *mixer, enum CT_AMIXER_CTL type);
271 get_switch_state(struct ct_mixer *mixer, enum CTALSA_MIXER_CTL type) in get_switch_state() argument
273 return (mixer->switch_state & (0x1 << (type - SWH_MIXER_START))) in get_switch_state()
278 set_switch_state(struct ct_mixer *mixer, in set_switch_state() argument
282 mixer->switch_state |= (0x1 << (type - SWH_MIXER_START)); in set_switch_state()
284 mixer->switch_state &= ~(0x1 << (type - SWH_MIXER_START)); in set_switch_state()
354 amixer = ((struct ct_mixer *)atc->mixer)-> in ct_alsa_mix_volume_get()
371 struct ct_mixer *mixer = atc->mixer; in ct_alsa_mix_volume_put() local
383 amixer = mixer->amixers[type*CHN_NUM+i]; in ct_alsa_mix_volume_put()
392 amixer = mixer-> in ct_alsa_mix_volume_put()
491 set_switch_state(atc->mixer, MIXER_MIC_C_S, 0); in do_line_mic_switch()
496 set_switch_state(atc->mixer, MIXER_LINEIN_C_S, 0); in do_line_mic_switch()
505 struct ct_mixer *mixer = atc->mixer; in do_digit_io_switch() local
510 get_switch_state(mixer, MIXER_SPDIFO_P_S)); in do_digit_io_switch()
516 if (get_switch_state(mixer, MIXER_LINEIN_C_S)) in do_digit_io_switch()
518 else if (get_switch_state(mixer, MIXER_MIC_C_S)) in do_digit_io_switch()
529 struct ct_mixer *mixer = atc->mixer; in do_switch() local
535 ct_mixer_recording_select(mixer, in do_switch()
538 ct_mixer_recording_unselect(mixer, in do_switch()
585 struct ct_mixer *mixer = in ct_alsa_mix_switch_get() local
586 ((struct ct_atc *)snd_kcontrol_chip(kcontrol))->mixer; in ct_alsa_mix_switch_get()
589 ucontrol->value.integer.value[0] = get_switch_state(mixer, type); in ct_alsa_mix_switch_get()
597 struct ct_mixer *mixer = atc->mixer; in ct_alsa_mix_switch_put() local
602 if (get_switch_state(mixer, type) == state) in ct_alsa_mix_switch_put()
605 set_switch_state(mixer, type, state); in ct_alsa_mix_switch_put()
710 ct_mixer_kcontrol_new(struct ct_mixer *mixer, struct snd_kcontrol_new *new) in ct_mixer_kcontrol_new() argument
715 kctl = snd_ctl_new1(new, mixer->atc); in ct_mixer_kcontrol_new()
722 err = snd_ctl_add(mixer->atc->card, kctl); in ct_mixer_kcontrol_new()
738 static int ct_mixer_kcontrols_create(struct ct_mixer *mixer) in ct_mixer_kcontrols_create() argument
741 struct ct_atc *atc = mixer->atc; in ct_mixer_kcontrols_create()
750 err = ct_mixer_kcontrol_new(mixer, &vol_ctl); in ct_mixer_kcontrols_create()
762 err = ct_mixer_kcontrol_new(mixer, &swh_ctl); in ct_mixer_kcontrols_create()
768 err = ct_mixer_kcontrol_new(mixer, &iec958_mask_ctl); in ct_mixer_kcontrols_create()
772 err = ct_mixer_kcontrol_new(mixer, &iec958_default_ctl); in ct_mixer_kcontrols_create()
776 err = ct_mixer_kcontrol_new(mixer, &iec958_ctl); in ct_mixer_kcontrols_create()
781 err = ct_mixer_kcontrol_new(mixer, &output_ctl); in ct_mixer_kcontrols_create()
787 err = ct_mixer_kcontrol_new(mixer, &mic_source_ctl); in ct_mixer_kcontrols_create()
792 set_switch_state(mixer, MIXER_WAVEF_P_S, 1); in ct_mixer_kcontrols_create()
794 set_switch_state(mixer, MIXER_WAVES_P_S, 0); in ct_mixer_kcontrols_create()
796 set_switch_state(mixer, MIXER_WAVEC_P_S, 0); in ct_mixer_kcontrols_create()
798 set_switch_state(mixer, MIXER_WAVER_P_S, 0); in ct_mixer_kcontrols_create()
800 set_switch_state(mixer, MIXER_SPDIFO_P_S, 0); in ct_mixer_kcontrols_create()
805 set_switch_state(mixer, MIXER_PCM_C_S, 0); in ct_mixer_kcontrols_create()
806 set_switch_state(mixer, MIXER_LINEIN_C_S, 0); in ct_mixer_kcontrols_create()
807 set_switch_state(mixer, MIXER_SPDIFI_C_S, 0); in ct_mixer_kcontrols_create()
813 ct_mixer_recording_select(struct ct_mixer *mixer, enum CT_AMIXER_CTL type) in ct_mixer_recording_select() argument
820 amix_d = mixer->amixers[type*CHN_NUM+i]; in ct_mixer_recording_select()
821 sum_c = mixer->sums[SUM_IN_F_C*CHN_NUM+i]; in ct_mixer_recording_select()
828 ct_mixer_recording_unselect(struct ct_mixer *mixer, enum CT_AMIXER_CTL type) in ct_mixer_recording_unselect() argument
834 amix_d = mixer->amixers[type*CHN_NUM+i]; in ct_mixer_recording_unselect()
840 static int ct_mixer_get_resources(struct ct_mixer *mixer) in ct_mixer_get_resources() argument
852 sum_mgr = (struct sum_mgr *)mixer->atc->rsc_mgrs[SUM]; in ct_mixer_get_resources()
853 sum_desc.msr = mixer->atc->msr; in ct_mixer_get_resources()
857 dev_err(mixer->atc->card->dev, in ct_mixer_get_resources()
861 mixer->sums[i] = sum; in ct_mixer_get_resources()
867 amixer_mgr = (struct amixer_mgr *)mixer->atc->rsc_mgrs[AMIXER]; in ct_mixer_get_resources()
868 am_desc.msr = mixer->atc->msr; in ct_mixer_get_resources()
872 dev_err(mixer->atc->card->dev, in ct_mixer_get_resources()
876 mixer->amixers[i] = amixer; in ct_mixer_get_resources()
885 if (NULL != mixer->amixers[i]) { in ct_mixer_get_resources()
886 amixer = mixer->amixers[i]; in ct_mixer_get_resources()
888 mixer->amixers[i] = NULL; in ct_mixer_get_resources()
893 if (NULL != mixer->sums[i]) { in ct_mixer_get_resources()
894 sum_mgr->put_sum(sum_mgr, (struct sum *)mixer->sums[i]); in ct_mixer_get_resources()
895 mixer->sums[i] = NULL; in ct_mixer_get_resources()
904 struct ct_mixer *mixer; in ct_mixer_get_mem() local
909 mixer = kzalloc(sizeof(*mixer), GFP_KERNEL); in ct_mixer_get_mem()
910 if (!mixer) in ct_mixer_get_mem()
913 mixer->amixers = kcalloc(NUM_CT_AMIXERS * CHN_NUM, sizeof(void *), in ct_mixer_get_mem()
915 if (!mixer->amixers) { in ct_mixer_get_mem()
919 mixer->sums = kcalloc(NUM_CT_SUMS * CHN_NUM, sizeof(void *), in ct_mixer_get_mem()
921 if (!mixer->sums) { in ct_mixer_get_mem()
926 *rmixer = mixer; in ct_mixer_get_mem()
930 kfree(mixer->amixers); in ct_mixer_get_mem()
932 kfree(mixer); in ct_mixer_get_mem()
936 static int ct_mixer_topology_build(struct ct_mixer *mixer) in ct_mixer_topology_build() argument
948 amix_d = mixer->amixers[i*CHN_NUM]; in ct_mixer_topology_build()
949 sum = mixer->sums[k*CHN_NUM]; in ct_mixer_topology_build()
951 amix_d = mixer->amixers[i*CHN_NUM+1]; in ct_mixer_topology_build()
952 sum = mixer->sums[k*CHN_NUM+1]; in ct_mixer_topology_build()
959 amix_d = mixer->amixers[i*CHN_NUM]; in ct_mixer_topology_build()
960 amix_s = mixer->amixers[j*CHN_NUM]; in ct_mixer_topology_build()
962 amix_d = mixer->amixers[i*CHN_NUM+1]; in ct_mixer_topology_build()
963 amix_s = mixer->amixers[j*CHN_NUM+1]; in ct_mixer_topology_build()
968 amix_d = mixer->amixers[AMIXER_SPDIFO*CHN_NUM]; in ct_mixer_topology_build()
969 amix_s = mixer->amixers[AMIXER_MASTER_F*CHN_NUM]; in ct_mixer_topology_build()
971 amix_d = mixer->amixers[AMIXER_SPDIFO*CHN_NUM+1]; in ct_mixer_topology_build()
972 amix_s = mixer->amixers[AMIXER_MASTER_F*CHN_NUM+1]; in ct_mixer_topology_build()
977 amix_d = mixer->amixers[i*CHN_NUM]; in ct_mixer_topology_build()
978 sum = mixer->sums[k*CHN_NUM]; in ct_mixer_topology_build()
980 amix_d = mixer->amixers[i*CHN_NUM+1]; in ct_mixer_topology_build()
981 sum = mixer->sums[k*CHN_NUM+1]; in ct_mixer_topology_build()
986 amix_d = mixer->amixers[AMIXER_LINEIN*CHN_NUM]; in ct_mixer_topology_build()
987 sum = mixer->sums[SUM_IN_F*CHN_NUM]; in ct_mixer_topology_build()
989 amix_d = mixer->amixers[AMIXER_LINEIN*CHN_NUM+1]; in ct_mixer_topology_build()
990 sum = mixer->sums[SUM_IN_F*CHN_NUM+1]; in ct_mixer_topology_build()
994 amix_d = mixer->amixers[AMIXER_MIC*CHN_NUM]; in ct_mixer_topology_build()
995 sum = mixer->sums[SUM_IN_F*CHN_NUM]; in ct_mixer_topology_build()
997 amix_d = mixer->amixers[AMIXER_MIC*CHN_NUM+1]; in ct_mixer_topology_build()
998 sum = mixer->sums[SUM_IN_F*CHN_NUM+1]; in ct_mixer_topology_build()
1002 amix_d = mixer->amixers[AMIXER_SPDIFI*CHN_NUM]; in ct_mixer_topology_build()
1003 sum = mixer->sums[SUM_IN_F*CHN_NUM]; in ct_mixer_topology_build()
1005 amix_d = mixer->amixers[AMIXER_SPDIFI*CHN_NUM+1]; in ct_mixer_topology_build()
1006 sum = mixer->sums[SUM_IN_F*CHN_NUM+1]; in ct_mixer_topology_build()
1010 amix_d = mixer->amixers[AMIXER_MASTER_F_C*CHN_NUM]; in ct_mixer_topology_build()
1011 sum = mixer->sums[SUM_IN_F_C*CHN_NUM]; in ct_mixer_topology_build()
1013 amix_d = mixer->amixers[AMIXER_MASTER_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1014 sum = mixer->sums[SUM_IN_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1018 amix_d = mixer->amixers[AMIXER_PCM_F_C*CHN_NUM]; in ct_mixer_topology_build()
1019 sum = mixer->sums[SUM_IN_F_C*CHN_NUM]; in ct_mixer_topology_build()
1021 amix_d = mixer->amixers[AMIXER_PCM_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1022 sum = mixer->sums[SUM_IN_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1026 amix_d = mixer->amixers[AMIXER_LINEIN_C*CHN_NUM]; in ct_mixer_topology_build()
1027 sum = mixer->sums[SUM_IN_F_C*CHN_NUM]; in ct_mixer_topology_build()
1029 amix_d = mixer->amixers[AMIXER_LINEIN_C*CHN_NUM+1]; in ct_mixer_topology_build()
1030 sum = mixer->sums[SUM_IN_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1034 amix_d = mixer->amixers[AMIXER_MIC_C*CHN_NUM]; in ct_mixer_topology_build()
1035 sum = mixer->sums[SUM_IN_F_C*CHN_NUM]; in ct_mixer_topology_build()
1037 amix_d = mixer->amixers[AMIXER_MIC_C*CHN_NUM+1]; in ct_mixer_topology_build()
1038 sum = mixer->sums[SUM_IN_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1042 amix_d = mixer->amixers[AMIXER_SPDIFI_C*CHN_NUM]; in ct_mixer_topology_build()
1043 sum = mixer->sums[SUM_IN_F_C*CHN_NUM]; in ct_mixer_topology_build()
1045 amix_d = mixer->amixers[AMIXER_SPDIFI_C*CHN_NUM+1]; in ct_mixer_topology_build()
1046 sum = mixer->sums[SUM_IN_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1080 static int mixer_get_output_ports(struct ct_mixer *mixer, in mixer_get_output_ports() argument
1087 *rleft = &((struct amixer *)mixer->amixers[amix*CHN_NUM])->rsc; in mixer_get_output_ports()
1091 &((struct amixer *)mixer->amixers[amix*CHN_NUM+1])->rsc; in mixer_get_output_ports()
1096 static int mixer_set_input_left(struct ct_mixer *mixer, in mixer_set_input_left() argument
1101 mixer_set_input_port(mixer->amixers[amix*CHN_NUM], rsc); in mixer_set_input_left()
1104 mixer_set_input_port(mixer->amixers[amix*CHN_NUM], rsc); in mixer_set_input_left()
1110 mixer_set_input_right(struct ct_mixer *mixer, in mixer_set_input_right() argument
1115 mixer_set_input_port(mixer->amixers[amix*CHN_NUM+1], rsc); in mixer_set_input_right()
1118 mixer_set_input_port(mixer->amixers[amix*CHN_NUM+1], rsc); in mixer_set_input_right()
1124 static int mixer_resume(struct ct_mixer *mixer) in mixer_resume() argument
1131 amixer = mixer->amixers[i]; in mixer_resume()
1137 state = get_switch_state(mixer, i); in mixer_resume()
1138 do_switch(mixer->atc, i, state); in mixer_resume()
1145 int ct_mixer_destroy(struct ct_mixer *mixer) in ct_mixer_destroy() argument
1147 struct sum_mgr *sum_mgr = (struct sum_mgr *)mixer->atc->rsc_mgrs[SUM]; in ct_mixer_destroy()
1149 (struct amixer_mgr *)mixer->atc->rsc_mgrs[AMIXER]; in ct_mixer_destroy()
1155 if (NULL != mixer->amixers[i]) { in ct_mixer_destroy()
1156 amixer = mixer->amixers[i]; in ct_mixer_destroy()
1163 if (NULL != mixer->sums[i]) in ct_mixer_destroy()
1164 sum_mgr->put_sum(sum_mgr, (struct sum *)mixer->sums[i]); in ct_mixer_destroy()
1168 kfree(mixer->sums); in ct_mixer_destroy()
1169 kfree(mixer->amixers); in ct_mixer_destroy()
1170 kfree(mixer); in ct_mixer_destroy()
1177 struct ct_mixer *mixer; in ct_mixer_create() local
1183 err = ct_mixer_get_mem(&mixer); in ct_mixer_create()
1187 mixer->switch_state = 0; in ct_mixer_create()
1188 mixer->atc = atc; in ct_mixer_create()
1190 mixer->get_output_ports = mixer_get_output_ports; in ct_mixer_create()
1191 mixer->set_input_left = mixer_set_input_left; in ct_mixer_create()
1192 mixer->set_input_right = mixer_set_input_right; in ct_mixer_create()
1194 mixer->resume = mixer_resume; in ct_mixer_create()
1198 err = ct_mixer_get_resources(mixer); in ct_mixer_create()
1203 ct_mixer_topology_build(mixer); in ct_mixer_create()
1205 *rmixer = mixer; in ct_mixer_create()
1210 ct_mixer_destroy(mixer); in ct_mixer_create()
1222 err = ct_mixer_kcontrols_create((struct ct_mixer *)atc->mixer); in ct_alsa_mix_create()