Lines Matching refs:atc

82 	int (*create)(struct ct_atc *atc,
128 atc_pcm_release_resources(struct ct_atc *atc, struct ct_atc_pcm *apcm);
135 static int ct_map_audio_buffer(struct ct_atc *atc, struct ct_atc_pcm *apcm) in ct_map_audio_buffer() argument
144 vm = atc->vm; in ct_map_audio_buffer()
154 static void ct_unmap_audio_buffer(struct ct_atc *atc, struct ct_atc_pcm *apcm) in ct_unmap_audio_buffer() argument
161 vm = atc->vm; in ct_unmap_audio_buffer()
168 static unsigned long atc_get_ptp_phys(struct ct_atc *atc, int index) in atc_get_ptp_phys() argument
170 return atc->vm->get_ptp_phys(atc->vm, index); in atc_get_ptp_phys()
242 static int atc_pcm_playback_prepare(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_playback_prepare() argument
244 struct src_mgr *src_mgr = atc->rsc_mgrs[SRC]; in atc_pcm_playback_prepare()
245 struct amixer_mgr *amixer_mgr = atc->rsc_mgrs[AMIXER]; in atc_pcm_playback_prepare()
256 atc_pcm_release_resources(atc, apcm); in atc_pcm_playback_prepare()
260 desc.msr = atc->msr; in atc_pcm_playback_prepare()
267 (atc->rsr * atc->msr)); in atc_pcm_playback_prepare()
272 atc->card)); in atc_pcm_playback_prepare()
282 mix_dsc.msr = atc->msr; in atc_pcm_playback_prepare()
293 err = ct_map_audio_buffer(atc, apcm); in atc_pcm_playback_prepare()
301 mutex_lock(&atc->atc_mutex); in atc_pcm_playback_prepare()
303 INIT_VOL, atc->pcm[i+device*2]); in atc_pcm_playback_prepare()
304 mutex_unlock(&atc->atc_mutex); in atc_pcm_playback_prepare()
315 atc_pcm_release_resources(atc, apcm); in atc_pcm_playback_prepare()
320 atc_pcm_release_resources(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_release_resources() argument
322 struct src_mgr *src_mgr = atc->rsc_mgrs[SRC]; in atc_pcm_release_resources()
323 struct srcimp_mgr *srcimp_mgr = atc->rsc_mgrs[SRCIMP]; in atc_pcm_release_resources()
324 struct amixer_mgr *amixer_mgr = atc->rsc_mgrs[AMIXER]; in atc_pcm_release_resources()
325 struct sum_mgr *sum_mgr = atc->rsc_mgrs[SUM]; in atc_pcm_release_resources()
370 ct_unmap_audio_buffer(atc, apcm); in atc_pcm_release_resources()
377 static int atc_pcm_playback_start(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_playback_start() argument
402 static int atc_pcm_stop(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_stop() argument
429 atc_pcm_playback_position(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_playback_position() argument
440 dev_dbg(atc->card->dev, in atc_pcm_playback_position()
461 static void setup_src_node_conf(struct ct_atc *atc, struct ct_atc_pcm *apcm, in setup_src_node_conf() argument
467 pitch = atc_get_pitch((atc->rsr * atc->msr), in setup_src_node_conf()
471 if (1 == atc->msr) { /* FIXME: do we really need SRC here if pitch==1 */ in setup_src_node_conf()
476 } else if (2 <= atc->msr) { in setup_src_node_conf()
480 conf[0].pitch = (atc->msr << 24); in setup_src_node_conf()
482 conf[0].imp_msr = atc->msr; in setup_src_node_conf()
484 conf[1].pitch = atc_get_pitch(atc->rsr, in setup_src_node_conf()
494 = conf[0].imp_msr = atc->msr; in setup_src_node_conf()
502 atc_pcm_capture_get_resources(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_capture_get_resources() argument
504 struct src_mgr *src_mgr = atc->rsc_mgrs[SRC]; in atc_pcm_capture_get_resources()
505 struct srcimp_mgr *srcimp_mgr = atc->rsc_mgrs[SRCIMP]; in atc_pcm_capture_get_resources()
506 struct amixer_mgr *amixer_mgr = atc->rsc_mgrs[AMIXER]; in atc_pcm_capture_get_resources()
507 struct sum_mgr *sum_mgr = atc->rsc_mgrs[SUM]; in atc_pcm_capture_get_resources()
520 atc_pcm_release_resources(atc, apcm); in atc_pcm_capture_get_resources()
528 pitch = atc_get_pitch((atc->rsr * atc->msr), in atc_pcm_capture_get_resources()
531 setup_src_node_conf(atc, apcm, src_node_conf, &n_srcc); in atc_pcm_capture_get_resources()
538 n_amixer += multi * atc->msr; in atc_pcm_capture_get_resources()
539 n_srcimp += multi * atc->msr; in atc_pcm_capture_get_resources()
584 mix_dsc.msr = atc->msr; in atc_pcm_capture_get_resources()
599 sum_dsc.msr = atc->msr; in atc_pcm_capture_get_resources()
604 pitch = atc_get_pitch((atc->rsr * atc->msr), in atc_pcm_capture_get_resources()
611 srcimp_dsc.msr = (pitch <= 0x8000000) ? atc->msr : 1; in atc_pcm_capture_get_resources()
635 err = ct_map_audio_buffer(atc, apcm); in atc_pcm_capture_get_resources()
642 atc_pcm_release_resources(atc, apcm); in atc_pcm_capture_get_resources()
646 static int atc_pcm_capture_prepare(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_capture_prepare() argument
651 struct ct_mixer *mixer = atc->mixer; in atc_pcm_capture_prepare()
658 atc_pcm_release_resources(atc, apcm); in atc_pcm_capture_prepare()
661 err = atc_pcm_capture_get_resources(atc, apcm); in atc_pcm_capture_prepare()
691 pitch = atc_get_pitch((atc->rsr * atc->msr), in atc_pcm_capture_prepare()
699 for (j = 0; j < atc->msr; j++) { in atc_pcm_capture_prepare()
724 static int atc_pcm_capture_start(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_capture_start() argument
727 struct src_mgr *src_mgr = atc->rsc_mgrs[SRC]; in atc_pcm_capture_start()
745 atc->card)); in atc_pcm_capture_start()
775 atc_pcm_capture_position(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_capture_position() argument
784 static int spdif_passthru_playback_get_resources(struct ct_atc *atc, in spdif_passthru_playback_get_resources() argument
787 struct src_mgr *src_mgr = atc->rsc_mgrs[SRC]; in spdif_passthru_playback_get_resources()
788 struct amixer_mgr *amixer_mgr = atc->rsc_mgrs[AMIXER]; in spdif_passthru_playback_get_resources()
794 unsigned int pitch, rsr = atc->pll_rate; in spdif_passthru_playback_get_resources()
797 atc_pcm_release_resources(atc, apcm); in spdif_passthru_playback_get_resources()
815 atc->card)); in spdif_passthru_playback_get_resources()
837 err = ct_map_audio_buffer(atc, apcm); in spdif_passthru_playback_get_resources()
844 atc_pcm_release_resources(atc, apcm); in spdif_passthru_playback_get_resources()
848 static int atc_pll_init(struct ct_atc *atc, int rate) in atc_pll_init() argument
850 struct hw *hw = atc->hw; in atc_pll_init()
853 atc->pll_rate = err ? 0 : rate; in atc_pll_init()
858 spdif_passthru_playback_setup(struct ct_atc *atc, struct ct_atc_pcm *apcm) in spdif_passthru_playback_setup() argument
860 struct dao *dao = container_of(atc->daios[SPDIFOO], struct dao, daio); in spdif_passthru_playback_setup()
880 mutex_lock(&atc->atc_mutex); in spdif_passthru_playback_setup()
888 if ((rate != atc->pll_rate) && (32000 != rate)) in spdif_passthru_playback_setup()
889 err = atc_pll_init(atc, rate); in spdif_passthru_playback_setup()
890 mutex_unlock(&atc->atc_mutex); in spdif_passthru_playback_setup()
896 spdif_passthru_playback_prepare(struct ct_atc *atc, struct ct_atc_pcm *apcm) in spdif_passthru_playback_prepare() argument
904 atc_pcm_release_resources(atc, apcm); in spdif_passthru_playback_prepare()
908 err = spdif_passthru_playback_setup(atc, apcm); in spdif_passthru_playback_prepare()
913 err = spdif_passthru_playback_get_resources(atc, apcm); in spdif_passthru_playback_prepare()
927 mutex_lock(&atc->atc_mutex); in spdif_passthru_playback_prepare()
928 dao = container_of(atc->daios[SPDIFOO], struct dao, daio); in spdif_passthru_playback_prepare()
933 mutex_unlock(&atc->atc_mutex); in spdif_passthru_playback_prepare()
940 static int atc_select_line_in(struct ct_atc *atc) in atc_select_line_in() argument
942 struct hw *hw = atc->hw; in atc_select_line_in()
943 struct ct_mixer *mixer = atc->mixer; in atc_select_line_in()
954 src = atc->srcs[2]; in atc_select_line_in()
956 src = atc->srcs[3]; in atc_select_line_in()
962 static int atc_select_mic_in(struct ct_atc *atc) in atc_select_mic_in() argument
964 struct hw *hw = atc->hw; in atc_select_mic_in()
965 struct ct_mixer *mixer = atc->mixer; in atc_select_mic_in()
976 src = atc->srcs[2]; in atc_select_mic_in()
978 src = atc->srcs[3]; in atc_select_mic_in()
984 static struct capabilities atc_capabilities(struct ct_atc *atc) in atc_capabilities() argument
986 struct hw *hw = atc->hw; in atc_capabilities()
991 static int atc_output_switch_get(struct ct_atc *atc) in atc_output_switch_get() argument
993 struct hw *hw = atc->hw; in atc_output_switch_get()
998 static int atc_output_switch_put(struct ct_atc *atc, int position) in atc_output_switch_put() argument
1000 struct hw *hw = atc->hw; in atc_output_switch_put()
1005 static int atc_mic_source_switch_get(struct ct_atc *atc) in atc_mic_source_switch_get() argument
1007 struct hw *hw = atc->hw; in atc_mic_source_switch_get()
1012 static int atc_mic_source_switch_put(struct ct_atc *atc, int position) in atc_mic_source_switch_put() argument
1014 struct hw *hw = atc->hw; in atc_mic_source_switch_put()
1019 static int atc_select_digit_io(struct ct_atc *atc) in atc_select_digit_io() argument
1021 struct hw *hw = atc->hw; in atc_select_digit_io()
1031 static int atc_daio_unmute(struct ct_atc *atc, unsigned char state, int type) in atc_daio_unmute() argument
1033 struct daio_mgr *daio_mgr = atc->rsc_mgrs[DAIO]; in atc_daio_unmute()
1036 daio_mgr->daio_enable(daio_mgr, atc->daios[type]); in atc_daio_unmute()
1038 daio_mgr->daio_disable(daio_mgr, atc->daios[type]); in atc_daio_unmute()
1046 atc_dao_get_status(struct ct_atc *atc, unsigned int *status, int type) in atc_dao_get_status() argument
1048 struct dao *dao = container_of(atc->daios[type], struct dao, daio); in atc_dao_get_status()
1053 atc_dao_set_status(struct ct_atc *atc, unsigned int status, int type) in atc_dao_set_status() argument
1055 struct dao *dao = container_of(atc->daios[type], struct dao, daio); in atc_dao_set_status()
1062 static int atc_line_front_unmute(struct ct_atc *atc, unsigned char state) in atc_line_front_unmute() argument
1064 return atc_daio_unmute(atc, state, LINEO1); in atc_line_front_unmute()
1067 static int atc_line_surround_unmute(struct ct_atc *atc, unsigned char state) in atc_line_surround_unmute() argument
1069 return atc_daio_unmute(atc, state, LINEO2); in atc_line_surround_unmute()
1072 static int atc_line_clfe_unmute(struct ct_atc *atc, unsigned char state) in atc_line_clfe_unmute() argument
1074 return atc_daio_unmute(atc, state, LINEO3); in atc_line_clfe_unmute()
1077 static int atc_line_rear_unmute(struct ct_atc *atc, unsigned char state) in atc_line_rear_unmute() argument
1079 return atc_daio_unmute(atc, state, LINEO4); in atc_line_rear_unmute()
1082 static int atc_line_in_unmute(struct ct_atc *atc, unsigned char state) in atc_line_in_unmute() argument
1084 return atc_daio_unmute(atc, state, LINEIM); in atc_line_in_unmute()
1087 static int atc_mic_unmute(struct ct_atc *atc, unsigned char state) in atc_mic_unmute() argument
1089 return atc_daio_unmute(atc, state, MIC); in atc_mic_unmute()
1092 static int atc_spdif_out_unmute(struct ct_atc *atc, unsigned char state) in atc_spdif_out_unmute() argument
1094 return atc_daio_unmute(atc, state, SPDIFOO); in atc_spdif_out_unmute()
1097 static int atc_spdif_in_unmute(struct ct_atc *atc, unsigned char state) in atc_spdif_in_unmute() argument
1099 return atc_daio_unmute(atc, state, SPDIFIO); in atc_spdif_in_unmute()
1102 static int atc_spdif_out_get_status(struct ct_atc *atc, unsigned int *status) in atc_spdif_out_get_status() argument
1104 return atc_dao_get_status(atc, status, SPDIFOO); in atc_spdif_out_get_status()
1107 static int atc_spdif_out_set_status(struct ct_atc *atc, unsigned int status) in atc_spdif_out_set_status() argument
1109 return atc_dao_set_status(atc, status, SPDIFOO); in atc_spdif_out_set_status()
1112 static int atc_spdif_out_passthru(struct ct_atc *atc, unsigned char state) in atc_spdif_out_passthru() argument
1117 struct ct_mixer *mixer = atc->mixer; in atc_spdif_out_passthru()
1121 mutex_lock(&atc->atc_mutex); in atc_spdif_out_passthru()
1122 dao = container_of(atc->daios[SPDIFOO], struct dao, daio); in atc_spdif_out_passthru()
1123 da_dsc.msr = state ? 1 : atc->msr; in atc_spdif_out_passthru()
1134 if (atc->pll_rate != atc->rsr) in atc_spdif_out_passthru()
1135 err = atc_pll_init(atc, atc->rsr); in atc_spdif_out_passthru()
1139 mutex_unlock(&atc->atc_mutex); in atc_spdif_out_passthru()
1144 static int atc_release_resources(struct ct_atc *atc) in atc_release_resources() argument
1157 if (atc->mixer) { in atc_release_resources()
1158 mixer = atc->mixer; in atc_release_resources()
1167 if (atc->daios) { in atc_release_resources()
1168 daio_mgr = (struct daio_mgr *)atc->rsc_mgrs[DAIO]; in atc_release_resources()
1169 for (i = 0; i < atc->n_daio; i++) { in atc_release_resources()
1170 daio = atc->daios[i]; in atc_release_resources()
1178 kfree(atc->daios); in atc_release_resources()
1179 atc->daios = NULL; in atc_release_resources()
1182 if (atc->pcm) { in atc_release_resources()
1183 sum_mgr = atc->rsc_mgrs[SUM]; in atc_release_resources()
1184 for (i = 0; i < atc->n_pcm; i++) in atc_release_resources()
1185 sum_mgr->put_sum(sum_mgr, atc->pcm[i]); in atc_release_resources()
1187 kfree(atc->pcm); in atc_release_resources()
1188 atc->pcm = NULL; in atc_release_resources()
1191 if (atc->srcs) { in atc_release_resources()
1192 src_mgr = atc->rsc_mgrs[SRC]; in atc_release_resources()
1193 for (i = 0; i < atc->n_src; i++) in atc_release_resources()
1194 src_mgr->put_src(src_mgr, atc->srcs[i]); in atc_release_resources()
1196 kfree(atc->srcs); in atc_release_resources()
1197 atc->srcs = NULL; in atc_release_resources()
1200 if (atc->srcimps) { in atc_release_resources()
1201 srcimp_mgr = atc->rsc_mgrs[SRCIMP]; in atc_release_resources()
1202 for (i = 0; i < atc->n_srcimp; i++) { in atc_release_resources()
1203 srcimp = atc->srcimps[i]; in atc_release_resources()
1205 srcimp_mgr->put_srcimp(srcimp_mgr, atc->srcimps[i]); in atc_release_resources()
1207 kfree(atc->srcimps); in atc_release_resources()
1208 atc->srcimps = NULL; in atc_release_resources()
1214 static int ct_atc_destroy(struct ct_atc *atc) in ct_atc_destroy() argument
1218 if (!atc) in ct_atc_destroy()
1221 if (atc->timer) { in ct_atc_destroy()
1222 ct_timer_free(atc->timer); in ct_atc_destroy()
1223 atc->timer = NULL; in ct_atc_destroy()
1226 atc_release_resources(atc); in ct_atc_destroy()
1229 if (atc->mixer) in ct_atc_destroy()
1230 ct_mixer_destroy(atc->mixer); in ct_atc_destroy()
1233 if (rsc_mgr_funcs[i].destroy && atc->rsc_mgrs[i]) in ct_atc_destroy()
1234 rsc_mgr_funcs[i].destroy(atc->rsc_mgrs[i]); in ct_atc_destroy()
1238 if (atc->hw) in ct_atc_destroy()
1239 destroy_hw_obj(atc->hw); in ct_atc_destroy()
1242 if (atc->vm) { in ct_atc_destroy()
1243 ct_vm_destroy(atc->vm); in ct_atc_destroy()
1244 atc->vm = NULL; in ct_atc_destroy()
1247 kfree(atc); in ct_atc_destroy()
1254 struct ct_atc *atc = dev->device_data; in atc_dev_free() local
1255 return ct_atc_destroy(atc); in atc_dev_free()
1258 static int atc_identify_card(struct ct_atc *atc, unsigned int ssid) in atc_identify_card() argument
1264 switch (atc->chip_type) { in atc_identify_card()
1266 atc->chip_name = "20K1"; in atc_identify_card()
1270 atc->chip_name = "20K2"; in atc_identify_card()
1280 vendor_id = atc->pci->subsystem_vendor; in atc_identify_card()
1281 device_id = atc->pci->subsystem_device; in atc_identify_card()
1286 dev_err(atc->card->dev, in atc_identify_card()
1291 atc->model = p->value; in atc_identify_card()
1293 if (atc->chip_type == ATC20K1) in atc_identify_card()
1294 atc->model = CT20K1_UNKNOWN; in atc_identify_card()
1296 atc->model = CT20K2_UNKNOWN; in atc_identify_card()
1298 atc->model_name = ct_subsys_name[atc->model]; in atc_identify_card()
1299 dev_info(atc->card->dev, "chip %s model %s (%04x:%04x) is found\n", in atc_identify_card()
1300 atc->chip_name, atc->model_name, in atc_identify_card()
1305 int ct_atc_create_alsa_devs(struct ct_atc *atc) in ct_atc_create_alsa_devs() argument
1310 alsa_dev_funcs[MIXER].public_name = atc->chip_name; in ct_atc_create_alsa_devs()
1316 err = alsa_dev_funcs[i].create(atc, i, in ct_atc_create_alsa_devs()
1319 dev_err(atc->card->dev, in ct_atc_create_alsa_devs()
1328 static int atc_create_hw_devs(struct ct_atc *atc) in atc_create_hw_devs() argument
1334 err = create_hw_obj(atc->pci, atc->chip_type, atc->model, &hw); in atc_create_hw_devs()
1336 dev_err(atc->card->dev, "Failed to create hw obj!!!\n"); in atc_create_hw_devs()
1339 hw->card = atc->card; in atc_create_hw_devs()
1340 atc->hw = hw; in atc_create_hw_devs()
1343 info.rsr = atc->rsr; in atc_create_hw_devs()
1344 info.msr = atc->msr; in atc_create_hw_devs()
1345 info.vm_pgt_phys = atc_get_ptp_phys(atc, 0); in atc_create_hw_devs()
1354 err = rsc_mgr_funcs[i].create(atc->hw, &atc->rsc_mgrs[i]); in atc_create_hw_devs()
1356 dev_err(atc->card->dev, in atc_create_hw_devs()
1365 static int atc_get_resources(struct ct_atc *atc) in atc_get_resources() argument
1377 num_daios = ((atc->model == CTSB1270) ? 8 : 7); in atc_get_resources()
1378 num_srcs = ((atc->model == CTSB1270) ? 6 : 4); in atc_get_resources()
1380 atc->daios = kcalloc(num_daios, sizeof(void *), GFP_KERNEL); in atc_get_resources()
1381 if (!atc->daios) in atc_get_resources()
1384 atc->srcs = kcalloc(num_srcs, sizeof(void *), GFP_KERNEL); in atc_get_resources()
1385 if (!atc->srcs) in atc_get_resources()
1388 atc->srcimps = kcalloc(num_srcs, sizeof(void *), GFP_KERNEL); in atc_get_resources()
1389 if (!atc->srcimps) in atc_get_resources()
1392 atc->pcm = kcalloc(2 * 4, sizeof(void *), GFP_KERNEL); in atc_get_resources()
1393 if (!atc->pcm) in atc_get_resources()
1396 daio_mgr = (struct daio_mgr *)atc->rsc_mgrs[DAIO]; in atc_get_resources()
1397 da_desc.msr = atc->msr; in atc_get_resources()
1398 for (i = 0, atc->n_daio = 0; i < num_daios; i++) { in atc_get_resources()
1399 da_desc.type = (atc->model != CTSB073X) ? i : in atc_get_resources()
1402 (struct daio **)&atc->daios[i]); in atc_get_resources()
1404 dev_err(atc->card->dev, in atc_get_resources()
1409 atc->n_daio++; in atc_get_resources()
1412 src_mgr = atc->rsc_mgrs[SRC]; in atc_get_resources()
1414 src_dsc.msr = atc->msr; in atc_get_resources()
1416 for (i = 0, atc->n_src = 0; i < num_srcs; i++) { in atc_get_resources()
1418 (struct src **)&atc->srcs[i]); in atc_get_resources()
1422 atc->n_src++; in atc_get_resources()
1425 srcimp_mgr = atc->rsc_mgrs[SRCIMP]; in atc_get_resources()
1427 for (i = 0, atc->n_srcimp = 0; i < num_srcs; i++) { in atc_get_resources()
1429 (struct srcimp **)&atc->srcimps[i]); in atc_get_resources()
1433 atc->n_srcimp++; in atc_get_resources()
1436 sum_mgr = atc->rsc_mgrs[SUM]; in atc_get_resources()
1437 sum_dsc.msr = atc->msr; in atc_get_resources()
1438 for (i = 0, atc->n_pcm = 0; i < (2*4); i++) { in atc_get_resources()
1440 (struct sum **)&atc->pcm[i]); in atc_get_resources()
1444 atc->n_pcm++; in atc_get_resources()
1489 static void atc_connect_resources(struct ct_atc *atc) in atc_connect_resources() argument
1499 mixer = atc->mixer; in atc_connect_resources()
1503 dao = container_of(atc->daios[j], struct dao, daio); in atc_connect_resources()
1508 dai = container_of(atc->daios[LINEIM], struct dai, daio); in atc_connect_resources()
1509 atc_connect_dai(atc->rsc_mgrs[SRC], dai, in atc_connect_resources()
1510 (struct src **)&atc->srcs[2], in atc_connect_resources()
1511 (struct srcimp **)&atc->srcimps[2]); in atc_connect_resources()
1512 src = atc->srcs[2]; in atc_connect_resources()
1514 src = atc->srcs[3]; in atc_connect_resources()
1517 if (atc->model == CTSB1270) { in atc_connect_resources()
1519 dai = container_of(atc->daios[MIC], struct dai, daio); in atc_connect_resources()
1520 atc_connect_dai(atc->rsc_mgrs[SRC], dai, in atc_connect_resources()
1521 (struct src **)&atc->srcs[4], in atc_connect_resources()
1522 (struct srcimp **)&atc->srcimps[4]); in atc_connect_resources()
1523 src = atc->srcs[4]; in atc_connect_resources()
1525 src = atc->srcs[5]; in atc_connect_resources()
1529 dai = container_of(atc->daios[SPDIFIO], struct dai, daio); in atc_connect_resources()
1530 atc_connect_dai(atc->rsc_mgrs[SRC], dai, in atc_connect_resources()
1531 (struct src **)&atc->srcs[0], in atc_connect_resources()
1532 (struct srcimp **)&atc->srcimps[0]); in atc_connect_resources()
1534 src = atc->srcs[0]; in atc_connect_resources()
1536 src = atc->srcs[1]; in atc_connect_resources()
1540 sum = atc->pcm[j]; in atc_connect_resources()
1542 sum = atc->pcm[j+1]; in atc_connect_resources()
1548 static int atc_suspend(struct ct_atc *atc) in atc_suspend() argument
1550 struct hw *hw = atc->hw; in atc_suspend()
1552 snd_power_change_state(atc->card, SNDRV_CTL_POWER_D3hot); in atc_suspend()
1554 atc_release_resources(atc); in atc_suspend()
1561 static int atc_hw_resume(struct ct_atc *atc) in atc_hw_resume() argument
1563 struct hw *hw = atc->hw; in atc_hw_resume()
1567 info.rsr = atc->rsr; in atc_hw_resume()
1568 info.msr = atc->msr; in atc_hw_resume()
1569 info.vm_pgt_phys = atc_get_ptp_phys(atc, 0); in atc_hw_resume()
1573 static int atc_resources_resume(struct ct_atc *atc) in atc_resources_resume() argument
1579 err = atc_get_resources(atc); in atc_resources_resume()
1581 atc_release_resources(atc); in atc_resources_resume()
1586 atc_connect_resources(atc); in atc_resources_resume()
1588 mixer = atc->mixer; in atc_resources_resume()
1594 static int atc_resume(struct ct_atc *atc) in atc_resume() argument
1599 err = atc_hw_resume(atc); in atc_resume()
1601 dev_err(atc->card->dev, in atc_resume()
1603 snd_card_disconnect(atc->card); in atc_resume()
1607 err = atc_resources_resume(atc); in atc_resume()
1611 snd_power_change_state(atc->card, SNDRV_CTL_POWER_D0); in atc_resume()
1677 struct ct_atc *atc; in ct_atc_create() local
1685 atc = kzalloc(sizeof(*atc), GFP_KERNEL); in ct_atc_create()
1686 if (!atc) in ct_atc_create()
1690 *atc = atc_preset; in ct_atc_create()
1692 atc->card = card; in ct_atc_create()
1693 atc->pci = pci; in ct_atc_create()
1694 atc->rsr = rsr; in ct_atc_create()
1695 atc->msr = msr; in ct_atc_create()
1696 atc->chip_type = chip_type; in ct_atc_create()
1698 mutex_init(&atc->atc_mutex); in ct_atc_create()
1701 err = atc_identify_card(atc, ssid); in ct_atc_create()
1708 err = ct_vm_create(&atc->vm, pci); in ct_atc_create()
1713 err = atc_create_hw_devs(atc); in ct_atc_create()
1717 err = ct_mixer_create(atc, (struct ct_mixer **)&atc->mixer); in ct_atc_create()
1724 err = atc_get_resources(atc); in ct_atc_create()
1729 atc_connect_resources(atc); in ct_atc_create()
1731 atc->timer = ct_timer_new(atc); in ct_atc_create()
1732 if (!atc->timer) { in ct_atc_create()
1737 err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, atc, &ops); in ct_atc_create()
1741 *ratc = atc; in ct_atc_create()
1745 ct_atc_destroy(atc); in ct_atc_create()