Lines Matching full:spec
1134 struct ca0132_spec *spec = codec->spec; in chipio_write_address() local
1137 if (spec->curr_chip_addx == chip_addx) in chipio_write_address()
1150 spec->curr_chip_addx = (res < 0) ? ~0U : chip_addx; in chipio_write_address()
1160 struct ca0132_spec *spec = codec->spec; in chipio_write_data() local
1174 spec->curr_chip_addx = (res != -EIO) ? in chipio_write_data()
1175 (spec->curr_chip_addx + 4) : ~0U; in chipio_write_data()
1205 struct ca0132_spec *spec = codec->spec; in chipio_read_data() local
1225 spec->curr_chip_addx = (res != -EIO) ? in chipio_read_data()
1226 (spec->curr_chip_addx + 4) : ~0U; in chipio_read_data()
1237 struct ca0132_spec *spec = codec->spec; in chipio_write() local
1240 mutex_lock(&spec->chipio_mutex); in chipio_write()
1252 mutex_unlock(&spec->chipio_mutex); in chipio_write()
1288 struct ca0132_spec *spec = codec->spec; in chipio_write_multiple() local
1291 mutex_lock(&spec->chipio_mutex); in chipio_write_multiple()
1298 mutex_unlock(&spec->chipio_mutex); in chipio_write_multiple()
1310 struct ca0132_spec *spec = codec->spec; in chipio_read() local
1313 mutex_lock(&spec->chipio_mutex); in chipio_read()
1325 mutex_unlock(&spec->chipio_mutex); in chipio_read()
1351 struct ca0132_spec *spec = codec->spec; in chipio_set_control_param() local
1359 mutex_lock(&spec->chipio_mutex); in chipio_set_control_param()
1368 mutex_unlock(&spec->chipio_mutex); in chipio_set_control_param()
1463 struct ca0132_spec *spec = codec->spec; in chipio_enable_clocks() local
1465 mutex_lock(&spec->chipio_mutex); in chipio_enable_clocks()
1478 mutex_unlock(&spec->chipio_mutex); in chipio_enable_clocks()
1524 struct ca0132_spec *spec = codec->spec; in dspio_write() local
1529 mutex_lock(&spec->chipio_mutex); in dspio_write()
1544 mutex_unlock(&spec->chipio_mutex); in dspio_write()
1699 struct ca0132_spec *spec = codec->spec; in dspio_get_response_data() local
1706 if ((data & 0x00ffffff) == spec->wait_scp_header) { in dspio_get_response_data()
1707 spec->scp_resp_header = data; in dspio_get_response_data()
1708 spec->scp_resp_count = data >> 27; in dspio_get_response_data()
1709 count = spec->wait_num_data; in dspio_get_response_data()
1710 dspio_read_multiple(codec, spec->scp_resp_data, in dspio_get_response_data()
1711 &spec->scp_resp_count, count); in dspio_get_response_data()
1728 struct ca0132_spec *spec = codec->spec; in dspio_send_scp_message() local
1755 spec->wait_scp_header = *((unsigned int *)send_buf); in dspio_send_scp_message()
1760 spec->wait_scp_header &= 0xffff0000; in dspio_send_scp_message()
1761 spec->wait_scp_header |= (resp_src_id << 8) | (resp_target_id); in dspio_send_scp_message()
1762 spec->wait_num_data = return_buf_size/sizeof(unsigned int) - 1; in dspio_send_scp_message()
1763 spec->wait_scp = 1; in dspio_send_scp_message()
1770 spec->wait_scp = 0; in dspio_send_scp_message()
1779 } while (spec->wait_scp && time_before(jiffies, timeout)); in dspio_send_scp_message()
1781 if (!spec->wait_scp) { in dspio_send_scp_message()
1783 memcpy(&ret_msg->hdr, &spec->scp_resp_header, 4); in dspio_send_scp_message()
1784 memcpy(&ret_msg->data, spec->scp_resp_data, in dspio_send_scp_message()
1785 spec->wait_num_data); in dspio_send_scp_message()
1786 *bytes_returned = (spec->scp_resp_count + 1) * 4; in dspio_send_scp_message()
1791 spec->wait_scp = 0; in dspio_send_scp_message()
2503 struct ca0132_spec *spec = codec->spec; in dma_reset() local
2515 spec->dsp_stream_id = status; in dma_reset()
2566 struct ca0132_spec *spec = dma->codec->spec; in dma_get_stream_id() local
2568 return spec->dsp_stream_id; in dma_get_stream_id()
2861 struct ca0132_spec *spec = codec->spec; in dspxfr_image() local
2905 spec->dsp_stream_id = status; in dspxfr_image()
2977 struct ca0132_spec *spec = codec->spec; in dspload_post_setup() local
2979 if (!spec->use_alt_functions) { in dspload_post_setup()
3106 struct ca0132_spec *spec = codec->spec; in ca0132_mmio_gpio_set() local
3112 writew(gpio_data, spec->mem_base + 0x320); in ca0132_mmio_gpio_set()
3121 struct ca0132_spec *spec = codec->spec; in ca0132_gpio_init() local
3123 switch (spec->quirk) { in ca0132_gpio_init()
3140 struct ca0132_spec *spec = codec->spec; in ca0132_gpio_setup() local
3142 switch (spec->quirk) { in ca0132_gpio_setup()
3284 struct ca0132_spec *spec = codec->spec; in ca0132_playback_pcm_prepare() local
3286 snd_hda_codec_setup_stream(codec, spec->dacs[0], stream_tag, 0, format); in ca0132_playback_pcm_prepare()
3295 struct ca0132_spec *spec = codec->spec; in ca0132_playback_pcm_cleanup() local
3297 if (spec->dsp_state == DSP_DOWNLOADING) in ca0132_playback_pcm_cleanup()
3302 if (spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]) in ca0132_playback_pcm_cleanup()
3305 snd_hda_codec_cleanup_stream(codec, spec->dacs[0]); in ca0132_playback_pcm_cleanup()
3314 struct ca0132_spec *spec = codec->spec; in ca0132_playback_pcm_delay() local
3318 if (spec->dsp_state != DSP_DOWNLOADED) in ca0132_playback_pcm_delay()
3322 if (spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]) { in ca0132_playback_pcm_delay()
3323 if ((spec->effects_switch[SURROUND - EFFECT_START_NID]) || in ca0132_playback_pcm_delay()
3324 (spec->effects_switch[DIALOG_PLUS - EFFECT_START_NID])) in ca0132_playback_pcm_delay()
3329 if (spec->cur_out_type == SPEAKER_OUT) in ca0132_playback_pcm_delay()
3342 struct ca0132_spec *spec = codec->spec; in ca0132_dig_playback_pcm_open() local
3343 return snd_hda_multi_out_dig_open(codec, &spec->multiout); in ca0132_dig_playback_pcm_open()
3352 struct ca0132_spec *spec = codec->spec; in ca0132_dig_playback_pcm_prepare() local
3353 return snd_hda_multi_out_dig_prepare(codec, &spec->multiout, in ca0132_dig_playback_pcm_prepare()
3361 struct ca0132_spec *spec = codec->spec; in ca0132_dig_playback_pcm_cleanup() local
3362 return snd_hda_multi_out_dig_cleanup(codec, &spec->multiout); in ca0132_dig_playback_pcm_cleanup()
3369 struct ca0132_spec *spec = codec->spec; in ca0132_dig_playback_pcm_close() local
3370 return snd_hda_multi_out_dig_close(codec, &spec->multiout); in ca0132_dig_playback_pcm_close()
3392 struct ca0132_spec *spec = codec->spec; in ca0132_capture_pcm_cleanup() local
3394 if (spec->dsp_state == DSP_DOWNLOADING) in ca0132_capture_pcm_cleanup()
3405 struct ca0132_spec *spec = codec->spec; in ca0132_capture_pcm_delay() local
3409 if (spec->dsp_state != DSP_DOWNLOADED) in ca0132_capture_pcm_delay()
3412 if (spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID]) in ca0132_capture_pcm_delay()
3637 struct ca0132_spec *spec = codec->spec; in tuning_ctl_get() local
3642 *valp = spec->cur_ctl_vals[idx]; in tuning_ctl_get()
3663 struct ca0132_spec *spec = codec->spec; in voice_focus_ctl_put() local
3670 if (spec->cur_ctl_vals[idx] == *valp) in voice_focus_ctl_put()
3673 spec->cur_ctl_vals[idx] = *valp; in voice_focus_ctl_put()
3698 struct ca0132_spec *spec = codec->spec; in mic_svm_ctl_put() local
3705 if (spec->cur_ctl_vals[idx] == *valp) in mic_svm_ctl_put()
3708 spec->cur_ctl_vals[idx] = *valp; in mic_svm_ctl_put()
3733 struct ca0132_spec *spec = codec->spec; in equalizer_ctl_put() local
3740 if (spec->cur_ctl_vals[idx] == *valp) in equalizer_ctl_put()
3743 spec->cur_ctl_vals[idx] = *valp; in equalizer_ctl_put()
3814 struct ca0132_spec *spec = codec->spec; in ca0132_init_tuning_defaults() local
3818 spec->cur_ctl_vals[WEDGE_ANGLE - TUNING_CTL_START_NID] = 10; in ca0132_init_tuning_defaults()
3820 spec->cur_ctl_vals[SVM_LEVEL - TUNING_CTL_START_NID] = 74; in ca0132_init_tuning_defaults()
3824 spec->cur_ctl_vals[i] = 24; in ca0132_init_tuning_defaults()
3836 struct ca0132_spec *spec = codec->spec; in ca0132_select_out() local
3847 auto_jack = spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID]; in ca0132_select_out()
3850 jack_present = snd_hda_jack_detect(codec, spec->unsol_tag_hp); in ca0132_select_out()
3853 spec->vnode_lswitch[VNID_HP_SEL - VNODE_START_NID]; in ca0132_select_out()
3856 spec->cur_out_type = HEADPHONE_OUT; in ca0132_select_out()
3858 spec->cur_out_type = SPEAKER_OUT; in ca0132_select_out()
3860 if (spec->cur_out_type == SPEAKER_OUT) { in ca0132_select_out()
3874 snd_hda_codec_write(codec, spec->out_pins[1], 0, in ca0132_select_out()
3876 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_select_out()
3878 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_select_out()
3880 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_select_out()
3884 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[1], 0, in ca0132_select_out()
3886 snd_hda_set_pin_ctl(codec, spec->out_pins[1], in ca0132_select_out()
3889 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[0], 0, in ca0132_select_out()
3891 snd_hda_set_pin_ctl(codec, spec->out_pins[0], in ca0132_select_out()
3907 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_select_out()
3909 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_select_out()
3911 snd_hda_codec_write(codec, spec->out_pins[1], 0, in ca0132_select_out()
3913 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_select_out()
3917 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[0], 0, in ca0132_select_out()
3919 snd_hda_set_pin_ctl(codec, spec->out_pins[0], in ca0132_select_out()
3922 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[1], 0, in ca0132_select_out()
3924 snd_hda_set_pin_ctl(codec, spec->out_pins[1], in ca0132_select_out()
3946 struct ca0132_spec *spec = codec->spec; in ca0132_alt_select_out() local
3954 hda_nid_t headphone_nid = spec->out_pins[1]; in ca0132_alt_select_out()
3960 auto_jack = spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID]; in ca0132_alt_select_out()
3968 jack_present = snd_hda_jack_detect(codec, spec->unsol_tag_hp) || in ca0132_alt_select_out()
3969 snd_hda_jack_detect(codec, spec->unsol_tag_front_hp); in ca0132_alt_select_out()
3972 spec->cur_out_type = HEADPHONE_OUT; in ca0132_alt_select_out()
3974 spec->cur_out_type = SPEAKER_OUT; in ca0132_alt_select_out()
3976 spec->cur_out_type = spec->out_enum_val; in ca0132_alt_select_out()
3984 switch (spec->cur_out_type) { in ca0132_alt_select_out()
3988 switch (spec->quirk) { in ca0132_alt_select_out()
4006 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[1], 0, in ca0132_alt_select_out()
4008 snd_hda_set_pin_ctl(codec, spec->out_pins[1], in ca0132_alt_select_out()
4011 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[0], 0, in ca0132_alt_select_out()
4013 snd_hda_set_pin_ctl(codec, spec->out_pins[0], in ca0132_alt_select_out()
4016 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_alt_select_out()
4020 if (spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]) in ca0132_alt_select_out()
4028 switch (spec->quirk) { in ca0132_alt_select_out()
4045 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_alt_select_out()
4049 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[0], 0, in ca0132_alt_select_out()
4051 snd_hda_set_pin_ctl(codec, spec->out_pins[0], in ca0132_alt_select_out()
4056 if (snd_hda_jack_detect(codec, spec->unsol_tag_front_hp)) in ca0132_alt_select_out()
4057 headphone_nid = spec->out_pins[2]; in ca0132_alt_select_out()
4058 else if (snd_hda_jack_detect(codec, spec->unsol_tag_hp)) in ca0132_alt_select_out()
4059 headphone_nid = spec->out_pins[1]; in ca0132_alt_select_out()
4066 if (spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]) in ca0132_alt_select_out()
4074 switch (spec->quirk) { in ca0132_alt_select_out()
4091 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[0], 0, in ca0132_alt_select_out()
4093 snd_hda_set_pin_ctl(codec, spec->out_pins[0], in ca0132_alt_select_out()
4096 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[1], 0, in ca0132_alt_select_out()
4098 snd_hda_set_pin_ctl(codec, spec->out_pins[1], in ca0132_alt_select_out()
4101 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_alt_select_out()
4104 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[2], 0, in ca0132_alt_select_out()
4106 snd_hda_set_pin_ctl(codec, spec->out_pins[2], in ca0132_alt_select_out()
4109 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[3], 0, in ca0132_alt_select_out()
4111 snd_hda_set_pin_ctl(codec, spec->out_pins[3], in ca0132_alt_select_out()
4114 if (spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]) in ca0132_alt_select_out()
4122 for (i = 0; i < alt_out_presets[spec->cur_out_type].commands; i++) { in ca0132_alt_select_out()
4124 alt_out_presets[spec->cur_out_type].mids[i], in ca0132_alt_select_out()
4125 alt_out_presets[spec->cur_out_type].reqs[i], in ca0132_alt_select_out()
4126 alt_out_presets[spec->cur_out_type].vals[i]); in ca0132_alt_select_out()
4140 struct ca0132_spec *spec = container_of( in ca0132_unsol_hp_delayed() local
4144 if (spec->use_alt_functions) in ca0132_unsol_hp_delayed()
4145 ca0132_alt_select_out(spec->codec); in ca0132_unsol_hp_delayed()
4147 ca0132_select_out(spec->codec); in ca0132_unsol_hp_delayed()
4149 jack = snd_hda_jack_tbl_get(spec->codec, spec->unsol_tag_hp); in ca0132_unsol_hp_delayed()
4152 snd_hda_jack_report_sync(spec->codec); in ca0132_unsol_hp_delayed()
4169 struct ca0132_spec *spec = codec->spec; in ca0132_set_vipsource() local
4172 if (spec->dsp_state != DSP_DOWNLOADED) in ca0132_set_vipsource()
4176 if (!spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] || in ca0132_set_vipsource()
4181 if (spec->cur_mic_type == DIGITAL_MIC) in ca0132_set_vipsource()
4191 if (spec->cur_mic_type == DIGITAL_MIC) in ca0132_set_vipsource()
4207 struct ca0132_spec *spec = codec->spec; in ca0132_alt_set_vipsource() local
4210 if (spec->dsp_state != DSP_DOWNLOADED) in ca0132_alt_set_vipsource()
4219 if (!spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] || in ca0132_alt_set_vipsource()
4220 (val == 0) || spec->in_enum_val == REAR_LINE_IN) { in ca0132_alt_set_vipsource()
4229 if (spec->quirk == QUIRK_R3DI) in ca0132_alt_set_vipsource()
4233 if (spec->in_enum_val == REAR_LINE_IN) in ca0132_alt_set_vipsource()
4236 if (spec->quirk == QUIRK_SBZ) in ca0132_alt_set_vipsource()
4248 if (spec->quirk == QUIRK_R3DI) in ca0132_alt_set_vipsource()
4251 if (spec->effects_switch[VOICE_FOCUS - EFFECT_START_NID]) in ca0132_alt_set_vipsource()
4278 struct ca0132_spec *spec = codec->spec; in ca0132_select_mic() local
4286 auto_jack = spec->vnode_lswitch[VNID_AMIC1_ASEL - VNODE_START_NID]; in ca0132_select_mic()
4289 jack_present = snd_hda_jack_detect(codec, spec->unsol_tag_amic1); in ca0132_select_mic()
4292 spec->vnode_lswitch[VNID_AMIC1_SEL - VNODE_START_NID]; in ca0132_select_mic()
4295 spec->cur_mic_type = LINE_MIC_IN; in ca0132_select_mic()
4297 spec->cur_mic_type = DIGITAL_MIC; in ca0132_select_mic()
4299 if (spec->cur_mic_type == DIGITAL_MIC) { in ca0132_select_mic()
4306 spec->effects_switch in ca0132_select_mic()
4312 ca0132_mic_boost_set(codec, spec->cur_mic_boost); in ca0132_select_mic()
4330 struct ca0132_spec *spec = codec->spec; in ca0132_alt_select_in() local
4340 spec->cur_mic_type = spec->in_enum_val; in ca0132_alt_select_in()
4342 switch (spec->cur_mic_type) { in ca0132_alt_select_in()
4344 switch (spec->quirk) { in ca0132_alt_select_in()
4361 if (spec->quirk == QUIRK_R3DI) in ca0132_alt_select_in()
4369 if (spec->quirk == QUIRK_SBZ) { in ca0132_alt_select_in()
4373 ca0132_alt_mic_boost_set(codec, spec->mic_boost_enum_val); in ca0132_alt_select_in()
4377 switch (spec->quirk) { in ca0132_alt_select_in()
4389 if (spec->quirk == QUIRK_R3DI) in ca0132_alt_select_in()
4395 if (spec->quirk == QUIRK_SBZ) { in ca0132_alt_select_in()
4404 switch (spec->quirk) { in ca0132_alt_select_in()
4422 if (spec->quirk == QUIRK_R3DI) in ca0132_alt_select_in()
4430 if (spec->quirk == QUIRK_SBZ) { in ca0132_alt_select_in()
4434 ca0132_alt_mic_boost_set(codec, spec->mic_boost_enum_val); in ca0132_alt_select_in()
4451 struct ca0132_spec *spec = codec->spec; in ca0132_is_vnode_effective() local
4456 nid = spec->shared_out_nid; in ca0132_is_vnode_effective()
4459 nid = spec->shared_mic_nid; in ca0132_is_vnode_effective()
4477 struct ca0132_spec *spec = codec->spec; in ca0132_voicefx_set() local
4482 tmp = spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] ? in ca0132_voicefx_set()
4499 struct ca0132_spec *spec = codec->spec; in ca0132_effects_set() local
4511 if (!spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]) in ca0132_effects_set()
4518 if (!spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID]) in ca0132_effects_set()
4522 if ((nid == VOICE_FOCUS) && (spec->cur_mic_type != DIGITAL_MIC)) in ca0132_effects_set()
4526 if ((nid == VOICE_FOCUS) && (spec->use_pci_mmio) in ca0132_effects_set()
4527 && (spec->cur_mic_type != REAR_LINE_IN)) { in ca0132_effects_set()
4528 if (spec->effects_switch[CRYSTAL_VOICE - in ca0132_effects_set()
4531 if (spec->effects_switch[VOICE_FOCUS - in ca0132_effects_set()
4545 if ((nid == NOISE_REDUCTION) && (spec->use_pci_mmio) in ca0132_effects_set()
4546 && (spec->cur_mic_type != REAR_LINE_IN)) { in ca0132_effects_set()
4547 if (spec->effects_switch[CRYSTAL_VOICE - in ca0132_effects_set()
4549 if (spec->effects_switch[NOISE_REDUCTION - in ca0132_effects_set()
4561 if (spec->use_alt_functions && in ca0132_effects_set()
4562 spec->in_enum_val == REAR_LINE_IN) in ca0132_effects_set()
4584 struct ca0132_spec *spec = codec->spec; in ca0132_pe_switch_set() local
4589 spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]); in ca0132_pe_switch_set()
4591 if (spec->use_alt_functions) in ca0132_pe_switch_set()
4598 ret |= ca0132_effects_set(codec, nid, spec->effects_switch[i]); in ca0132_pe_switch_set()
4606 struct ca0132_spec *spec = codec->spec; in stop_mic1() local
4607 unsigned int oldval = snd_hda_codec_read(codec, spec->adcs[0], 0, in stop_mic1()
4610 snd_hda_codec_write(codec, spec->adcs[0], 0, in stop_mic1()
4619 struct ca0132_spec *spec = codec->spec; in resume_mic1() local
4622 snd_hda_codec_write(codec, spec->adcs[0], 0, in resume_mic1()
4632 struct ca0132_spec *spec = codec->spec; in ca0132_cvoice_switch_set() local
4638 spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID]); in ca0132_cvoice_switch_set()
4644 ret |= ca0132_effects_set(codec, nid, spec->effects_switch[i]); in ca0132_cvoice_switch_set()
4647 ret |= ca0132_voicefx_set(codec, (spec->voicefx_val ? 1 : 0)); in ca0132_cvoice_switch_set()
4651 if (spec->use_alt_functions) in ca0132_cvoice_switch_set()
4661 struct ca0132_spec *spec = codec->spec; in ca0132_mic_boost_set() local
4665 ret = snd_hda_codec_amp_update(codec, spec->input_pins[0], 0, in ca0132_mic_boost_set()
4668 ret = snd_hda_codec_amp_update(codec, spec->input_pins[0], 0, in ca0132_mic_boost_set()
4676 struct ca0132_spec *spec = codec->spec; in ca0132_alt_mic_boost_set() local
4679 ret = snd_hda_codec_amp_update(codec, spec->input_pins[0], 0, in ca0132_alt_mic_boost_set()
4692 struct ca0132_spec *spec = codec->spec; in ca0132_vnode_switch_set() local
4697 spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID]; in ca0132_vnode_switch_set()
4699 if (spec->use_alt_functions) in ca0132_vnode_switch_set()
4709 spec->vnode_lswitch[VNID_AMIC1_ASEL - VNODE_START_NID]; in ca0132_vnode_switch_set()
4716 if (spec->use_alt_functions) in ca0132_vnode_switch_set()
4798 struct ca0132_spec *spec = codec->spec; in ca0132_alt_xbass_xover_slider_ctl_get() local
4801 *valp = spec->xbass_xover_freq; in ca0132_alt_xbass_xover_slider_ctl_get()
4809 struct ca0132_spec *spec = codec->spec; in ca0132_alt_slider_ctl_get() local
4814 *valp = spec->fx_ctl_val[idx]; in ca0132_alt_slider_ctl_get()
4852 struct ca0132_spec *spec = codec->spec; in ca0132_alt_xbass_xover_slider_put() local
4858 if (spec->xbass_xover_freq == *valp) in ca0132_alt_xbass_xover_slider_put()
4861 spec->xbass_xover_freq = *valp; in ca0132_alt_xbass_xover_slider_put()
4873 struct ca0132_spec *spec = codec->spec; in ca0132_alt_effect_slider_put() local
4880 if (spec->fx_ctl_val[idx] == *valp) in ca0132_alt_effect_slider_put()
4883 spec->fx_ctl_val[idx] = *valp; in ca0132_alt_effect_slider_put()
4920 struct ca0132_spec *spec = codec->spec; in ca0132_alt_mic_boost_get() local
4922 ucontrol->value.enumerated.item[0] = spec->mic_boost_enum_val; in ca0132_alt_mic_boost_get()
4930 struct ca0132_spec *spec = codec->spec; in ca0132_alt_mic_boost_put() local
4940 spec->mic_boost_enum_val = sel; in ca0132_alt_mic_boost_put()
4942 if (spec->in_enum_val != REAR_LINE_IN) in ca0132_alt_mic_boost_put()
4943 ca0132_alt_mic_boost_set(codec, spec->mic_boost_enum_val); in ca0132_alt_mic_boost_put()
4971 struct ca0132_spec *spec = codec->spec; in ca0132_alt_input_source_get() local
4973 ucontrol->value.enumerated.item[0] = spec->in_enum_val; in ca0132_alt_input_source_get()
4981 struct ca0132_spec *spec = codec->spec; in ca0132_alt_input_source_put() local
4991 spec->in_enum_val = sel; in ca0132_alt_input_source_put()
5016 struct ca0132_spec *spec = codec->spec; in ca0132_alt_output_select_get() local
5018 ucontrol->value.enumerated.item[0] = spec->out_enum_val; in ca0132_alt_output_select_get()
5026 struct ca0132_spec *spec = codec->spec; in ca0132_alt_output_select_put() local
5037 spec->out_enum_val = sel; in ca0132_alt_output_select_put()
5039 auto_jack = spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID]; in ca0132_alt_output_select_put()
5072 struct ca0132_spec *spec = codec->spec; in ca0132_alt_svm_setting_get() local
5074 ucontrol->value.enumerated.item[0] = spec->smart_volume_setting; in ca0132_alt_svm_setting_get()
5082 struct ca0132_spec *spec = codec->spec; in ca0132_alt_svm_setting_put() local
5094 spec->smart_volume_setting = sel; in ca0132_alt_svm_setting_put()
5136 struct ca0132_spec *spec = codec->spec; in ca0132_alt_eq_preset_get() local
5138 ucontrol->value.enumerated.item[0] = spec->eq_preset_val; in ca0132_alt_eq_preset_get()
5146 struct ca0132_spec *spec = codec->spec; in ca0132_alt_eq_preset_put() local
5169 spec->eq_preset_val = sel; in ca0132_alt_eq_preset_put()
5193 struct ca0132_spec *spec = codec->spec; in ca0132_voicefx_get() local
5195 ucontrol->value.enumerated.item[0] = spec->voicefx_val; in ca0132_voicefx_get()
5203 struct ca0132_spec *spec = codec->spec; in ca0132_voicefx_put() local
5226 spec->voicefx_val = sel; in ca0132_voicefx_put()
5238 struct ca0132_spec *spec = codec->spec; in ca0132_switch_get() local
5246 *valp = spec->vnode_lswitch[nid - VNODE_START_NID]; in ca0132_switch_get()
5250 *valp = spec->vnode_rswitch[nid - VNODE_START_NID]; in ca0132_switch_get()
5258 *valp = spec->effects_switch[nid - EFFECT_START_NID]; in ca0132_switch_get()
5263 if (nid == spec->input_pins[0]) { in ca0132_switch_get()
5264 *valp = spec->cur_mic_boost; in ca0132_switch_get()
5275 struct ca0132_spec *spec = codec->spec; in ca0132_switch_put() local
5288 spec->vnode_lswitch[nid - VNODE_START_NID] = *valp; in ca0132_switch_put()
5292 spec->vnode_rswitch[nid - VNODE_START_NID] = *valp; in ca0132_switch_put()
5301 spec->effects_switch[nid - EFFECT_START_NID] = *valp; in ca0132_switch_put()
5308 spec->effects_switch[nid - EFFECT_START_NID] = *valp; in ca0132_switch_put()
5316 spec->effects_switch[nid - EFFECT_START_NID] = *valp; in ca0132_switch_put()
5322 if (nid == spec->input_pins[0]) { in ca0132_switch_put()
5323 spec->cur_mic_boost = *valp; in ca0132_switch_put()
5324 if (spec->use_alt_functions) { in ca0132_switch_put()
5325 if (spec->in_enum_val != REAR_LINE_IN) in ca0132_switch_put()
5329 if (spec->cur_mic_type != DIGITAL_MIC) in ca0132_switch_put()
5351 struct ca0132_spec *spec = codec->spec; in ca0132_alt_dsp_volume_put() local
5360 lookup_val = spec->vnode_lvol[nid - VNODE_START_NID]; in ca0132_alt_dsp_volume_put()
5367 lookup_val = spec->vnode_rvol[nid - VNODE_START_NID]; in ca0132_alt_dsp_volume_put()
5383 struct ca0132_spec *spec = codec->spec; in ca0132_volume_info() local
5393 nid = spec->shared_out_nid; in ca0132_volume_info()
5403 nid = spec->shared_mic_nid; in ca0132_volume_info()
5421 struct ca0132_spec *spec = codec->spec; in ca0132_volume_get() local
5428 *valp = spec->vnode_lvol[nid - VNODE_START_NID]; in ca0132_volume_get()
5432 *valp = spec->vnode_rvol[nid - VNODE_START_NID]; in ca0132_volume_get()
5442 struct ca0132_spec *spec = codec->spec; in ca0132_volume_put() local
5452 spec->vnode_lvol[nid - VNODE_START_NID] = *valp; in ca0132_volume_put()
5456 spec->vnode_rvol[nid - VNODE_START_NID] = *valp; in ca0132_volume_put()
5489 struct ca0132_spec *spec = codec->spec; in ca0132_alt_volume_put() local
5507 spec->vnode_lvol[vnid - VNODE_START_NID] = *valp; in ca0132_alt_volume_put()
5511 spec->vnode_rvol[vnid - VNODE_START_NID] = *valp; in ca0132_alt_volume_put()
5529 struct ca0132_spec *spec = codec->spec; in ca0132_volume_tlv() local
5539 nid = spec->shared_out_nid; in ca0132_volume_tlv()
5549 nid = spec->shared_mic_nid; in ca0132_volume_tlv()
5602 struct ca0132_spec *spec = codec->spec; in add_fx_switch() local
5610 if ((spec->use_alt_controls) && (nid <= IN_EFFECT_END_NID)) in add_fx_switch()
5832 struct ca0132_spec *spec = codec->spec; in ca0132_build_controls() local
5837 for (i = 0; i < spec->num_mixers; i++) { in ca0132_build_controls()
5838 err = snd_hda_add_new_ctls(codec, spec->mixers[i]); in ca0132_build_controls()
5843 if (spec->use_alt_functions) { in ca0132_build_controls()
5844 snd_hda_set_vmaster_tlv(codec, spec->dacs[0], HDA_OUTPUT, in ca0132_build_controls()
5845 spec->tlv); in ca0132_build_controls()
5847 spec->tlv, ca0132_alt_slave_pfxs, in ca0132_build_controls()
5852 true, &spec->vmaster_mute.sw_kctl); in ca0132_build_controls()
5862 if (spec->use_pci_mmio) { in ca0132_build_controls()
5879 if (spec->use_alt_controls) { in ca0132_build_controls()
5925 if (spec->use_alt_functions) { in ca0132_build_controls()
5934 err = snd_hda_jack_add_kctls(codec, &spec->autocfg); in ca0132_build_controls()
5938 if (spec->dig_out) { in ca0132_build_controls()
5939 err = snd_hda_create_spdif_out_ctls(codec, spec->dig_out, in ca0132_build_controls()
5940 spec->dig_out); in ca0132_build_controls()
5943 err = snd_hda_create_spdif_share_sw(codec, &spec->multiout); in ca0132_build_controls()
5946 /* spec->multiout.share_spdif = 1; */ in ca0132_build_controls()
5949 if (spec->dig_in) { in ca0132_build_controls()
5950 err = snd_hda_create_spdif_in_ctls(codec, spec->dig_in); in ca0132_build_controls()
5955 if (spec->use_alt_functions) in ca0132_build_controls()
6006 struct ca0132_spec *spec = codec->spec; in ca0132_build_pcms() local
6012 if (spec->use_alt_functions) { in ca0132_build_pcms()
6018 info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->dacs[0]; in ca0132_build_pcms()
6020 spec->multiout.max_channels; in ca0132_build_pcms()
6023 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[0]; in ca0132_build_pcms()
6026 if (!spec->use_alt_functions) { in ca0132_build_pcms()
6033 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[1]; in ca0132_build_pcms()
6041 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[2]; in ca0132_build_pcms()
6043 if (!spec->dig_out && !spec->dig_in) in ca0132_build_pcms()
6050 if (spec->dig_out) { in ca0132_build_pcms()
6053 info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->dig_out; in ca0132_build_pcms()
6055 if (spec->dig_in) { in ca0132_build_pcms()
6058 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->dig_in; in ca0132_build_pcms()
6113 struct ca0132_spec *spec = codec->spec; in ca0132_set_dmic() local
6127 val = spec->dmic_ctl; in ca0132_set_dmic()
6129 snd_hda_codec_write(codec, spec->input_pins[0], 0, in ca0132_set_dmic()
6132 if (!(spec->dmic_ctl & 0x20)) in ca0132_set_dmic()
6139 val = spec->dmic_ctl; in ca0132_set_dmic()
6142 snd_hda_codec_write(codec, spec->input_pins[0], 0, in ca0132_set_dmic()
6145 if (!(spec->dmic_ctl & 0x20)) in ca0132_set_dmic()
6157 struct ca0132_spec *spec = codec->spec; in ca0132_init_dmic() local
6170 snd_hda_codec_write(codec, spec->input_pins[0], 0, in ca0132_init_dmic()
6180 snd_hda_codec_write(codec, spec->input_pins[0], 0, in ca0132_init_dmic()
6190 if (spec->quirk == QUIRK_ALIENWARE_M17XR4) in ca0132_init_dmic()
6195 spec->dmic_ctl = val; in ca0132_init_dmic()
6196 snd_hda_codec_write(codec, spec->input_pins[0], 0, in ca0132_init_dmic()
6205 struct ca0132_spec *spec = codec->spec; in ca0132_init_analog_mic2() local
6207 mutex_lock(&spec->chipio_mutex); in ca0132_init_analog_mic2()
6220 mutex_unlock(&spec->chipio_mutex); in ca0132_init_analog_mic2()
6225 struct ca0132_spec *spec = codec->spec; in ca0132_refresh_widget_caps() local
6231 for (i = 0; i < spec->multiout.num_dacs; i++) in ca0132_refresh_widget_caps()
6232 refresh_amp_caps(codec, spec->dacs[i], HDA_OUTPUT); in ca0132_refresh_widget_caps()
6234 for (i = 0; i < spec->num_outputs; i++) in ca0132_refresh_widget_caps()
6235 refresh_amp_caps(codec, spec->out_pins[i], HDA_OUTPUT); in ca0132_refresh_widget_caps()
6237 for (i = 0; i < spec->num_inputs; i++) { in ca0132_refresh_widget_caps()
6238 refresh_amp_caps(codec, spec->adcs[i], HDA_INPUT); in ca0132_refresh_widget_caps()
6239 refresh_amp_caps(codec, spec->input_pins[i], HDA_INPUT); in ca0132_refresh_widget_caps()
6317 struct ca0132_spec *spec = codec->spec; in sbz_connect_streams() local
6319 mutex_lock(&spec->chipio_mutex); in sbz_connect_streams()
6338 mutex_unlock(&spec->chipio_mutex); in sbz_connect_streams()
6350 struct ca0132_spec *spec = codec->spec; in sbz_chipio_startup_data() local
6352 mutex_lock(&spec->chipio_mutex); in sbz_chipio_startup_data()
6382 mutex_unlock(&spec->chipio_mutex); in sbz_chipio_startup_data()
6438 struct ca0132_spec *spec = codec->spec; in ca0132_setup_defaults() local
6443 if (spec->dsp_state != DSP_DOWNLOADED) in ca0132_setup_defaults()
6483 struct ca0132_spec *spec = codec->spec; in r3d_setup_defaults() local
6488 if (spec->dsp_state != DSP_DOWNLOADED) in r3d_setup_defaults()
6507 if (spec->quirk == QUIRK_R3DI) in r3d_setup_defaults()
6528 struct ca0132_spec *spec = codec->spec; in sbz_setup_defaults() local
6533 if (spec->dsp_state != DSP_DOWNLOADED) in sbz_setup_defaults()
6589 snd_hda_codec_setup_stream(codec, spec->dacs[0], spec->dsp_stream_id, in sbz_setup_defaults()
6592 snd_hda_codec_cleanup_stream(codec, spec->dacs[0]); in sbz_setup_defaults()
6594 snd_hda_codec_setup_stream(codec, spec->dacs[0], spec->dsp_stream_id, in sbz_setup_defaults()
6597 snd_hda_codec_cleanup_stream(codec, spec->dacs[0]); in sbz_setup_defaults()
6605 struct ca0132_spec *spec = codec->spec; in ca0132_init_flags() local
6607 if (spec->use_alt_functions) { in ca0132_init_flags()
6638 struct ca0132_spec *spec = codec->spec; in ca0132_init_params() local
6640 if (spec->use_alt_functions) { in ca0132_init_params()
6669 struct ca0132_spec *spec = codec->spec; in ca0132_download_dsp_images() local
6677 switch (spec->quirk) { in ca0132_download_dsp_images()
6682 spec->alt_firmware_present = false; in ca0132_download_dsp_images()
6685 spec->alt_firmware_present = true; in ca0132_download_dsp_images()
6692 spec->alt_firmware_present = false; in ca0132_download_dsp_images()
6695 spec->alt_firmware_present = true; in ca0132_download_dsp_images()
6699 spec->alt_firmware_present = false; in ca0132_download_dsp_images()
6706 if (!spec->alt_firmware_present) { in ca0132_download_dsp_images()
6729 struct ca0132_spec *spec = codec->spec; in ca0132_download_dsp() local
6735 if (spec->dsp_state == DSP_DOWNLOAD_FAILED) in ca0132_download_dsp()
6739 if (spec->dsp_state != DSP_DOWNLOADED) { in ca0132_download_dsp()
6740 spec->dsp_state = DSP_DOWNLOADING; in ca0132_download_dsp()
6743 spec->dsp_state = DSP_DOWNLOAD_FAILED; in ca0132_download_dsp()
6745 spec->dsp_state = DSP_DOWNLOADED; in ca0132_download_dsp()
6749 if (spec->dsp_state == DSP_DOWNLOADED && (!spec->use_alt_functions)) in ca0132_download_dsp()
6756 struct ca0132_spec *spec = codec->spec; in ca0132_process_dsp_response() local
6760 if (spec->wait_scp) { in ca0132_process_dsp_response()
6762 spec->wait_scp = 0; in ca0132_process_dsp_response()
6771 struct ca0132_spec *spec = codec->spec; in hp_callback() local
6780 schedule_delayed_work(&spec->unsol_hp_work, msecs_to_jiffies(500)); in hp_callback()
6785 struct ca0132_spec *spec = codec->spec; in amic_callback() local
6787 if (spec->use_alt_functions) in amic_callback()
6795 struct ca0132_spec *spec = codec->spec; in ca0132_init_unsol() local
6796 snd_hda_jack_detect_enable_callback(codec, spec->unsol_tag_hp, hp_callback); in ca0132_init_unsol()
6797 snd_hda_jack_detect_enable_callback(codec, spec->unsol_tag_amic1, in ca0132_init_unsol()
6802 if (spec->use_alt_functions) in ca0132_init_unsol()
6804 spec->unsol_tag_front_hp, hp_callback); in ca0132_init_unsol()
6884 struct ca0132_spec *spec = codec->spec; in ca0132_init_chip() local
6889 mutex_init(&spec->chipio_mutex); in ca0132_init_chip()
6891 spec->cur_out_type = SPEAKER_OUT; in ca0132_init_chip()
6892 if (!spec->use_alt_functions) in ca0132_init_chip()
6893 spec->cur_mic_type = DIGITAL_MIC; in ca0132_init_chip()
6895 spec->cur_mic_type = REAR_MIC; in ca0132_init_chip()
6897 spec->cur_mic_boost = 0; in ca0132_init_chip()
6900 spec->vnode_lvol[i] = 0x5a; in ca0132_init_chip()
6901 spec->vnode_rvol[i] = 0x5a; in ca0132_init_chip()
6902 spec->vnode_lswitch[i] = 0; in ca0132_init_chip()
6903 spec->vnode_rswitch[i] = 0; in ca0132_init_chip()
6912 spec->effects_switch[i] = on ? 1 : 0; in ca0132_init_chip()
6918 if (spec->use_alt_controls) { in ca0132_init_chip()
6919 spec->xbass_xover_freq = 8; in ca0132_init_chip()
6921 spec->fx_ctl_val[i] = effect_slider_defaults[i]; in ca0132_init_chip()
6924 spec->voicefx_val = 0; in ca0132_init_chip()
6925 spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID] = 1; in ca0132_init_chip()
6926 spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] = 0; in ca0132_init_chip()
6947 struct ca0132_spec *spec = codec->spec; in sbz_region2_exit() local
6951 writeb(0x0, spec->mem_base + 0x100); in sbz_region2_exit()
6953 writeb(0xb3, spec->mem_base + 0x304); in sbz_region2_exit()
7062 struct ca0132_spec *spec = codec->spec; in sbz_dsp_startup_check() local
7069 if (spec->startup_check_entered) in sbz_dsp_startup_check()
7072 spec->startup_check_entered = true; in sbz_dsp_startup_check()
7094 spec->dsp_state = DSP_DOWNLOAD_INIT; in sbz_dsp_startup_check()
7142 struct ca0132_spec *spec = codec->spec; in sbz_pre_dsp_setup() local
7144 writel(0x00820680, spec->mem_base + 0x01C); in sbz_pre_dsp_setup()
7145 writel(0x00820680, spec->mem_base + 0x01C); in sbz_pre_dsp_setup()
7210 struct ca0132_spec *spec = codec->spec; in ca0132_mmio_init() local
7212 writel(0x00000000, spec->mem_base + 0x400); in ca0132_mmio_init()
7213 writel(0x00000000, spec->mem_base + 0x408); in ca0132_mmio_init()
7214 writel(0x00000000, spec->mem_base + 0x40C); in ca0132_mmio_init()
7215 writel(0x00880680, spec->mem_base + 0x01C); in ca0132_mmio_init()
7216 writel(0x00000083, spec->mem_base + 0xC0C); in ca0132_mmio_init()
7217 writel(0x00000030, spec->mem_base + 0xC00); in ca0132_mmio_init()
7218 writel(0x00000000, spec->mem_base + 0xC04); in ca0132_mmio_init()
7219 writel(0x00000003, spec->mem_base + 0xC0C); in ca0132_mmio_init()
7220 writel(0x00000003, spec->mem_base + 0xC0C); in ca0132_mmio_init()
7221 writel(0x00000003, spec->mem_base + 0xC0C); in ca0132_mmio_init()
7222 writel(0x00000003, spec->mem_base + 0xC0C); in ca0132_mmio_init()
7223 writel(0x000000C1, spec->mem_base + 0xC08); in ca0132_mmio_init()
7224 writel(0x000000F1, spec->mem_base + 0xC08); in ca0132_mmio_init()
7225 writel(0x00000001, spec->mem_base + 0xC08); in ca0132_mmio_init()
7226 writel(0x000000C7, spec->mem_base + 0xC08); in ca0132_mmio_init()
7227 writel(0x000000C1, spec->mem_base + 0xC08); in ca0132_mmio_init()
7228 writel(0x00000080, spec->mem_base + 0xC04); in ca0132_mmio_init()
7238 struct ca0132_spec *spec = codec->spec; in ca0132_alt_init() local
7242 switch (spec->quirk) { in ca0132_alt_init()
7247 snd_hda_sequence_write(codec, spec->chip_init_verbs); in ca0132_alt_init()
7248 snd_hda_sequence_write(codec, spec->desktop_init_verbs); in ca0132_alt_init()
7256 snd_hda_sequence_write(codec, spec->chip_init_verbs); in ca0132_alt_init()
7261 snd_hda_sequence_write(codec, spec->chip_init_verbs); in ca0132_alt_init()
7262 snd_hda_sequence_write(codec, spec->desktop_init_verbs); in ca0132_alt_init()
7269 struct ca0132_spec *spec = codec->spec; in ca0132_init() local
7270 struct auto_pin_cfg *cfg = &spec->autocfg; in ca0132_init()
7284 if (spec->dsp_state == DSP_DOWNLOADED) { in ca0132_init()
7287 spec->dsp_reload = true; in ca0132_init()
7288 spec->dsp_state = DSP_DOWNLOAD_INIT; in ca0132_init()
7290 if (spec->quirk == QUIRK_SBZ) in ca0132_init()
7296 if (spec->dsp_state != DSP_DOWNLOAD_FAILED) in ca0132_init()
7297 spec->dsp_state = DSP_DOWNLOAD_INIT; in ca0132_init()
7298 spec->curr_chip_addx = INVALID_CHIP_ADDRESS; in ca0132_init()
7300 if (spec->use_pci_mmio) in ca0132_init()
7309 snd_hda_sequence_write(codec, spec->base_init_verbs); in ca0132_init()
7311 if (spec->use_alt_functions) in ca0132_init()
7318 switch (spec->quirk) { in ca0132_init()
7333 for (i = 0; i < spec->num_outputs; i++) in ca0132_init()
7334 init_output(codec, spec->out_pins[i], spec->dacs[0]); in ca0132_init()
7336 init_output(codec, cfg->dig_out_pins[0], spec->dig_out); in ca0132_init()
7338 for (i = 0; i < spec->num_inputs; i++) in ca0132_init()
7339 init_input(codec, spec->input_pins[i], spec->adcs[i]); in ca0132_init()
7341 init_input(codec, cfg->dig_in_pin, spec->dig_in); in ca0132_init()
7343 if (!spec->use_alt_functions) { in ca0132_init()
7344 snd_hda_sequence_write(codec, spec->chip_init_verbs); in ca0132_init()
7351 if (spec->quirk == QUIRK_SBZ) in ca0132_init()
7354 snd_hda_sequence_write(codec, spec->spec_init_verbs); in ca0132_init()
7355 if (spec->use_alt_functions) { in ca0132_init()
7369 if (spec->dsp_reload) { in ca0132_init()
7370 spec->dsp_reload = false; in ca0132_init()
7381 struct ca0132_spec *spec = codec->spec; in ca0132_free() local
7383 cancel_delayed_work_sync(&spec->unsol_hp_work); in ca0132_free()
7385 switch (spec->quirk) { in ca0132_free()
7397 snd_hda_sequence_write(codec, spec->base_exit_verbs); in ca0132_free()
7402 if (spec->mem_base) in ca0132_free()
7403 pci_iounmap(codec->bus->pci, spec->mem_base); in ca0132_free()
7405 kfree(spec->spec_init_verbs); in ca0132_free()
7406 kfree(codec->spec); in ca0132_free()
7417 struct ca0132_spec *spec = codec->spec; in ca0132_suspend() local
7419 cancel_delayed_work_sync(&spec->unsol_hp_work); in ca0132_suspend()
7438 struct ca0132_spec *spec = codec->spec; in ca0132_config() local
7440 spec->dacs[0] = 0x2; in ca0132_config()
7441 spec->dacs[1] = 0x3; in ca0132_config()
7442 spec->dacs[2] = 0x4; in ca0132_config()
7444 spec->multiout.dac_nids = spec->dacs; in ca0132_config()
7445 spec->multiout.num_dacs = 3; in ca0132_config()
7447 if (!spec->use_alt_functions) in ca0132_config()
7448 spec->multiout.max_channels = 2; in ca0132_config()
7450 spec->multiout.max_channels = 6; in ca0132_config()
7452 switch (spec->quirk) { in ca0132_config()
7457 spec->num_outputs = 2; in ca0132_config()
7458 spec->out_pins[0] = 0x0b; /* speaker out */ in ca0132_config()
7459 spec->out_pins[1] = 0x0f; in ca0132_config()
7460 spec->shared_out_nid = 0x2; in ca0132_config()
7461 spec->unsol_tag_hp = 0x0f; in ca0132_config()
7463 spec->adcs[0] = 0x7; /* digital mic / analog mic1 */ in ca0132_config()
7464 spec->adcs[1] = 0x8; /* analog mic2 */ in ca0132_config()
7465 spec->adcs[2] = 0xa; /* what u hear */ in ca0132_config()
7467 spec->num_inputs = 3; in ca0132_config()
7468 spec->input_pins[0] = 0x12; in ca0132_config()
7469 spec->input_pins[1] = 0x11; in ca0132_config()
7470 spec->input_pins[2] = 0x13; in ca0132_config()
7471 spec->shared_mic_nid = 0x7; in ca0132_config()
7472 spec->unsol_tag_amic1 = 0x11; in ca0132_config()
7476 if (spec->quirk == QUIRK_SBZ) { in ca0132_config()
7480 if (spec->quirk == QUIRK_R3D) { in ca0132_config()
7485 spec->num_outputs = 2; in ca0132_config()
7486 spec->out_pins[0] = 0x0B; /* Line out */ in ca0132_config()
7487 spec->out_pins[1] = 0x0F; /* Rear headphone out */ in ca0132_config()
7488 spec->out_pins[2] = 0x10; /* Front Headphone / Center/LFE*/ in ca0132_config()
7489 spec->out_pins[3] = 0x11; /* Rear surround */ in ca0132_config()
7490 spec->shared_out_nid = 0x2; in ca0132_config()
7491 spec->unsol_tag_hp = spec->out_pins[1]; in ca0132_config()
7492 spec->unsol_tag_front_hp = spec->out_pins[2]; in ca0132_config()
7494 spec->adcs[0] = 0x7; /* Rear Mic / Line-in */ in ca0132_config()
7495 spec->adcs[1] = 0x8; /* Front Mic, but only if no DSP */ in ca0132_config()
7496 spec->adcs[2] = 0xa; /* what u hear */ in ca0132_config()
7498 spec->num_inputs = 2; in ca0132_config()
7499 spec->input_pins[0] = 0x12; /* Rear Mic / Line-in */ in ca0132_config()
7500 spec->input_pins[1] = 0x13; /* What U Hear */ in ca0132_config()
7501 spec->shared_mic_nid = 0x7; in ca0132_config()
7502 spec->unsol_tag_amic1 = spec->input_pins[0]; in ca0132_config()
7505 spec->dig_out = 0x05; in ca0132_config()
7506 spec->multiout.dig_out_nid = spec->dig_out; in ca0132_config()
7507 spec->dig_in = 0x09; in ca0132_config()
7513 spec->num_outputs = 2; in ca0132_config()
7514 spec->out_pins[0] = 0x0B; /* Line out */ in ca0132_config()
7515 spec->out_pins[1] = 0x0F; /* Rear headphone out */ in ca0132_config()
7516 spec->out_pins[2] = 0x10; /* Front Headphone / Center/LFE*/ in ca0132_config()
7517 spec->out_pins[3] = 0x11; /* Rear surround */ in ca0132_config()
7518 spec->shared_out_nid = 0x2; in ca0132_config()
7519 spec->unsol_tag_hp = spec->out_pins[1]; in ca0132_config()
7520 spec->unsol_tag_front_hp = spec->out_pins[2]; in ca0132_config()
7522 spec->adcs[0] = 0x07; /* Rear Mic / Line-in */ in ca0132_config()
7523 spec->adcs[1] = 0x08; /* Front Mic, but only if no DSP */ in ca0132_config()
7524 spec->adcs[2] = 0x0a; /* what u hear */ in ca0132_config()
7526 spec->num_inputs = 2; in ca0132_config()
7527 spec->input_pins[0] = 0x12; /* Rear Mic / Line-in */ in ca0132_config()
7528 spec->input_pins[1] = 0x13; /* What U Hear */ in ca0132_config()
7529 spec->shared_mic_nid = 0x7; in ca0132_config()
7530 spec->unsol_tag_amic1 = spec->input_pins[0]; in ca0132_config()
7533 spec->dig_out = 0x05; in ca0132_config()
7534 spec->multiout.dig_out_nid = spec->dig_out; in ca0132_config()
7537 spec->num_outputs = 2; in ca0132_config()
7538 spec->out_pins[0] = 0x0b; /* speaker out */ in ca0132_config()
7539 spec->out_pins[1] = 0x10; /* headphone out */ in ca0132_config()
7540 spec->shared_out_nid = 0x2; in ca0132_config()
7541 spec->unsol_tag_hp = spec->out_pins[1]; in ca0132_config()
7543 spec->adcs[0] = 0x7; /* digital mic / analog mic1 */ in ca0132_config()
7544 spec->adcs[1] = 0x8; /* analog mic2 */ in ca0132_config()
7545 spec->adcs[2] = 0xa; /* what u hear */ in ca0132_config()
7547 spec->num_inputs = 3; in ca0132_config()
7548 spec->input_pins[0] = 0x12; in ca0132_config()
7549 spec->input_pins[1] = 0x11; in ca0132_config()
7550 spec->input_pins[2] = 0x13; in ca0132_config()
7551 spec->shared_mic_nid = 0x7; in ca0132_config()
7552 spec->unsol_tag_amic1 = spec->input_pins[0]; in ca0132_config()
7555 spec->dig_out = 0x05; in ca0132_config()
7556 spec->multiout.dig_out_nid = spec->dig_out; in ca0132_config()
7557 spec->dig_in = 0x09; in ca0132_config()
7566 struct ca0132_spec *spec = codec->spec; in ca0132_prepare_verbs() local
7568 spec->chip_init_verbs = ca0132_init_verbs0; in ca0132_prepare_verbs()
7569 if (spec->quirk == QUIRK_SBZ || spec->quirk == QUIRK_R3D) in ca0132_prepare_verbs()
7570 spec->desktop_init_verbs = ca0132_init_verbs1; in ca0132_prepare_verbs()
7571 spec->spec_init_verbs = kcalloc(NUM_SPEC_VERBS, in ca0132_prepare_verbs()
7574 if (!spec->spec_init_verbs) in ca0132_prepare_verbs()
7578 spec->spec_init_verbs[0].nid = 0x0b; in ca0132_prepare_verbs()
7579 spec->spec_init_verbs[0].param = 0x78D; in ca0132_prepare_verbs()
7580 spec->spec_init_verbs[0].verb = 0x00; in ca0132_prepare_verbs()
7584 spec->spec_init_verbs[2].nid = 0x0b; in ca0132_prepare_verbs()
7585 spec->spec_init_verbs[2].param = AC_VERB_SET_EAPD_BTLENABLE; in ca0132_prepare_verbs()
7586 spec->spec_init_verbs[2].verb = 0x02; in ca0132_prepare_verbs()
7588 spec->spec_init_verbs[3].nid = 0x10; in ca0132_prepare_verbs()
7589 spec->spec_init_verbs[3].param = 0x78D; in ca0132_prepare_verbs()
7590 spec->spec_init_verbs[3].verb = 0x02; in ca0132_prepare_verbs()
7592 spec->spec_init_verbs[4].nid = 0x10; in ca0132_prepare_verbs()
7593 spec->spec_init_verbs[4].param = AC_VERB_SET_EAPD_BTLENABLE; in ca0132_prepare_verbs()
7594 spec->spec_init_verbs[4].verb = 0x02; in ca0132_prepare_verbs()
7597 /* Terminator: spec->spec_init_verbs[NUM_SPEC_VERBS-1] */ in ca0132_prepare_verbs()
7603 struct ca0132_spec *spec; in patch_ca0132() local
7609 spec = kzalloc(sizeof(*spec), GFP_KERNEL); in patch_ca0132()
7610 if (!spec) in patch_ca0132()
7612 codec->spec = spec; in patch_ca0132()
7613 spec->codec = codec; in patch_ca0132()
7622 spec->quirk = quirk->value; in patch_ca0132()
7624 spec->quirk = QUIRK_NONE; in patch_ca0132()
7626 spec->dsp_state = DSP_DOWNLOAD_INIT; in patch_ca0132()
7627 spec->num_mixers = 1; in patch_ca0132()
7630 switch (spec->quirk) { in patch_ca0132()
7632 spec->mixers[0] = desktop_mixer; in patch_ca0132()
7636 spec->mixers[0] = desktop_mixer; in patch_ca0132()
7640 spec->mixers[0] = r3di_mixer; in patch_ca0132()
7644 spec->mixers[0] = ca0132_mixer; in patch_ca0132()
7649 switch (spec->quirk) { in patch_ca0132()
7652 spec->use_alt_controls = true; in patch_ca0132()
7653 spec->use_alt_functions = true; in patch_ca0132()
7654 spec->use_pci_mmio = true; in patch_ca0132()
7657 spec->use_alt_controls = true; in patch_ca0132()
7658 spec->use_alt_functions = true; in patch_ca0132()
7659 spec->use_pci_mmio = false; in patch_ca0132()
7662 spec->use_alt_controls = false; in patch_ca0132()
7663 spec->use_alt_functions = false; in patch_ca0132()
7664 spec->use_pci_mmio = false; in patch_ca0132()
7668 if (spec->use_pci_mmio) { in patch_ca0132()
7669 spec->mem_base = pci_iomap(codec->bus->pci, 2, 0xC20); in patch_ca0132()
7670 if (spec->mem_base == NULL) { in patch_ca0132()
7672 spec->quirk = QUIRK_NONE; in patch_ca0132()
7676 spec->base_init_verbs = ca0132_base_init_verbs; in patch_ca0132()
7677 spec->base_exit_verbs = ca0132_base_exit_verbs; in patch_ca0132()
7679 INIT_DELAYED_WORK(&spec->unsol_hp_work, ca0132_unsol_hp_delayed); in patch_ca0132()
7689 err = snd_hda_parse_pin_def_config(codec, &spec->autocfg, NULL); in patch_ca0132()