Lines Matching refs:atc

83 	int (*create)(struct ct_atc *atc,
129 atc_pcm_release_resources(struct ct_atc *atc, struct ct_atc_pcm *apcm);
136 static int ct_map_audio_buffer(struct ct_atc *atc, struct ct_atc_pcm *apcm) in ct_map_audio_buffer() argument
145 vm = atc->vm; in ct_map_audio_buffer()
155 static void ct_unmap_audio_buffer(struct ct_atc *atc, struct ct_atc_pcm *apcm) in ct_unmap_audio_buffer() argument
162 vm = atc->vm; in ct_unmap_audio_buffer()
169 static unsigned long atc_get_ptp_phys(struct ct_atc *atc, int index) in atc_get_ptp_phys() argument
171 return atc->vm->get_ptp_phys(atc->vm, index); in atc_get_ptp_phys()
243 static int atc_pcm_playback_prepare(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_playback_prepare() argument
245 struct src_mgr *src_mgr = atc->rsc_mgrs[SRC]; in atc_pcm_playback_prepare()
246 struct amixer_mgr *amixer_mgr = atc->rsc_mgrs[AMIXER]; in atc_pcm_playback_prepare()
257 atc_pcm_release_resources(atc, apcm); in atc_pcm_playback_prepare()
261 desc.msr = atc->msr; in atc_pcm_playback_prepare()
268 (atc->rsr * atc->msr)); in atc_pcm_playback_prepare()
273 atc->card)); in atc_pcm_playback_prepare()
283 mix_dsc.msr = atc->msr; in atc_pcm_playback_prepare()
294 err = ct_map_audio_buffer(atc, apcm); in atc_pcm_playback_prepare()
302 mutex_lock(&atc->atc_mutex); in atc_pcm_playback_prepare()
304 INIT_VOL, atc->pcm[i+device*2]); in atc_pcm_playback_prepare()
305 mutex_unlock(&atc->atc_mutex); in atc_pcm_playback_prepare()
316 atc_pcm_release_resources(atc, apcm); in atc_pcm_playback_prepare()
321 atc_pcm_release_resources(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_release_resources() argument
323 struct src_mgr *src_mgr = atc->rsc_mgrs[SRC]; in atc_pcm_release_resources()
324 struct srcimp_mgr *srcimp_mgr = atc->rsc_mgrs[SRCIMP]; in atc_pcm_release_resources()
325 struct amixer_mgr *amixer_mgr = atc->rsc_mgrs[AMIXER]; in atc_pcm_release_resources()
326 struct sum_mgr *sum_mgr = atc->rsc_mgrs[SUM]; in atc_pcm_release_resources()
371 ct_unmap_audio_buffer(atc, apcm); in atc_pcm_release_resources()
378 static int atc_pcm_playback_start(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_playback_start() argument
403 static int atc_pcm_stop(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_stop() argument
430 atc_pcm_playback_position(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_playback_position() argument
441 dev_dbg(atc->card->dev, in atc_pcm_playback_position()
462 static void setup_src_node_conf(struct ct_atc *atc, struct ct_atc_pcm *apcm, in setup_src_node_conf() argument
468 pitch = atc_get_pitch((atc->rsr * atc->msr), in setup_src_node_conf()
472 if (1 == atc->msr) { /* FIXME: do we really need SRC here if pitch==1 */ in setup_src_node_conf()
477 } else if (2 <= atc->msr) { in setup_src_node_conf()
481 conf[0].pitch = (atc->msr << 24); in setup_src_node_conf()
483 conf[0].imp_msr = atc->msr; in setup_src_node_conf()
485 conf[1].pitch = atc_get_pitch(atc->rsr, in setup_src_node_conf()
495 = conf[0].imp_msr = atc->msr; in setup_src_node_conf()
503 atc_pcm_capture_get_resources(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_capture_get_resources() argument
505 struct src_mgr *src_mgr = atc->rsc_mgrs[SRC]; in atc_pcm_capture_get_resources()
506 struct srcimp_mgr *srcimp_mgr = atc->rsc_mgrs[SRCIMP]; in atc_pcm_capture_get_resources()
507 struct amixer_mgr *amixer_mgr = atc->rsc_mgrs[AMIXER]; in atc_pcm_capture_get_resources()
508 struct sum_mgr *sum_mgr = atc->rsc_mgrs[SUM]; in atc_pcm_capture_get_resources()
521 atc_pcm_release_resources(atc, apcm); in atc_pcm_capture_get_resources()
529 pitch = atc_get_pitch((atc->rsr * atc->msr), in atc_pcm_capture_get_resources()
532 setup_src_node_conf(atc, apcm, src_node_conf, &n_srcc); in atc_pcm_capture_get_resources()
539 n_amixer += multi * atc->msr; in atc_pcm_capture_get_resources()
540 n_srcimp += multi * atc->msr; in atc_pcm_capture_get_resources()
585 mix_dsc.msr = atc->msr; in atc_pcm_capture_get_resources()
600 sum_dsc.msr = atc->msr; in atc_pcm_capture_get_resources()
605 pitch = atc_get_pitch((atc->rsr * atc->msr), in atc_pcm_capture_get_resources()
612 srcimp_dsc.msr = (pitch <= 0x8000000) ? atc->msr : 1; in atc_pcm_capture_get_resources()
636 err = ct_map_audio_buffer(atc, apcm); in atc_pcm_capture_get_resources()
643 atc_pcm_release_resources(atc, apcm); in atc_pcm_capture_get_resources()
647 static int atc_pcm_capture_prepare(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_capture_prepare() argument
652 struct ct_mixer *mixer = atc->mixer; in atc_pcm_capture_prepare()
659 atc_pcm_release_resources(atc, apcm); in atc_pcm_capture_prepare()
662 err = atc_pcm_capture_get_resources(atc, apcm); in atc_pcm_capture_prepare()
692 pitch = atc_get_pitch((atc->rsr * atc->msr), in atc_pcm_capture_prepare()
700 for (j = 0; j < atc->msr; j++) { in atc_pcm_capture_prepare()
725 static int atc_pcm_capture_start(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_capture_start() argument
728 struct src_mgr *src_mgr = atc->rsc_mgrs[SRC]; in atc_pcm_capture_start()
746 atc->card)); in atc_pcm_capture_start()
776 atc_pcm_capture_position(struct ct_atc *atc, struct ct_atc_pcm *apcm) in atc_pcm_capture_position() argument
785 static int spdif_passthru_playback_get_resources(struct ct_atc *atc, in spdif_passthru_playback_get_resources() argument
788 struct src_mgr *src_mgr = atc->rsc_mgrs[SRC]; in spdif_passthru_playback_get_resources()
789 struct amixer_mgr *amixer_mgr = atc->rsc_mgrs[AMIXER]; in spdif_passthru_playback_get_resources()
795 unsigned int pitch, rsr = atc->pll_rate; in spdif_passthru_playback_get_resources()
798 atc_pcm_release_resources(atc, apcm); in spdif_passthru_playback_get_resources()
816 atc->card)); in spdif_passthru_playback_get_resources()
838 err = ct_map_audio_buffer(atc, apcm); in spdif_passthru_playback_get_resources()
845 atc_pcm_release_resources(atc, apcm); in spdif_passthru_playback_get_resources()
849 static int atc_pll_init(struct ct_atc *atc, int rate) in atc_pll_init() argument
851 struct hw *hw = atc->hw; in atc_pll_init()
854 atc->pll_rate = err ? 0 : rate; in atc_pll_init()
859 spdif_passthru_playback_setup(struct ct_atc *atc, struct ct_atc_pcm *apcm) in spdif_passthru_playback_setup() argument
861 struct dao *dao = container_of(atc->daios[SPDIFOO], struct dao, daio); in spdif_passthru_playback_setup()
881 mutex_lock(&atc->atc_mutex); in spdif_passthru_playback_setup()
889 if ((rate != atc->pll_rate) && (32000 != rate)) in spdif_passthru_playback_setup()
890 err = atc_pll_init(atc, rate); in spdif_passthru_playback_setup()
891 mutex_unlock(&atc->atc_mutex); in spdif_passthru_playback_setup()
897 spdif_passthru_playback_prepare(struct ct_atc *atc, struct ct_atc_pcm *apcm) in spdif_passthru_playback_prepare() argument
905 atc_pcm_release_resources(atc, apcm); in spdif_passthru_playback_prepare()
909 err = spdif_passthru_playback_setup(atc, apcm); in spdif_passthru_playback_prepare()
914 err = spdif_passthru_playback_get_resources(atc, apcm); in spdif_passthru_playback_prepare()
928 mutex_lock(&atc->atc_mutex); in spdif_passthru_playback_prepare()
929 dao = container_of(atc->daios[SPDIFOO], struct dao, daio); in spdif_passthru_playback_prepare()
934 mutex_unlock(&atc->atc_mutex); in spdif_passthru_playback_prepare()
941 static int atc_select_line_in(struct ct_atc *atc) in atc_select_line_in() argument
943 struct hw *hw = atc->hw; in atc_select_line_in()
944 struct ct_mixer *mixer = atc->mixer; in atc_select_line_in()
955 src = atc->srcs[2]; in atc_select_line_in()
957 src = atc->srcs[3]; in atc_select_line_in()
963 static int atc_select_mic_in(struct ct_atc *atc) in atc_select_mic_in() argument
965 struct hw *hw = atc->hw; in atc_select_mic_in()
966 struct ct_mixer *mixer = atc->mixer; in atc_select_mic_in()
977 src = atc->srcs[2]; in atc_select_mic_in()
979 src = atc->srcs[3]; in atc_select_mic_in()
985 static struct capabilities atc_capabilities(struct ct_atc *atc) in atc_capabilities() argument
987 struct hw *hw = atc->hw; in atc_capabilities()
992 static int atc_output_switch_get(struct ct_atc *atc) in atc_output_switch_get() argument
994 struct hw *hw = atc->hw; in atc_output_switch_get()
999 static int atc_output_switch_put(struct ct_atc *atc, int position) in atc_output_switch_put() argument
1001 struct hw *hw = atc->hw; in atc_output_switch_put()
1006 static int atc_mic_source_switch_get(struct ct_atc *atc) in atc_mic_source_switch_get() argument
1008 struct hw *hw = atc->hw; in atc_mic_source_switch_get()
1013 static int atc_mic_source_switch_put(struct ct_atc *atc, int position) in atc_mic_source_switch_put() argument
1015 struct hw *hw = atc->hw; in atc_mic_source_switch_put()
1020 static int atc_select_digit_io(struct ct_atc *atc) in atc_select_digit_io() argument
1022 struct hw *hw = atc->hw; in atc_select_digit_io()
1032 static int atc_daio_unmute(struct ct_atc *atc, unsigned char state, int type) in atc_daio_unmute() argument
1034 struct daio_mgr *daio_mgr = atc->rsc_mgrs[DAIO]; in atc_daio_unmute()
1037 daio_mgr->daio_enable(daio_mgr, atc->daios[type]); in atc_daio_unmute()
1039 daio_mgr->daio_disable(daio_mgr, atc->daios[type]); in atc_daio_unmute()
1047 atc_dao_get_status(struct ct_atc *atc, unsigned int *status, int type) in atc_dao_get_status() argument
1049 struct dao *dao = container_of(atc->daios[type], struct dao, daio); in atc_dao_get_status()
1054 atc_dao_set_status(struct ct_atc *atc, unsigned int status, int type) in atc_dao_set_status() argument
1056 struct dao *dao = container_of(atc->daios[type], struct dao, daio); in atc_dao_set_status()
1063 static int atc_line_front_unmute(struct ct_atc *atc, unsigned char state) in atc_line_front_unmute() argument
1065 return atc_daio_unmute(atc, state, LINEO1); in atc_line_front_unmute()
1068 static int atc_line_surround_unmute(struct ct_atc *atc, unsigned char state) in atc_line_surround_unmute() argument
1070 return atc_daio_unmute(atc, state, LINEO2); in atc_line_surround_unmute()
1073 static int atc_line_clfe_unmute(struct ct_atc *atc, unsigned char state) in atc_line_clfe_unmute() argument
1075 return atc_daio_unmute(atc, state, LINEO3); in atc_line_clfe_unmute()
1078 static int atc_line_rear_unmute(struct ct_atc *atc, unsigned char state) in atc_line_rear_unmute() argument
1080 return atc_daio_unmute(atc, state, LINEO4); in atc_line_rear_unmute()
1083 static int atc_line_in_unmute(struct ct_atc *atc, unsigned char state) in atc_line_in_unmute() argument
1085 return atc_daio_unmute(atc, state, LINEIM); in atc_line_in_unmute()
1088 static int atc_mic_unmute(struct ct_atc *atc, unsigned char state) in atc_mic_unmute() argument
1090 return atc_daio_unmute(atc, state, MIC); in atc_mic_unmute()
1093 static int atc_spdif_out_unmute(struct ct_atc *atc, unsigned char state) in atc_spdif_out_unmute() argument
1095 return atc_daio_unmute(atc, state, SPDIFOO); in atc_spdif_out_unmute()
1098 static int atc_spdif_in_unmute(struct ct_atc *atc, unsigned char state) in atc_spdif_in_unmute() argument
1100 return atc_daio_unmute(atc, state, SPDIFIO); in atc_spdif_in_unmute()
1103 static int atc_spdif_out_get_status(struct ct_atc *atc, unsigned int *status) in atc_spdif_out_get_status() argument
1105 return atc_dao_get_status(atc, status, SPDIFOO); in atc_spdif_out_get_status()
1108 static int atc_spdif_out_set_status(struct ct_atc *atc, unsigned int status) in atc_spdif_out_set_status() argument
1110 return atc_dao_set_status(atc, status, SPDIFOO); in atc_spdif_out_set_status()
1113 static int atc_spdif_out_passthru(struct ct_atc *atc, unsigned char state) in atc_spdif_out_passthru() argument
1118 struct ct_mixer *mixer = atc->mixer; in atc_spdif_out_passthru()
1122 mutex_lock(&atc->atc_mutex); in atc_spdif_out_passthru()
1123 dao = container_of(atc->daios[SPDIFOO], struct dao, daio); in atc_spdif_out_passthru()
1124 da_dsc.msr = state ? 1 : atc->msr; in atc_spdif_out_passthru()
1135 if (atc->pll_rate != atc->rsr) in atc_spdif_out_passthru()
1136 err = atc_pll_init(atc, atc->rsr); in atc_spdif_out_passthru()
1140 mutex_unlock(&atc->atc_mutex); in atc_spdif_out_passthru()
1145 static int atc_release_resources(struct ct_atc *atc) in atc_release_resources() argument
1158 if (atc->mixer) { in atc_release_resources()
1159 mixer = atc->mixer; in atc_release_resources()
1168 if (atc->daios) { in atc_release_resources()
1169 daio_mgr = (struct daio_mgr *)atc->rsc_mgrs[DAIO]; in atc_release_resources()
1170 for (i = 0; i < atc->n_daio; i++) { in atc_release_resources()
1171 daio = atc->daios[i]; in atc_release_resources()
1179 kfree(atc->daios); in atc_release_resources()
1180 atc->daios = NULL; in atc_release_resources()
1183 if (atc->pcm) { in atc_release_resources()
1184 sum_mgr = atc->rsc_mgrs[SUM]; in atc_release_resources()
1185 for (i = 0; i < atc->n_pcm; i++) in atc_release_resources()
1186 sum_mgr->put_sum(sum_mgr, atc->pcm[i]); in atc_release_resources()
1188 kfree(atc->pcm); in atc_release_resources()
1189 atc->pcm = NULL; in atc_release_resources()
1192 if (atc->srcs) { in atc_release_resources()
1193 src_mgr = atc->rsc_mgrs[SRC]; in atc_release_resources()
1194 for (i = 0; i < atc->n_src; i++) in atc_release_resources()
1195 src_mgr->put_src(src_mgr, atc->srcs[i]); in atc_release_resources()
1197 kfree(atc->srcs); in atc_release_resources()
1198 atc->srcs = NULL; in atc_release_resources()
1201 if (atc->srcimps) { in atc_release_resources()
1202 srcimp_mgr = atc->rsc_mgrs[SRCIMP]; in atc_release_resources()
1203 for (i = 0; i < atc->n_srcimp; i++) { in atc_release_resources()
1204 srcimp = atc->srcimps[i]; in atc_release_resources()
1206 srcimp_mgr->put_srcimp(srcimp_mgr, atc->srcimps[i]); in atc_release_resources()
1208 kfree(atc->srcimps); in atc_release_resources()
1209 atc->srcimps = NULL; in atc_release_resources()
1215 static int ct_atc_destroy(struct ct_atc *atc) in ct_atc_destroy() argument
1219 if (!atc) in ct_atc_destroy()
1222 if (atc->timer) { in ct_atc_destroy()
1223 ct_timer_free(atc->timer); in ct_atc_destroy()
1224 atc->timer = NULL; in ct_atc_destroy()
1227 atc_release_resources(atc); in ct_atc_destroy()
1230 if (atc->mixer) in ct_atc_destroy()
1231 ct_mixer_destroy(atc->mixer); in ct_atc_destroy()
1234 if (rsc_mgr_funcs[i].destroy && atc->rsc_mgrs[i]) in ct_atc_destroy()
1235 rsc_mgr_funcs[i].destroy(atc->rsc_mgrs[i]); in ct_atc_destroy()
1239 if (atc->hw) in ct_atc_destroy()
1240 destroy_hw_obj(atc->hw); in ct_atc_destroy()
1243 if (atc->vm) { in ct_atc_destroy()
1244 ct_vm_destroy(atc->vm); in ct_atc_destroy()
1245 atc->vm = NULL; in ct_atc_destroy()
1248 kfree(atc); in ct_atc_destroy()
1255 struct ct_atc *atc = dev->device_data; in atc_dev_free() local
1256 return ct_atc_destroy(atc); in atc_dev_free()
1259 static int atc_identify_card(struct ct_atc *atc, unsigned int ssid) in atc_identify_card() argument
1265 switch (atc->chip_type) { in atc_identify_card()
1267 atc->chip_name = "20K1"; in atc_identify_card()
1271 atc->chip_name = "20K2"; in atc_identify_card()
1281 vendor_id = atc->pci->subsystem_vendor; in atc_identify_card()
1282 device_id = atc->pci->subsystem_device; in atc_identify_card()
1287 dev_err(atc->card->dev, in atc_identify_card()
1292 atc->model = p->value; in atc_identify_card()
1294 if (atc->chip_type == ATC20K1) in atc_identify_card()
1295 atc->model = CT20K1_UNKNOWN; in atc_identify_card()
1297 atc->model = CT20K2_UNKNOWN; in atc_identify_card()
1299 atc->model_name = ct_subsys_name[atc->model]; in atc_identify_card()
1300 dev_info(atc->card->dev, "chip %s model %s (%04x:%04x) is found\n", in atc_identify_card()
1301 atc->chip_name, atc->model_name, in atc_identify_card()
1306 int ct_atc_create_alsa_devs(struct ct_atc *atc) in ct_atc_create_alsa_devs() argument
1311 alsa_dev_funcs[MIXER].public_name = atc->chip_name; in ct_atc_create_alsa_devs()
1317 err = alsa_dev_funcs[i].create(atc, i, in ct_atc_create_alsa_devs()
1320 dev_err(atc->card->dev, in ct_atc_create_alsa_devs()
1329 static int atc_create_hw_devs(struct ct_atc *atc) in atc_create_hw_devs() argument
1335 err = create_hw_obj(atc->pci, atc->chip_type, atc->model, &hw); in atc_create_hw_devs()
1337 dev_err(atc->card->dev, "Failed to create hw obj!!!\n"); in atc_create_hw_devs()
1340 hw->card = atc->card; in atc_create_hw_devs()
1341 atc->hw = hw; in atc_create_hw_devs()
1344 info.rsr = atc->rsr; in atc_create_hw_devs()
1345 info.msr = atc->msr; in atc_create_hw_devs()
1346 info.vm_pgt_phys = atc_get_ptp_phys(atc, 0); in atc_create_hw_devs()
1355 err = rsc_mgr_funcs[i].create(atc->hw, &atc->rsc_mgrs[i]); in atc_create_hw_devs()
1357 dev_err(atc->card->dev, in atc_create_hw_devs()
1366 static int atc_get_resources(struct ct_atc *atc) in atc_get_resources() argument
1378 num_daios = ((atc->model == CTSB1270) ? 8 : 7); in atc_get_resources()
1379 num_srcs = ((atc->model == CTSB1270) ? 6 : 4); in atc_get_resources()
1381 atc->daios = kzalloc(sizeof(void *)*num_daios, GFP_KERNEL); in atc_get_resources()
1382 if (!atc->daios) in atc_get_resources()
1385 atc->srcs = kzalloc(sizeof(void *)*num_srcs, GFP_KERNEL); in atc_get_resources()
1386 if (!atc->srcs) in atc_get_resources()
1389 atc->srcimps = kzalloc(sizeof(void *)*num_srcs, GFP_KERNEL); in atc_get_resources()
1390 if (!atc->srcimps) in atc_get_resources()
1393 atc->pcm = kzalloc(sizeof(void *)*(2*4), GFP_KERNEL); in atc_get_resources()
1394 if (!atc->pcm) in atc_get_resources()
1397 daio_mgr = (struct daio_mgr *)atc->rsc_mgrs[DAIO]; in atc_get_resources()
1398 da_desc.msr = atc->msr; in atc_get_resources()
1399 for (i = 0, atc->n_daio = 0; i < num_daios; i++) { in atc_get_resources()
1400 da_desc.type = (atc->model != CTSB073X) ? i : in atc_get_resources()
1403 (struct daio **)&atc->daios[i]); in atc_get_resources()
1405 dev_err(atc->card->dev, in atc_get_resources()
1410 atc->n_daio++; in atc_get_resources()
1413 src_mgr = atc->rsc_mgrs[SRC]; in atc_get_resources()
1415 src_dsc.msr = atc->msr; in atc_get_resources()
1417 for (i = 0, atc->n_src = 0; i < num_srcs; i++) { in atc_get_resources()
1419 (struct src **)&atc->srcs[i]); in atc_get_resources()
1423 atc->n_src++; in atc_get_resources()
1426 srcimp_mgr = atc->rsc_mgrs[SRCIMP]; in atc_get_resources()
1428 for (i = 0, atc->n_srcimp = 0; i < num_srcs; i++) { in atc_get_resources()
1430 (struct srcimp **)&atc->srcimps[i]); in atc_get_resources()
1434 atc->n_srcimp++; in atc_get_resources()
1437 sum_mgr = atc->rsc_mgrs[SUM]; in atc_get_resources()
1438 sum_dsc.msr = atc->msr; in atc_get_resources()
1439 for (i = 0, atc->n_pcm = 0; i < (2*4); i++) { in atc_get_resources()
1441 (struct sum **)&atc->pcm[i]); in atc_get_resources()
1445 atc->n_pcm++; in atc_get_resources()
1490 static void atc_connect_resources(struct ct_atc *atc) in atc_connect_resources() argument
1500 mixer = atc->mixer; in atc_connect_resources()
1504 dao = container_of(atc->daios[j], struct dao, daio); in atc_connect_resources()
1509 dai = container_of(atc->daios[LINEIM], struct dai, daio); in atc_connect_resources()
1510 atc_connect_dai(atc->rsc_mgrs[SRC], dai, in atc_connect_resources()
1511 (struct src **)&atc->srcs[2], in atc_connect_resources()
1512 (struct srcimp **)&atc->srcimps[2]); in atc_connect_resources()
1513 src = atc->srcs[2]; in atc_connect_resources()
1515 src = atc->srcs[3]; in atc_connect_resources()
1518 if (atc->model == CTSB1270) { in atc_connect_resources()
1520 dai = container_of(atc->daios[MIC], struct dai, daio); in atc_connect_resources()
1521 atc_connect_dai(atc->rsc_mgrs[SRC], dai, in atc_connect_resources()
1522 (struct src **)&atc->srcs[4], in atc_connect_resources()
1523 (struct srcimp **)&atc->srcimps[4]); in atc_connect_resources()
1524 src = atc->srcs[4]; in atc_connect_resources()
1526 src = atc->srcs[5]; in atc_connect_resources()
1530 dai = container_of(atc->daios[SPDIFIO], struct dai, daio); in atc_connect_resources()
1531 atc_connect_dai(atc->rsc_mgrs[SRC], dai, in atc_connect_resources()
1532 (struct src **)&atc->srcs[0], in atc_connect_resources()
1533 (struct srcimp **)&atc->srcimps[0]); in atc_connect_resources()
1535 src = atc->srcs[0]; in atc_connect_resources()
1537 src = atc->srcs[1]; in atc_connect_resources()
1541 sum = atc->pcm[j]; in atc_connect_resources()
1543 sum = atc->pcm[j+1]; in atc_connect_resources()
1549 static int atc_suspend(struct ct_atc *atc) in atc_suspend() argument
1552 struct hw *hw = atc->hw; in atc_suspend()
1554 snd_power_change_state(atc->card, SNDRV_CTL_POWER_D3hot); in atc_suspend()
1557 if (!atc->pcms[i]) in atc_suspend()
1560 snd_pcm_suspend_all(atc->pcms[i]); in atc_suspend()
1563 atc_release_resources(atc); in atc_suspend()
1570 static int atc_hw_resume(struct ct_atc *atc) in atc_hw_resume() argument
1572 struct hw *hw = atc->hw; in atc_hw_resume()
1576 info.rsr = atc->rsr; in atc_hw_resume()
1577 info.msr = atc->msr; in atc_hw_resume()
1578 info.vm_pgt_phys = atc_get_ptp_phys(atc, 0); in atc_hw_resume()
1582 static int atc_resources_resume(struct ct_atc *atc) in atc_resources_resume() argument
1588 err = atc_get_resources(atc); in atc_resources_resume()
1590 atc_release_resources(atc); in atc_resources_resume()
1595 atc_connect_resources(atc); in atc_resources_resume()
1597 mixer = atc->mixer; in atc_resources_resume()
1603 static int atc_resume(struct ct_atc *atc) in atc_resume() argument
1608 err = atc_hw_resume(atc); in atc_resume()
1610 dev_err(atc->card->dev, in atc_resume()
1612 snd_card_disconnect(atc->card); in atc_resume()
1616 err = atc_resources_resume(atc); in atc_resume()
1620 snd_power_change_state(atc->card, SNDRV_CTL_POWER_D0); in atc_resume()
1682 struct ct_atc *atc; in ct_atc_create() local
1690 atc = kzalloc(sizeof(*atc), GFP_KERNEL); in ct_atc_create()
1691 if (!atc) in ct_atc_create()
1695 *atc = atc_preset; in ct_atc_create()
1697 atc->card = card; in ct_atc_create()
1698 atc->pci = pci; in ct_atc_create()
1699 atc->rsr = rsr; in ct_atc_create()
1700 atc->msr = msr; in ct_atc_create()
1701 atc->chip_type = chip_type; in ct_atc_create()
1703 mutex_init(&atc->atc_mutex); in ct_atc_create()
1706 err = atc_identify_card(atc, ssid); in ct_atc_create()
1713 err = ct_vm_create(&atc->vm, pci); in ct_atc_create()
1718 err = atc_create_hw_devs(atc); in ct_atc_create()
1722 err = ct_mixer_create(atc, (struct ct_mixer **)&atc->mixer); in ct_atc_create()
1729 err = atc_get_resources(atc); in ct_atc_create()
1734 atc_connect_resources(atc); in ct_atc_create()
1736 atc->timer = ct_timer_new(atc); in ct_atc_create()
1737 if (!atc->timer) { in ct_atc_create()
1742 err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, atc, &ops); in ct_atc_create()
1746 *ratc = atc; in ct_atc_create()
1750 ct_atc_destroy(atc); in ct_atc_create()