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 = kzalloc(sizeof(void *)*(NUM_CT_AMIXERS*CHN_NUM), in ct_mixer_get_mem()
915 if (!mixer->amixers) { in ct_mixer_get_mem()
919 mixer->sums = kzalloc(sizeof(void *)*(NUM_CT_SUMS*CHN_NUM), GFP_KERNEL); in ct_mixer_get_mem()
920 if (!mixer->sums) { in ct_mixer_get_mem()
925 *rmixer = mixer; in ct_mixer_get_mem()
929 kfree(mixer->amixers); in ct_mixer_get_mem()
931 kfree(mixer); in ct_mixer_get_mem()
935 static int ct_mixer_topology_build(struct ct_mixer *mixer) in ct_mixer_topology_build() argument
946 amix_d = mixer->amixers[i*CHN_NUM]; in ct_mixer_topology_build()
947 sum = mixer->sums[j*CHN_NUM]; in ct_mixer_topology_build()
949 amix_d = mixer->amixers[i*CHN_NUM+1]; in ct_mixer_topology_build()
950 sum = mixer->sums[j*CHN_NUM+1]; in ct_mixer_topology_build()
957 amix_d = mixer->amixers[i*CHN_NUM]; in ct_mixer_topology_build()
958 amix_s = mixer->amixers[j*CHN_NUM]; in ct_mixer_topology_build()
960 amix_d = mixer->amixers[i*CHN_NUM+1]; in ct_mixer_topology_build()
961 amix_s = mixer->amixers[j*CHN_NUM+1]; in ct_mixer_topology_build()
966 amix_d = mixer->amixers[AMIXER_SPDIFO*CHN_NUM]; in ct_mixer_topology_build()
967 amix_s = mixer->amixers[AMIXER_MASTER_F*CHN_NUM]; in ct_mixer_topology_build()
969 amix_d = mixer->amixers[AMIXER_SPDIFO*CHN_NUM+1]; in ct_mixer_topology_build()
970 amix_s = mixer->amixers[AMIXER_MASTER_F*CHN_NUM+1]; in ct_mixer_topology_build()
975 amix_d = mixer->amixers[i*CHN_NUM]; in ct_mixer_topology_build()
976 sum = mixer->sums[j*CHN_NUM]; in ct_mixer_topology_build()
978 amix_d = mixer->amixers[i*CHN_NUM+1]; in ct_mixer_topology_build()
979 sum = mixer->sums[j*CHN_NUM+1]; in ct_mixer_topology_build()
984 amix_d = mixer->amixers[AMIXER_LINEIN*CHN_NUM]; in ct_mixer_topology_build()
985 sum = mixer->sums[SUM_IN_F*CHN_NUM]; in ct_mixer_topology_build()
987 amix_d = mixer->amixers[AMIXER_LINEIN*CHN_NUM+1]; in ct_mixer_topology_build()
988 sum = mixer->sums[SUM_IN_F*CHN_NUM+1]; in ct_mixer_topology_build()
992 amix_d = mixer->amixers[AMIXER_MIC*CHN_NUM]; in ct_mixer_topology_build()
993 sum = mixer->sums[SUM_IN_F*CHN_NUM]; in ct_mixer_topology_build()
995 amix_d = mixer->amixers[AMIXER_MIC*CHN_NUM+1]; in ct_mixer_topology_build()
996 sum = mixer->sums[SUM_IN_F*CHN_NUM+1]; in ct_mixer_topology_build()
1000 amix_d = mixer->amixers[AMIXER_SPDIFI*CHN_NUM]; in ct_mixer_topology_build()
1001 sum = mixer->sums[SUM_IN_F*CHN_NUM]; in ct_mixer_topology_build()
1003 amix_d = mixer->amixers[AMIXER_SPDIFI*CHN_NUM+1]; in ct_mixer_topology_build()
1004 sum = mixer->sums[SUM_IN_F*CHN_NUM+1]; in ct_mixer_topology_build()
1008 amix_d = mixer->amixers[AMIXER_MASTER_F_C*CHN_NUM]; in ct_mixer_topology_build()
1009 sum = mixer->sums[SUM_IN_F_C*CHN_NUM]; in ct_mixer_topology_build()
1011 amix_d = mixer->amixers[AMIXER_MASTER_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1012 sum = mixer->sums[SUM_IN_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1016 amix_d = mixer->amixers[AMIXER_PCM_F_C*CHN_NUM]; in ct_mixer_topology_build()
1017 sum = mixer->sums[SUM_IN_F_C*CHN_NUM]; in ct_mixer_topology_build()
1019 amix_d = mixer->amixers[AMIXER_PCM_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1020 sum = mixer->sums[SUM_IN_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1024 amix_d = mixer->amixers[AMIXER_LINEIN_C*CHN_NUM]; in ct_mixer_topology_build()
1025 sum = mixer->sums[SUM_IN_F_C*CHN_NUM]; in ct_mixer_topology_build()
1027 amix_d = mixer->amixers[AMIXER_LINEIN_C*CHN_NUM+1]; in ct_mixer_topology_build()
1028 sum = mixer->sums[SUM_IN_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1032 amix_d = mixer->amixers[AMIXER_MIC_C*CHN_NUM]; in ct_mixer_topology_build()
1033 sum = mixer->sums[SUM_IN_F_C*CHN_NUM]; in ct_mixer_topology_build()
1035 amix_d = mixer->amixers[AMIXER_MIC_C*CHN_NUM+1]; in ct_mixer_topology_build()
1036 sum = mixer->sums[SUM_IN_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1040 amix_d = mixer->amixers[AMIXER_SPDIFI_C*CHN_NUM]; in ct_mixer_topology_build()
1041 sum = mixer->sums[SUM_IN_F_C*CHN_NUM]; in ct_mixer_topology_build()
1043 amix_d = mixer->amixers[AMIXER_SPDIFI_C*CHN_NUM+1]; in ct_mixer_topology_build()
1044 sum = mixer->sums[SUM_IN_F_C*CHN_NUM+1]; in ct_mixer_topology_build()
1078 static int mixer_get_output_ports(struct ct_mixer *mixer, in mixer_get_output_ports() argument
1085 *rleft = &((struct amixer *)mixer->amixers[amix*CHN_NUM])->rsc; in mixer_get_output_ports()
1089 &((struct amixer *)mixer->amixers[amix*CHN_NUM+1])->rsc; in mixer_get_output_ports()
1094 static int mixer_set_input_left(struct ct_mixer *mixer, in mixer_set_input_left() argument
1099 mixer_set_input_port(mixer->amixers[amix*CHN_NUM], rsc); in mixer_set_input_left()
1102 mixer_set_input_port(mixer->amixers[amix*CHN_NUM], rsc); in mixer_set_input_left()
1108 mixer_set_input_right(struct ct_mixer *mixer, in mixer_set_input_right() argument
1113 mixer_set_input_port(mixer->amixers[amix*CHN_NUM+1], rsc); in mixer_set_input_right()
1116 mixer_set_input_port(mixer->amixers[amix*CHN_NUM+1], rsc); in mixer_set_input_right()
1122 static int mixer_resume(struct ct_mixer *mixer) in mixer_resume() argument
1129 amixer = mixer->amixers[i]; in mixer_resume()
1135 state = get_switch_state(mixer, i); in mixer_resume()
1136 do_switch(mixer->atc, i, state); in mixer_resume()
1143 int ct_mixer_destroy(struct ct_mixer *mixer) in ct_mixer_destroy() argument
1145 struct sum_mgr *sum_mgr = (struct sum_mgr *)mixer->atc->rsc_mgrs[SUM]; in ct_mixer_destroy()
1147 (struct amixer_mgr *)mixer->atc->rsc_mgrs[AMIXER]; in ct_mixer_destroy()
1153 if (NULL != mixer->amixers[i]) { in ct_mixer_destroy()
1154 amixer = mixer->amixers[i]; in ct_mixer_destroy()
1161 if (NULL != mixer->sums[i]) in ct_mixer_destroy()
1162 sum_mgr->put_sum(sum_mgr, (struct sum *)mixer->sums[i]); in ct_mixer_destroy()
1166 kfree(mixer->sums); in ct_mixer_destroy()
1167 kfree(mixer->amixers); in ct_mixer_destroy()
1168 kfree(mixer); in ct_mixer_destroy()
1175 struct ct_mixer *mixer; in ct_mixer_create() local
1181 err = ct_mixer_get_mem(&mixer); in ct_mixer_create()
1185 mixer->switch_state = 0; in ct_mixer_create()
1186 mixer->atc = atc; in ct_mixer_create()
1188 mixer->get_output_ports = mixer_get_output_ports; in ct_mixer_create()
1189 mixer->set_input_left = mixer_set_input_left; in ct_mixer_create()
1190 mixer->set_input_right = mixer_set_input_right; in ct_mixer_create()
1192 mixer->resume = mixer_resume; in ct_mixer_create()
1196 err = ct_mixer_get_resources(mixer); in ct_mixer_create()
1201 ct_mixer_topology_build(mixer); in ct_mixer_create()
1203 *rmixer = mixer; in ct_mixer_create()
1208 ct_mixer_destroy(mixer); in ct_mixer_create()
1220 err = ct_mixer_kcontrols_create((struct ct_mixer *)atc->mixer); in ct_alsa_mix_create()