Lines Matching refs:spec

1132 	struct ca0132_spec *spec = codec->spec;  in chipio_write_address()  local
1135 if (spec->curr_chip_addx == chip_addx) in chipio_write_address()
1148 spec->curr_chip_addx = (res < 0) ? ~0U : chip_addx; in chipio_write_address()
1158 struct ca0132_spec *spec = codec->spec; in chipio_write_data() local
1172 spec->curr_chip_addx = (res != -EIO) ? in chipio_write_data()
1173 (spec->curr_chip_addx + 4) : ~0U; in chipio_write_data()
1203 struct ca0132_spec *spec = codec->spec; in chipio_read_data() local
1223 spec->curr_chip_addx = (res != -EIO) ? in chipio_read_data()
1224 (spec->curr_chip_addx + 4) : ~0U; in chipio_read_data()
1235 struct ca0132_spec *spec = codec->spec; in chipio_write() local
1238 mutex_lock(&spec->chipio_mutex); in chipio_write()
1250 mutex_unlock(&spec->chipio_mutex); in chipio_write()
1286 struct ca0132_spec *spec = codec->spec; in chipio_write_multiple() local
1289 mutex_lock(&spec->chipio_mutex); in chipio_write_multiple()
1296 mutex_unlock(&spec->chipio_mutex); in chipio_write_multiple()
1308 struct ca0132_spec *spec = codec->spec; in chipio_read() local
1311 mutex_lock(&spec->chipio_mutex); in chipio_read()
1323 mutex_unlock(&spec->chipio_mutex); in chipio_read()
1349 struct ca0132_spec *spec = codec->spec; in chipio_set_control_param() local
1357 mutex_lock(&spec->chipio_mutex); in chipio_set_control_param()
1366 mutex_unlock(&spec->chipio_mutex); in chipio_set_control_param()
1461 struct ca0132_spec *spec = codec->spec; in chipio_enable_clocks() local
1463 mutex_lock(&spec->chipio_mutex); in chipio_enable_clocks()
1476 mutex_unlock(&spec->chipio_mutex); in chipio_enable_clocks()
1522 struct ca0132_spec *spec = codec->spec; in dspio_write() local
1527 mutex_lock(&spec->chipio_mutex); in dspio_write()
1542 mutex_unlock(&spec->chipio_mutex); in dspio_write()
1696 struct ca0132_spec *spec = codec->spec; in dspio_get_response_data() local
1703 if ((data & 0x00ffffff) == spec->wait_scp_header) { in dspio_get_response_data()
1704 spec->scp_resp_header = data; in dspio_get_response_data()
1705 spec->scp_resp_count = data >> 27; in dspio_get_response_data()
1706 count = spec->wait_num_data; in dspio_get_response_data()
1707 dspio_read_multiple(codec, spec->scp_resp_data, in dspio_get_response_data()
1708 &spec->scp_resp_count, count); in dspio_get_response_data()
1725 struct ca0132_spec *spec = codec->spec; in dspio_send_scp_message() local
1752 spec->wait_scp_header = *((unsigned int *)send_buf); in dspio_send_scp_message()
1757 spec->wait_scp_header &= 0xffff0000; in dspio_send_scp_message()
1758 spec->wait_scp_header |= (resp_src_id << 8) | (resp_target_id); in dspio_send_scp_message()
1759 spec->wait_num_data = return_buf_size/sizeof(unsigned int) - 1; in dspio_send_scp_message()
1760 spec->wait_scp = 1; in dspio_send_scp_message()
1767 spec->wait_scp = 0; in dspio_send_scp_message()
1776 } while (spec->wait_scp && time_before(jiffies, timeout)); in dspio_send_scp_message()
1778 if (!spec->wait_scp) { in dspio_send_scp_message()
1780 memcpy(&ret_msg->hdr, &spec->scp_resp_header, 4); in dspio_send_scp_message()
1781 memcpy(&ret_msg->data, spec->scp_resp_data, in dspio_send_scp_message()
1782 spec->wait_num_data); in dspio_send_scp_message()
1783 *bytes_returned = (spec->scp_resp_count + 1) * 4; in dspio_send_scp_message()
1788 spec->wait_scp = 0; in dspio_send_scp_message()
2500 struct ca0132_spec *spec = codec->spec; in dma_reset() local
2512 spec->dsp_stream_id = status; in dma_reset()
2563 struct ca0132_spec *spec = dma->codec->spec; in dma_get_stream_id() local
2565 return spec->dsp_stream_id; in dma_get_stream_id()
2858 struct ca0132_spec *spec = codec->spec; in dspxfr_image() local
2902 spec->dsp_stream_id = status; in dspxfr_image()
2974 struct ca0132_spec *spec = codec->spec; in dspload_post_setup() local
2976 if (!spec->use_alt_functions) { in dspload_post_setup()
3103 struct ca0132_spec *spec = codec->spec; in ca0132_mmio_gpio_set() local
3109 writew(gpio_data, spec->mem_base + 0x320); in ca0132_mmio_gpio_set()
3118 struct ca0132_spec *spec = codec->spec; in ca0132_gpio_init() local
3120 switch (spec->quirk) { in ca0132_gpio_init()
3137 struct ca0132_spec *spec = codec->spec; in ca0132_gpio_setup() local
3139 switch (spec->quirk) { in ca0132_gpio_setup()
3281 struct ca0132_spec *spec = codec->spec; in ca0132_playback_pcm_prepare() local
3283 snd_hda_codec_setup_stream(codec, spec->dacs[0], stream_tag, 0, format); in ca0132_playback_pcm_prepare()
3292 struct ca0132_spec *spec = codec->spec; in ca0132_playback_pcm_cleanup() local
3294 if (spec->dsp_state == DSP_DOWNLOADING) in ca0132_playback_pcm_cleanup()
3299 if (spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]) in ca0132_playback_pcm_cleanup()
3302 snd_hda_codec_cleanup_stream(codec, spec->dacs[0]); in ca0132_playback_pcm_cleanup()
3311 struct ca0132_spec *spec = codec->spec; in ca0132_playback_pcm_delay() local
3315 if (spec->dsp_state != DSP_DOWNLOADED) in ca0132_playback_pcm_delay()
3319 if (spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]) { in ca0132_playback_pcm_delay()
3320 if ((spec->effects_switch[SURROUND - EFFECT_START_NID]) || in ca0132_playback_pcm_delay()
3321 (spec->effects_switch[DIALOG_PLUS - EFFECT_START_NID])) in ca0132_playback_pcm_delay()
3326 if (spec->cur_out_type == SPEAKER_OUT) in ca0132_playback_pcm_delay()
3339 struct ca0132_spec *spec = codec->spec; in ca0132_dig_playback_pcm_open() local
3340 return snd_hda_multi_out_dig_open(codec, &spec->multiout); in ca0132_dig_playback_pcm_open()
3349 struct ca0132_spec *spec = codec->spec; in ca0132_dig_playback_pcm_prepare() local
3350 return snd_hda_multi_out_dig_prepare(codec, &spec->multiout, in ca0132_dig_playback_pcm_prepare()
3358 struct ca0132_spec *spec = codec->spec; in ca0132_dig_playback_pcm_cleanup() local
3359 return snd_hda_multi_out_dig_cleanup(codec, &spec->multiout); in ca0132_dig_playback_pcm_cleanup()
3366 struct ca0132_spec *spec = codec->spec; in ca0132_dig_playback_pcm_close() local
3367 return snd_hda_multi_out_dig_close(codec, &spec->multiout); in ca0132_dig_playback_pcm_close()
3389 struct ca0132_spec *spec = codec->spec; in ca0132_capture_pcm_cleanup() local
3391 if (spec->dsp_state == DSP_DOWNLOADING) in ca0132_capture_pcm_cleanup()
3402 struct ca0132_spec *spec = codec->spec; in ca0132_capture_pcm_delay() local
3406 if (spec->dsp_state != DSP_DOWNLOADED) in ca0132_capture_pcm_delay()
3409 if (spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID]) in ca0132_capture_pcm_delay()
3634 struct ca0132_spec *spec = codec->spec; in tuning_ctl_get() local
3639 *valp = spec->cur_ctl_vals[idx]; in tuning_ctl_get()
3660 struct ca0132_spec *spec = codec->spec; in voice_focus_ctl_put() local
3667 if (spec->cur_ctl_vals[idx] == *valp) in voice_focus_ctl_put()
3670 spec->cur_ctl_vals[idx] = *valp; in voice_focus_ctl_put()
3695 struct ca0132_spec *spec = codec->spec; in mic_svm_ctl_put() local
3702 if (spec->cur_ctl_vals[idx] == *valp) in mic_svm_ctl_put()
3705 spec->cur_ctl_vals[idx] = *valp; in mic_svm_ctl_put()
3730 struct ca0132_spec *spec = codec->spec; in equalizer_ctl_put() local
3737 if (spec->cur_ctl_vals[idx] == *valp) in equalizer_ctl_put()
3740 spec->cur_ctl_vals[idx] = *valp; in equalizer_ctl_put()
3811 struct ca0132_spec *spec = codec->spec; in ca0132_init_tuning_defaults() local
3815 spec->cur_ctl_vals[WEDGE_ANGLE - TUNING_CTL_START_NID] = 10; in ca0132_init_tuning_defaults()
3817 spec->cur_ctl_vals[SVM_LEVEL - TUNING_CTL_START_NID] = 74; in ca0132_init_tuning_defaults()
3821 spec->cur_ctl_vals[i] = 24; in ca0132_init_tuning_defaults()
3833 struct ca0132_spec *spec = codec->spec; in ca0132_select_out() local
3844 auto_jack = spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID]; in ca0132_select_out()
3847 jack_present = snd_hda_jack_detect(codec, spec->unsol_tag_hp); in ca0132_select_out()
3850 spec->vnode_lswitch[VNID_HP_SEL - VNODE_START_NID]; in ca0132_select_out()
3853 spec->cur_out_type = HEADPHONE_OUT; in ca0132_select_out()
3855 spec->cur_out_type = SPEAKER_OUT; in ca0132_select_out()
3857 if (spec->cur_out_type == SPEAKER_OUT) { in ca0132_select_out()
3871 snd_hda_codec_write(codec, spec->out_pins[1], 0, in ca0132_select_out()
3873 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_select_out()
3875 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_select_out()
3877 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_select_out()
3881 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[1], 0, in ca0132_select_out()
3883 snd_hda_set_pin_ctl(codec, spec->out_pins[1], in ca0132_select_out()
3886 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[0], 0, in ca0132_select_out()
3888 snd_hda_set_pin_ctl(codec, spec->out_pins[0], in ca0132_select_out()
3904 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_select_out()
3906 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_select_out()
3908 snd_hda_codec_write(codec, spec->out_pins[1], 0, in ca0132_select_out()
3910 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_select_out()
3914 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[0], 0, in ca0132_select_out()
3916 snd_hda_set_pin_ctl(codec, spec->out_pins[0], in ca0132_select_out()
3919 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[1], 0, in ca0132_select_out()
3921 snd_hda_set_pin_ctl(codec, spec->out_pins[1], in ca0132_select_out()
3943 struct ca0132_spec *spec = codec->spec; in ca0132_alt_select_out() local
3951 hda_nid_t headphone_nid = spec->out_pins[1]; in ca0132_alt_select_out()
3957 auto_jack = spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID]; in ca0132_alt_select_out()
3965 jack_present = snd_hda_jack_detect(codec, spec->unsol_tag_hp) || in ca0132_alt_select_out()
3966 snd_hda_jack_detect(codec, spec->unsol_tag_front_hp); in ca0132_alt_select_out()
3969 spec->cur_out_type = HEADPHONE_OUT; in ca0132_alt_select_out()
3971 spec->cur_out_type = SPEAKER_OUT; in ca0132_alt_select_out()
3973 spec->cur_out_type = spec->out_enum_val; in ca0132_alt_select_out()
3981 switch (spec->cur_out_type) { in ca0132_alt_select_out()
3985 switch (spec->quirk) { in ca0132_alt_select_out()
4003 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[1], 0, in ca0132_alt_select_out()
4005 snd_hda_set_pin_ctl(codec, spec->out_pins[1], in ca0132_alt_select_out()
4008 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[0], 0, in ca0132_alt_select_out()
4010 snd_hda_set_pin_ctl(codec, spec->out_pins[0], in ca0132_alt_select_out()
4013 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_alt_select_out()
4017 if (spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]) in ca0132_alt_select_out()
4025 switch (spec->quirk) { in ca0132_alt_select_out()
4042 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_alt_select_out()
4046 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[0], 0, in ca0132_alt_select_out()
4048 snd_hda_set_pin_ctl(codec, spec->out_pins[0], in ca0132_alt_select_out()
4053 if (snd_hda_jack_detect(codec, spec->unsol_tag_front_hp)) in ca0132_alt_select_out()
4054 headphone_nid = spec->out_pins[2]; in ca0132_alt_select_out()
4055 else if (snd_hda_jack_detect(codec, spec->unsol_tag_hp)) in ca0132_alt_select_out()
4056 headphone_nid = spec->out_pins[1]; in ca0132_alt_select_out()
4063 if (spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]) in ca0132_alt_select_out()
4071 switch (spec->quirk) { in ca0132_alt_select_out()
4088 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[0], 0, in ca0132_alt_select_out()
4090 snd_hda_set_pin_ctl(codec, spec->out_pins[0], in ca0132_alt_select_out()
4093 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[1], 0, in ca0132_alt_select_out()
4095 snd_hda_set_pin_ctl(codec, spec->out_pins[1], in ca0132_alt_select_out()
4098 snd_hda_codec_write(codec, spec->out_pins[0], 0, in ca0132_alt_select_out()
4101 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[2], 0, in ca0132_alt_select_out()
4103 snd_hda_set_pin_ctl(codec, spec->out_pins[2], in ca0132_alt_select_out()
4106 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[3], 0, in ca0132_alt_select_out()
4108 snd_hda_set_pin_ctl(codec, spec->out_pins[3], in ca0132_alt_select_out()
4111 if (spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]) in ca0132_alt_select_out()
4119 for (i = 0; i < alt_out_presets[spec->cur_out_type].commands; i++) { in ca0132_alt_select_out()
4121 alt_out_presets[spec->cur_out_type].mids[i], in ca0132_alt_select_out()
4122 alt_out_presets[spec->cur_out_type].reqs[i], in ca0132_alt_select_out()
4123 alt_out_presets[spec->cur_out_type].vals[i]); in ca0132_alt_select_out()
4137 struct ca0132_spec *spec = container_of( in ca0132_unsol_hp_delayed() local
4141 if (spec->use_alt_functions) in ca0132_unsol_hp_delayed()
4142 ca0132_alt_select_out(spec->codec); in ca0132_unsol_hp_delayed()
4144 ca0132_select_out(spec->codec); in ca0132_unsol_hp_delayed()
4146 jack = snd_hda_jack_tbl_get(spec->codec, spec->unsol_tag_hp); in ca0132_unsol_hp_delayed()
4149 snd_hda_jack_report_sync(spec->codec); in ca0132_unsol_hp_delayed()
4166 struct ca0132_spec *spec = codec->spec; in ca0132_set_vipsource() local
4169 if (spec->dsp_state != DSP_DOWNLOADED) in ca0132_set_vipsource()
4173 if (!spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] || in ca0132_set_vipsource()
4178 if (spec->cur_mic_type == DIGITAL_MIC) in ca0132_set_vipsource()
4188 if (spec->cur_mic_type == DIGITAL_MIC) in ca0132_set_vipsource()
4204 struct ca0132_spec *spec = codec->spec; in ca0132_alt_set_vipsource() local
4207 if (spec->dsp_state != DSP_DOWNLOADED) in ca0132_alt_set_vipsource()
4216 if (!spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] || in ca0132_alt_set_vipsource()
4217 (val == 0) || spec->in_enum_val == REAR_LINE_IN) { in ca0132_alt_set_vipsource()
4226 if (spec->quirk == QUIRK_R3DI) in ca0132_alt_set_vipsource()
4230 if (spec->in_enum_val == REAR_LINE_IN) in ca0132_alt_set_vipsource()
4233 if (spec->quirk == QUIRK_SBZ) in ca0132_alt_set_vipsource()
4245 if (spec->quirk == QUIRK_R3DI) in ca0132_alt_set_vipsource()
4248 if (spec->effects_switch[VOICE_FOCUS - EFFECT_START_NID]) in ca0132_alt_set_vipsource()
4275 struct ca0132_spec *spec = codec->spec; in ca0132_select_mic() local
4283 auto_jack = spec->vnode_lswitch[VNID_AMIC1_ASEL - VNODE_START_NID]; in ca0132_select_mic()
4286 jack_present = snd_hda_jack_detect(codec, spec->unsol_tag_amic1); in ca0132_select_mic()
4289 spec->vnode_lswitch[VNID_AMIC1_SEL - VNODE_START_NID]; in ca0132_select_mic()
4292 spec->cur_mic_type = LINE_MIC_IN; in ca0132_select_mic()
4294 spec->cur_mic_type = DIGITAL_MIC; in ca0132_select_mic()
4296 if (spec->cur_mic_type == DIGITAL_MIC) { in ca0132_select_mic()
4303 spec->effects_switch in ca0132_select_mic()
4309 ca0132_mic_boost_set(codec, spec->cur_mic_boost); in ca0132_select_mic()
4327 struct ca0132_spec *spec = codec->spec; in ca0132_alt_select_in() local
4337 spec->cur_mic_type = spec->in_enum_val; in ca0132_alt_select_in()
4339 switch (spec->cur_mic_type) { in ca0132_alt_select_in()
4341 switch (spec->quirk) { in ca0132_alt_select_in()
4358 if (spec->quirk == QUIRK_R3DI) in ca0132_alt_select_in()
4366 if (spec->quirk == QUIRK_SBZ) { in ca0132_alt_select_in()
4370 ca0132_alt_mic_boost_set(codec, spec->mic_boost_enum_val); in ca0132_alt_select_in()
4374 switch (spec->quirk) { in ca0132_alt_select_in()
4386 if (spec->quirk == QUIRK_R3DI) in ca0132_alt_select_in()
4392 if (spec->quirk == QUIRK_SBZ) { in ca0132_alt_select_in()
4401 switch (spec->quirk) { in ca0132_alt_select_in()
4419 if (spec->quirk == QUIRK_R3DI) in ca0132_alt_select_in()
4427 if (spec->quirk == QUIRK_SBZ) { in ca0132_alt_select_in()
4431 ca0132_alt_mic_boost_set(codec, spec->mic_boost_enum_val); in ca0132_alt_select_in()
4448 struct ca0132_spec *spec = codec->spec; in ca0132_is_vnode_effective() local
4453 nid = spec->shared_out_nid; in ca0132_is_vnode_effective()
4456 nid = spec->shared_mic_nid; in ca0132_is_vnode_effective()
4474 struct ca0132_spec *spec = codec->spec; in ca0132_voicefx_set() local
4479 tmp = spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] ? in ca0132_voicefx_set()
4496 struct ca0132_spec *spec = codec->spec; in ca0132_effects_set() local
4508 if (!spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]) in ca0132_effects_set()
4515 if (!spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID]) in ca0132_effects_set()
4519 if ((nid == VOICE_FOCUS) && (spec->cur_mic_type != DIGITAL_MIC)) in ca0132_effects_set()
4523 if ((nid == VOICE_FOCUS) && (spec->quirk == QUIRK_SBZ) in ca0132_effects_set()
4524 && (spec->cur_mic_type != REAR_LINE_IN)) { in ca0132_effects_set()
4525 if (spec->effects_switch[CRYSTAL_VOICE - in ca0132_effects_set()
4528 if (spec->effects_switch[VOICE_FOCUS - in ca0132_effects_set()
4542 if ((nid == NOISE_REDUCTION) && (spec->quirk == QUIRK_SBZ) in ca0132_effects_set()
4543 && (spec->cur_mic_type != REAR_LINE_IN)) { in ca0132_effects_set()
4544 if (spec->effects_switch[CRYSTAL_VOICE - in ca0132_effects_set()
4546 if (spec->effects_switch[NOISE_REDUCTION - in ca0132_effects_set()
4558 if (spec->use_alt_functions && in ca0132_effects_set()
4559 spec->in_enum_val == REAR_LINE_IN) in ca0132_effects_set()
4581 struct ca0132_spec *spec = codec->spec; in ca0132_pe_switch_set() local
4586 spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]); in ca0132_pe_switch_set()
4588 if (spec->use_alt_functions) in ca0132_pe_switch_set()
4595 ret |= ca0132_effects_set(codec, nid, spec->effects_switch[i]); in ca0132_pe_switch_set()
4603 struct ca0132_spec *spec = codec->spec; in stop_mic1() local
4604 unsigned int oldval = snd_hda_codec_read(codec, spec->adcs[0], 0, in stop_mic1()
4607 snd_hda_codec_write(codec, spec->adcs[0], 0, in stop_mic1()
4616 struct ca0132_spec *spec = codec->spec; in resume_mic1() local
4619 snd_hda_codec_write(codec, spec->adcs[0], 0, in resume_mic1()
4629 struct ca0132_spec *spec = codec->spec; in ca0132_cvoice_switch_set() local
4635 spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID]); in ca0132_cvoice_switch_set()
4641 ret |= ca0132_effects_set(codec, nid, spec->effects_switch[i]); in ca0132_cvoice_switch_set()
4644 ret |= ca0132_voicefx_set(codec, (spec->voicefx_val ? 1 : 0)); in ca0132_cvoice_switch_set()
4648 if (spec->use_alt_functions) in ca0132_cvoice_switch_set()
4658 struct ca0132_spec *spec = codec->spec; in ca0132_mic_boost_set() local
4662 ret = snd_hda_codec_amp_update(codec, spec->input_pins[0], 0, in ca0132_mic_boost_set()
4665 ret = snd_hda_codec_amp_update(codec, spec->input_pins[0], 0, in ca0132_mic_boost_set()
4673 struct ca0132_spec *spec = codec->spec; in ca0132_alt_mic_boost_set() local
4676 ret = snd_hda_codec_amp_update(codec, spec->input_pins[0], 0, in ca0132_alt_mic_boost_set()
4689 struct ca0132_spec *spec = codec->spec; in ca0132_vnode_switch_set() local
4694 spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID]; in ca0132_vnode_switch_set()
4696 if (spec->use_alt_functions) in ca0132_vnode_switch_set()
4706 spec->vnode_lswitch[VNID_AMIC1_ASEL - VNODE_START_NID]; in ca0132_vnode_switch_set()
4713 if (spec->use_alt_functions) in ca0132_vnode_switch_set()
4795 struct ca0132_spec *spec = codec->spec; in ca0132_alt_xbass_xover_slider_ctl_get() local
4798 *valp = spec->xbass_xover_freq; in ca0132_alt_xbass_xover_slider_ctl_get()
4806 struct ca0132_spec *spec = codec->spec; in ca0132_alt_slider_ctl_get() local
4811 *valp = spec->fx_ctl_val[idx]; in ca0132_alt_slider_ctl_get()
4849 struct ca0132_spec *spec = codec->spec; in ca0132_alt_xbass_xover_slider_put() local
4855 if (spec->xbass_xover_freq == *valp) in ca0132_alt_xbass_xover_slider_put()
4858 spec->xbass_xover_freq = *valp; in ca0132_alt_xbass_xover_slider_put()
4870 struct ca0132_spec *spec = codec->spec; in ca0132_alt_effect_slider_put() local
4877 if (spec->fx_ctl_val[idx] == *valp) in ca0132_alt_effect_slider_put()
4880 spec->fx_ctl_val[idx] = *valp; in ca0132_alt_effect_slider_put()
4917 struct ca0132_spec *spec = codec->spec; in ca0132_alt_mic_boost_get() local
4919 ucontrol->value.enumerated.item[0] = spec->mic_boost_enum_val; in ca0132_alt_mic_boost_get()
4927 struct ca0132_spec *spec = codec->spec; in ca0132_alt_mic_boost_put() local
4937 spec->mic_boost_enum_val = sel; in ca0132_alt_mic_boost_put()
4939 if (spec->in_enum_val != REAR_LINE_IN) in ca0132_alt_mic_boost_put()
4940 ca0132_alt_mic_boost_set(codec, spec->mic_boost_enum_val); in ca0132_alt_mic_boost_put()
4968 struct ca0132_spec *spec = codec->spec; in ca0132_alt_input_source_get() local
4970 ucontrol->value.enumerated.item[0] = spec->in_enum_val; in ca0132_alt_input_source_get()
4978 struct ca0132_spec *spec = codec->spec; in ca0132_alt_input_source_put() local
4988 spec->in_enum_val = sel; in ca0132_alt_input_source_put()
5013 struct ca0132_spec *spec = codec->spec; in ca0132_alt_output_select_get() local
5015 ucontrol->value.enumerated.item[0] = spec->out_enum_val; in ca0132_alt_output_select_get()
5023 struct ca0132_spec *spec = codec->spec; in ca0132_alt_output_select_put() local
5034 spec->out_enum_val = sel; in ca0132_alt_output_select_put()
5036 auto_jack = spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID]; in ca0132_alt_output_select_put()
5069 struct ca0132_spec *spec = codec->spec; in ca0132_alt_svm_setting_get() local
5071 ucontrol->value.enumerated.item[0] = spec->smart_volume_setting; in ca0132_alt_svm_setting_get()
5079 struct ca0132_spec *spec = codec->spec; in ca0132_alt_svm_setting_put() local
5091 spec->smart_volume_setting = sel; in ca0132_alt_svm_setting_put()
5133 struct ca0132_spec *spec = codec->spec; in ca0132_alt_eq_preset_get() local
5135 ucontrol->value.enumerated.item[0] = spec->eq_preset_val; in ca0132_alt_eq_preset_get()
5143 struct ca0132_spec *spec = codec->spec; in ca0132_alt_eq_preset_put() local
5166 spec->eq_preset_val = sel; in ca0132_alt_eq_preset_put()
5190 struct ca0132_spec *spec = codec->spec; in ca0132_voicefx_get() local
5192 ucontrol->value.enumerated.item[0] = spec->voicefx_val; in ca0132_voicefx_get()
5200 struct ca0132_spec *spec = codec->spec; in ca0132_voicefx_put() local
5223 spec->voicefx_val = sel; in ca0132_voicefx_put()
5235 struct ca0132_spec *spec = codec->spec; in ca0132_switch_get() local
5243 *valp = spec->vnode_lswitch[nid - VNODE_START_NID]; in ca0132_switch_get()
5247 *valp = spec->vnode_rswitch[nid - VNODE_START_NID]; in ca0132_switch_get()
5255 *valp = spec->effects_switch[nid - EFFECT_START_NID]; in ca0132_switch_get()
5260 if (nid == spec->input_pins[0]) { in ca0132_switch_get()
5261 *valp = spec->cur_mic_boost; in ca0132_switch_get()
5272 struct ca0132_spec *spec = codec->spec; in ca0132_switch_put() local
5285 spec->vnode_lswitch[nid - VNODE_START_NID] = *valp; in ca0132_switch_put()
5289 spec->vnode_rswitch[nid - VNODE_START_NID] = *valp; in ca0132_switch_put()
5298 spec->effects_switch[nid - EFFECT_START_NID] = *valp; in ca0132_switch_put()
5305 spec->effects_switch[nid - EFFECT_START_NID] = *valp; in ca0132_switch_put()
5313 spec->effects_switch[nid - EFFECT_START_NID] = *valp; in ca0132_switch_put()
5319 if (nid == spec->input_pins[0]) { in ca0132_switch_put()
5320 spec->cur_mic_boost = *valp; in ca0132_switch_put()
5321 if (spec->use_alt_functions) { in ca0132_switch_put()
5322 if (spec->in_enum_val != REAR_LINE_IN) in ca0132_switch_put()
5326 if (spec->cur_mic_type != DIGITAL_MIC) in ca0132_switch_put()
5348 struct ca0132_spec *spec = codec->spec; in ca0132_alt_dsp_volume_put() local
5357 lookup_val = spec->vnode_lvol[nid - VNODE_START_NID]; in ca0132_alt_dsp_volume_put()
5364 lookup_val = spec->vnode_rvol[nid - VNODE_START_NID]; in ca0132_alt_dsp_volume_put()
5380 struct ca0132_spec *spec = codec->spec; in ca0132_volume_info() local
5390 nid = spec->shared_out_nid; in ca0132_volume_info()
5400 nid = spec->shared_mic_nid; in ca0132_volume_info()
5418 struct ca0132_spec *spec = codec->spec; in ca0132_volume_get() local
5425 *valp = spec->vnode_lvol[nid - VNODE_START_NID]; in ca0132_volume_get()
5429 *valp = spec->vnode_rvol[nid - VNODE_START_NID]; in ca0132_volume_get()
5439 struct ca0132_spec *spec = codec->spec; in ca0132_volume_put() local
5449 spec->vnode_lvol[nid - VNODE_START_NID] = *valp; in ca0132_volume_put()
5453 spec->vnode_rvol[nid - VNODE_START_NID] = *valp; in ca0132_volume_put()
5486 struct ca0132_spec *spec = codec->spec; in ca0132_alt_volume_put() local
5504 spec->vnode_lvol[vnid - VNODE_START_NID] = *valp; in ca0132_alt_volume_put()
5508 spec->vnode_rvol[vnid - VNODE_START_NID] = *valp; in ca0132_alt_volume_put()
5526 struct ca0132_spec *spec = codec->spec; in ca0132_volume_tlv() local
5536 nid = spec->shared_out_nid; in ca0132_volume_tlv()
5546 nid = spec->shared_mic_nid; in ca0132_volume_tlv()
5599 struct ca0132_spec *spec = codec->spec; in add_fx_switch() local
5607 if ((spec->use_alt_controls) && (nid <= IN_EFFECT_END_NID)) in add_fx_switch()
5829 struct ca0132_spec *spec = codec->spec; in ca0132_build_controls() local
5834 for (i = 0; i < spec->num_mixers; i++) { in ca0132_build_controls()
5835 err = snd_hda_add_new_ctls(codec, spec->mixers[i]); in ca0132_build_controls()
5840 if (spec->use_alt_functions) { in ca0132_build_controls()
5841 snd_hda_set_vmaster_tlv(codec, spec->dacs[0], HDA_OUTPUT, in ca0132_build_controls()
5842 spec->tlv); in ca0132_build_controls()
5844 spec->tlv, ca0132_alt_slave_pfxs, in ca0132_build_controls()
5849 true, &spec->vmaster_mute.sw_kctl); in ca0132_build_controls()
5859 if (spec->quirk == QUIRK_SBZ || spec->quirk == QUIRK_R3D) { in ca0132_build_controls()
5876 if (spec->use_alt_controls) { in ca0132_build_controls()
5922 if (spec->use_alt_functions) { in ca0132_build_controls()
5931 err = snd_hda_jack_add_kctls(codec, &spec->autocfg); in ca0132_build_controls()
5935 if (spec->dig_out) { in ca0132_build_controls()
5936 err = snd_hda_create_spdif_out_ctls(codec, spec->dig_out, in ca0132_build_controls()
5937 spec->dig_out); in ca0132_build_controls()
5940 err = snd_hda_create_spdif_share_sw(codec, &spec->multiout); in ca0132_build_controls()
5946 if (spec->dig_in) { in ca0132_build_controls()
5947 err = snd_hda_create_spdif_in_ctls(codec, spec->dig_in); in ca0132_build_controls()
5952 if (spec->use_alt_functions) in ca0132_build_controls()
6003 struct ca0132_spec *spec = codec->spec; in ca0132_build_pcms() local
6009 if (spec->use_alt_functions) { in ca0132_build_pcms()
6015 info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->dacs[0]; in ca0132_build_pcms()
6017 spec->multiout.max_channels; in ca0132_build_pcms()
6020 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[0]; in ca0132_build_pcms()
6023 if (!spec->use_alt_functions) { in ca0132_build_pcms()
6030 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[1]; in ca0132_build_pcms()
6038 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[2]; in ca0132_build_pcms()
6040 if (!spec->dig_out && !spec->dig_in) in ca0132_build_pcms()
6047 if (spec->dig_out) { in ca0132_build_pcms()
6050 info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->dig_out; in ca0132_build_pcms()
6052 if (spec->dig_in) { in ca0132_build_pcms()
6055 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->dig_in; in ca0132_build_pcms()
6110 struct ca0132_spec *spec = codec->spec; in ca0132_set_dmic() local
6124 val = spec->dmic_ctl; in ca0132_set_dmic()
6126 snd_hda_codec_write(codec, spec->input_pins[0], 0, in ca0132_set_dmic()
6129 if (!(spec->dmic_ctl & 0x20)) in ca0132_set_dmic()
6136 val = spec->dmic_ctl; in ca0132_set_dmic()
6139 snd_hda_codec_write(codec, spec->input_pins[0], 0, in ca0132_set_dmic()
6142 if (!(spec->dmic_ctl & 0x20)) in ca0132_set_dmic()
6154 struct ca0132_spec *spec = codec->spec; in ca0132_init_dmic() local
6167 snd_hda_codec_write(codec, spec->input_pins[0], 0, in ca0132_init_dmic()
6177 snd_hda_codec_write(codec, spec->input_pins[0], 0, in ca0132_init_dmic()
6187 if (spec->quirk == QUIRK_ALIENWARE_M17XR4) in ca0132_init_dmic()
6192 spec->dmic_ctl = val; in ca0132_init_dmic()
6193 snd_hda_codec_write(codec, spec->input_pins[0], 0, in ca0132_init_dmic()
6202 struct ca0132_spec *spec = codec->spec; in ca0132_init_analog_mic2() local
6204 mutex_lock(&spec->chipio_mutex); in ca0132_init_analog_mic2()
6217 mutex_unlock(&spec->chipio_mutex); in ca0132_init_analog_mic2()
6222 struct ca0132_spec *spec = codec->spec; in ca0132_refresh_widget_caps() local
6228 for (i = 0; i < spec->multiout.num_dacs; i++) in ca0132_refresh_widget_caps()
6229 refresh_amp_caps(codec, spec->dacs[i], HDA_OUTPUT); in ca0132_refresh_widget_caps()
6231 for (i = 0; i < spec->num_outputs; i++) in ca0132_refresh_widget_caps()
6232 refresh_amp_caps(codec, spec->out_pins[i], HDA_OUTPUT); in ca0132_refresh_widget_caps()
6234 for (i = 0; i < spec->num_inputs; i++) { in ca0132_refresh_widget_caps()
6235 refresh_amp_caps(codec, spec->adcs[i], HDA_INPUT); in ca0132_refresh_widget_caps()
6236 refresh_amp_caps(codec, spec->input_pins[i], HDA_INPUT); in ca0132_refresh_widget_caps()
6314 struct ca0132_spec *spec = codec->spec; in sbz_connect_streams() local
6316 mutex_lock(&spec->chipio_mutex); in sbz_connect_streams()
6335 mutex_unlock(&spec->chipio_mutex); in sbz_connect_streams()
6347 struct ca0132_spec *spec = codec->spec; in sbz_chipio_startup_data() local
6349 mutex_lock(&spec->chipio_mutex); in sbz_chipio_startup_data()
6379 mutex_unlock(&spec->chipio_mutex); in sbz_chipio_startup_data()
6435 struct ca0132_spec *spec = codec->spec; in ca0132_setup_defaults() local
6440 if (spec->dsp_state != DSP_DOWNLOADED) in ca0132_setup_defaults()
6480 struct ca0132_spec *spec = codec->spec; in r3d_setup_defaults() local
6485 if (spec->dsp_state != DSP_DOWNLOADED) in r3d_setup_defaults()
6504 if (spec->quirk == QUIRK_R3DI) in r3d_setup_defaults()
6525 struct ca0132_spec *spec = codec->spec; in sbz_setup_defaults() local
6530 if (spec->dsp_state != DSP_DOWNLOADED) in sbz_setup_defaults()
6586 snd_hda_codec_setup_stream(codec, spec->dacs[0], spec->dsp_stream_id, in sbz_setup_defaults()
6589 snd_hda_codec_cleanup_stream(codec, spec->dacs[0]); in sbz_setup_defaults()
6591 snd_hda_codec_setup_stream(codec, spec->dacs[0], spec->dsp_stream_id, in sbz_setup_defaults()
6594 snd_hda_codec_cleanup_stream(codec, spec->dacs[0]); in sbz_setup_defaults()
6602 struct ca0132_spec *spec = codec->spec; in ca0132_init_flags() local
6604 if (spec->use_alt_functions) { in ca0132_init_flags()
6635 struct ca0132_spec *spec = codec->spec; in ca0132_init_params() local
6637 if (spec->use_alt_functions) { in ca0132_init_params()
6666 struct ca0132_spec *spec = codec->spec; in ca0132_download_dsp_images() local
6674 switch (spec->quirk) { in ca0132_download_dsp_images()
6679 spec->alt_firmware_present = false; in ca0132_download_dsp_images()
6682 spec->alt_firmware_present = true; in ca0132_download_dsp_images()
6689 spec->alt_firmware_present = false; in ca0132_download_dsp_images()
6692 spec->alt_firmware_present = true; in ca0132_download_dsp_images()
6696 spec->alt_firmware_present = false; in ca0132_download_dsp_images()
6703 if (!spec->alt_firmware_present) { in ca0132_download_dsp_images()
6726 struct ca0132_spec *spec = codec->spec; in ca0132_download_dsp() local
6732 if (spec->dsp_state == DSP_DOWNLOAD_FAILED) in ca0132_download_dsp()
6736 if (spec->dsp_state != DSP_DOWNLOADED) { in ca0132_download_dsp()
6737 spec->dsp_state = DSP_DOWNLOADING; in ca0132_download_dsp()
6740 spec->dsp_state = DSP_DOWNLOAD_FAILED; in ca0132_download_dsp()
6742 spec->dsp_state = DSP_DOWNLOADED; in ca0132_download_dsp()
6746 if (spec->dsp_state == DSP_DOWNLOADED && (!spec->use_alt_functions)) in ca0132_download_dsp()
6753 struct ca0132_spec *spec = codec->spec; in ca0132_process_dsp_response() local
6756 if (spec->wait_scp) { in ca0132_process_dsp_response()
6758 spec->wait_scp = 0; in ca0132_process_dsp_response()
6766 struct ca0132_spec *spec = codec->spec; in hp_callback() local
6772 cancel_delayed_work_sync(&spec->unsol_hp_work); in hp_callback()
6773 schedule_delayed_work(&spec->unsol_hp_work, msecs_to_jiffies(500)); in hp_callback()
6781 struct ca0132_spec *spec = codec->spec; in amic_callback() local
6783 if (spec->use_alt_functions) in amic_callback()
6791 struct ca0132_spec *spec = codec->spec; in ca0132_init_unsol() local
6792 snd_hda_jack_detect_enable_callback(codec, spec->unsol_tag_hp, hp_callback); in ca0132_init_unsol()
6793 snd_hda_jack_detect_enable_callback(codec, spec->unsol_tag_amic1, in ca0132_init_unsol()
6798 if (spec->use_alt_functions) in ca0132_init_unsol()
6800 spec->unsol_tag_front_hp, hp_callback); in ca0132_init_unsol()
6880 struct ca0132_spec *spec = codec->spec; in ca0132_init_chip() local
6885 mutex_init(&spec->chipio_mutex); in ca0132_init_chip()
6887 spec->cur_out_type = SPEAKER_OUT; in ca0132_init_chip()
6888 if (!spec->use_alt_functions) in ca0132_init_chip()
6889 spec->cur_mic_type = DIGITAL_MIC; in ca0132_init_chip()
6891 spec->cur_mic_type = REAR_MIC; in ca0132_init_chip()
6893 spec->cur_mic_boost = 0; in ca0132_init_chip()
6896 spec->vnode_lvol[i] = 0x5a; in ca0132_init_chip()
6897 spec->vnode_rvol[i] = 0x5a; in ca0132_init_chip()
6898 spec->vnode_lswitch[i] = 0; in ca0132_init_chip()
6899 spec->vnode_rswitch[i] = 0; in ca0132_init_chip()
6908 spec->effects_switch[i] = on ? 1 : 0; in ca0132_init_chip()
6914 if (spec->use_alt_controls) { in ca0132_init_chip()
6915 spec->xbass_xover_freq = 8; in ca0132_init_chip()
6917 spec->fx_ctl_val[i] = effect_slider_defaults[i]; in ca0132_init_chip()
6920 spec->voicefx_val = 0; in ca0132_init_chip()
6921 spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID] = 1; in ca0132_init_chip()
6922 spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] = 0; in ca0132_init_chip()
6943 struct ca0132_spec *spec = codec->spec; in sbz_region2_exit() local
6947 writeb(0x0, spec->mem_base + 0x100); in sbz_region2_exit()
6949 writeb(0xb3, spec->mem_base + 0x304); in sbz_region2_exit()
7058 struct ca0132_spec *spec = codec->spec; in sbz_dsp_startup_check() local
7065 if (spec->startup_check_entered) in sbz_dsp_startup_check()
7068 spec->startup_check_entered = true; in sbz_dsp_startup_check()
7090 spec->dsp_state = DSP_DOWNLOAD_INIT; in sbz_dsp_startup_check()
7138 struct ca0132_spec *spec = codec->spec; in sbz_pre_dsp_setup() local
7140 writel(0x00820680, spec->mem_base + 0x01C); in sbz_pre_dsp_setup()
7141 writel(0x00820680, spec->mem_base + 0x01C); in sbz_pre_dsp_setup()
7206 struct ca0132_spec *spec = codec->spec; in ca0132_mmio_init() local
7208 writel(0x00000000, spec->mem_base + 0x400); in ca0132_mmio_init()
7209 writel(0x00000000, spec->mem_base + 0x408); in ca0132_mmio_init()
7210 writel(0x00000000, spec->mem_base + 0x40C); in ca0132_mmio_init()
7211 writel(0x00880680, spec->mem_base + 0x01C); in ca0132_mmio_init()
7212 writel(0x00000083, spec->mem_base + 0xC0C); in ca0132_mmio_init()
7213 writel(0x00000030, spec->mem_base + 0xC00); in ca0132_mmio_init()
7214 writel(0x00000000, spec->mem_base + 0xC04); in ca0132_mmio_init()
7215 writel(0x00000003, spec->mem_base + 0xC0C); in ca0132_mmio_init()
7216 writel(0x00000003, spec->mem_base + 0xC0C); in ca0132_mmio_init()
7217 writel(0x00000003, spec->mem_base + 0xC0C); in ca0132_mmio_init()
7218 writel(0x00000003, spec->mem_base + 0xC0C); in ca0132_mmio_init()
7219 writel(0x000000C1, spec->mem_base + 0xC08); in ca0132_mmio_init()
7220 writel(0x000000F1, spec->mem_base + 0xC08); in ca0132_mmio_init()
7221 writel(0x00000001, spec->mem_base + 0xC08); in ca0132_mmio_init()
7222 writel(0x000000C7, spec->mem_base + 0xC08); in ca0132_mmio_init()
7223 writel(0x000000C1, spec->mem_base + 0xC08); in ca0132_mmio_init()
7224 writel(0x00000080, spec->mem_base + 0xC04); in ca0132_mmio_init()
7234 struct ca0132_spec *spec = codec->spec; in ca0132_alt_init() local
7238 switch (spec->quirk) { in ca0132_alt_init()
7243 snd_hda_sequence_write(codec, spec->chip_init_verbs); in ca0132_alt_init()
7244 snd_hda_sequence_write(codec, spec->desktop_init_verbs); in ca0132_alt_init()
7252 snd_hda_sequence_write(codec, spec->chip_init_verbs); in ca0132_alt_init()
7257 snd_hda_sequence_write(codec, spec->chip_init_verbs); in ca0132_alt_init()
7258 snd_hda_sequence_write(codec, spec->desktop_init_verbs); in ca0132_alt_init()
7265 struct ca0132_spec *spec = codec->spec; in ca0132_init() local
7266 struct auto_pin_cfg *cfg = &spec->autocfg; in ca0132_init()
7280 if (spec->dsp_state == DSP_DOWNLOADED) { in ca0132_init()
7283 spec->dsp_reload = true; in ca0132_init()
7284 spec->dsp_state = DSP_DOWNLOAD_INIT; in ca0132_init()
7286 if (spec->quirk == QUIRK_SBZ) in ca0132_init()
7292 if (spec->dsp_state != DSP_DOWNLOAD_FAILED) in ca0132_init()
7293 spec->dsp_state = DSP_DOWNLOAD_INIT; in ca0132_init()
7294 spec->curr_chip_addx = INVALID_CHIP_ADDRESS; in ca0132_init()
7296 if (spec->use_pci_mmio) in ca0132_init()
7305 snd_hda_sequence_write(codec, spec->base_init_verbs); in ca0132_init()
7307 if (spec->use_alt_functions) in ca0132_init()
7314 switch (spec->quirk) { in ca0132_init()
7329 for (i = 0; i < spec->num_outputs; i++) in ca0132_init()
7330 init_output(codec, spec->out_pins[i], spec->dacs[0]); in ca0132_init()
7332 init_output(codec, cfg->dig_out_pins[0], spec->dig_out); in ca0132_init()
7334 for (i = 0; i < spec->num_inputs; i++) in ca0132_init()
7335 init_input(codec, spec->input_pins[i], spec->adcs[i]); in ca0132_init()
7337 init_input(codec, cfg->dig_in_pin, spec->dig_in); in ca0132_init()
7339 if (!spec->use_alt_functions) { in ca0132_init()
7340 snd_hda_sequence_write(codec, spec->chip_init_verbs); in ca0132_init()
7347 if (spec->quirk == QUIRK_SBZ) in ca0132_init()
7350 snd_hda_sequence_write(codec, spec->spec_init_verbs); in ca0132_init()
7351 if (spec->use_alt_functions) { in ca0132_init()
7365 if (spec->dsp_reload) { in ca0132_init()
7366 spec->dsp_reload = false; in ca0132_init()
7377 struct ca0132_spec *spec = codec->spec; in ca0132_free() local
7379 cancel_delayed_work_sync(&spec->unsol_hp_work); in ca0132_free()
7381 switch (spec->quirk) { in ca0132_free()
7393 snd_hda_sequence_write(codec, spec->base_exit_verbs); in ca0132_free()
7397 if (spec->mem_base) in ca0132_free()
7398 iounmap(spec->mem_base); in ca0132_free()
7399 kfree(spec->spec_init_verbs); in ca0132_free()
7400 kfree(codec->spec); in ca0132_free()
7419 struct ca0132_spec *spec = codec->spec; in ca0132_config() local
7421 spec->dacs[0] = 0x2; in ca0132_config()
7422 spec->dacs[1] = 0x3; in ca0132_config()
7423 spec->dacs[2] = 0x4; in ca0132_config()
7425 spec->multiout.dac_nids = spec->dacs; in ca0132_config()
7426 spec->multiout.num_dacs = 3; in ca0132_config()
7428 if (!spec->use_alt_functions) in ca0132_config()
7429 spec->multiout.max_channels = 2; in ca0132_config()
7431 spec->multiout.max_channels = 6; in ca0132_config()
7433 switch (spec->quirk) { in ca0132_config()
7438 spec->num_outputs = 2; in ca0132_config()
7439 spec->out_pins[0] = 0x0b; /* speaker out */ in ca0132_config()
7440 spec->out_pins[1] = 0x0f; in ca0132_config()
7441 spec->shared_out_nid = 0x2; in ca0132_config()
7442 spec->unsol_tag_hp = 0x0f; in ca0132_config()
7444 spec->adcs[0] = 0x7; /* digital mic / analog mic1 */ in ca0132_config()
7445 spec->adcs[1] = 0x8; /* analog mic2 */ in ca0132_config()
7446 spec->adcs[2] = 0xa; /* what u hear */ in ca0132_config()
7448 spec->num_inputs = 3; in ca0132_config()
7449 spec->input_pins[0] = 0x12; in ca0132_config()
7450 spec->input_pins[1] = 0x11; in ca0132_config()
7451 spec->input_pins[2] = 0x13; in ca0132_config()
7452 spec->shared_mic_nid = 0x7; in ca0132_config()
7453 spec->unsol_tag_amic1 = 0x11; in ca0132_config()
7457 if (spec->quirk == QUIRK_SBZ) { in ca0132_config()
7461 if (spec->quirk == QUIRK_R3D) { in ca0132_config()
7466 spec->num_outputs = 2; in ca0132_config()
7467 spec->out_pins[0] = 0x0B; /* Line out */ in ca0132_config()
7468 spec->out_pins[1] = 0x0F; /* Rear headphone out */ in ca0132_config()
7469 spec->out_pins[2] = 0x10; /* Front Headphone / Center/LFE*/ in ca0132_config()
7470 spec->out_pins[3] = 0x11; /* Rear surround */ in ca0132_config()
7471 spec->shared_out_nid = 0x2; in ca0132_config()
7472 spec->unsol_tag_hp = spec->out_pins[1]; in ca0132_config()
7473 spec->unsol_tag_front_hp = spec->out_pins[2]; in ca0132_config()
7475 spec->adcs[0] = 0x7; /* Rear Mic / Line-in */ in ca0132_config()
7476 spec->adcs[1] = 0x8; /* Front Mic, but only if no DSP */ in ca0132_config()
7477 spec->adcs[2] = 0xa; /* what u hear */ in ca0132_config()
7479 spec->num_inputs = 2; in ca0132_config()
7480 spec->input_pins[0] = 0x12; /* Rear Mic / Line-in */ in ca0132_config()
7481 spec->input_pins[1] = 0x13; /* What U Hear */ in ca0132_config()
7482 spec->shared_mic_nid = 0x7; in ca0132_config()
7483 spec->unsol_tag_amic1 = spec->input_pins[0]; in ca0132_config()
7486 spec->dig_out = 0x05; in ca0132_config()
7487 spec->multiout.dig_out_nid = spec->dig_out; in ca0132_config()
7488 spec->dig_in = 0x09; in ca0132_config()
7494 spec->num_outputs = 2; in ca0132_config()
7495 spec->out_pins[0] = 0x0B; /* Line out */ in ca0132_config()
7496 spec->out_pins[1] = 0x0F; /* Rear headphone out */ in ca0132_config()
7497 spec->out_pins[2] = 0x10; /* Front Headphone / Center/LFE*/ in ca0132_config()
7498 spec->out_pins[3] = 0x11; /* Rear surround */ in ca0132_config()
7499 spec->shared_out_nid = 0x2; in ca0132_config()
7500 spec->unsol_tag_hp = spec->out_pins[1]; in ca0132_config()
7501 spec->unsol_tag_front_hp = spec->out_pins[2]; in ca0132_config()
7503 spec->adcs[0] = 0x07; /* Rear Mic / Line-in */ in ca0132_config()
7504 spec->adcs[1] = 0x08; /* Front Mic, but only if no DSP */ in ca0132_config()
7505 spec->adcs[2] = 0x0a; /* what u hear */ in ca0132_config()
7507 spec->num_inputs = 2; in ca0132_config()
7508 spec->input_pins[0] = 0x12; /* Rear Mic / Line-in */ in ca0132_config()
7509 spec->input_pins[1] = 0x13; /* What U Hear */ in ca0132_config()
7510 spec->shared_mic_nid = 0x7; in ca0132_config()
7511 spec->unsol_tag_amic1 = spec->input_pins[0]; in ca0132_config()
7514 spec->dig_out = 0x05; in ca0132_config()
7515 spec->multiout.dig_out_nid = spec->dig_out; in ca0132_config()
7518 spec->num_outputs = 2; in ca0132_config()
7519 spec->out_pins[0] = 0x0b; /* speaker out */ in ca0132_config()
7520 spec->out_pins[1] = 0x10; /* headphone out */ in ca0132_config()
7521 spec->shared_out_nid = 0x2; in ca0132_config()
7522 spec->unsol_tag_hp = spec->out_pins[1]; in ca0132_config()
7524 spec->adcs[0] = 0x7; /* digital mic / analog mic1 */ in ca0132_config()
7525 spec->adcs[1] = 0x8; /* analog mic2 */ in ca0132_config()
7526 spec->adcs[2] = 0xa; /* what u hear */ in ca0132_config()
7528 spec->num_inputs = 3; in ca0132_config()
7529 spec->input_pins[0] = 0x12; in ca0132_config()
7530 spec->input_pins[1] = 0x11; in ca0132_config()
7531 spec->input_pins[2] = 0x13; in ca0132_config()
7532 spec->shared_mic_nid = 0x7; in ca0132_config()
7533 spec->unsol_tag_amic1 = spec->input_pins[0]; in ca0132_config()
7536 spec->dig_out = 0x05; in ca0132_config()
7537 spec->multiout.dig_out_nid = spec->dig_out; in ca0132_config()
7538 spec->dig_in = 0x09; in ca0132_config()
7547 struct ca0132_spec *spec = codec->spec; in ca0132_prepare_verbs() local
7549 spec->chip_init_verbs = ca0132_init_verbs0; in ca0132_prepare_verbs()
7550 if (spec->quirk == QUIRK_SBZ || spec->quirk == QUIRK_R3D) in ca0132_prepare_verbs()
7551 spec->desktop_init_verbs = ca0132_init_verbs1; in ca0132_prepare_verbs()
7552 spec->spec_init_verbs = kcalloc(NUM_SPEC_VERBS, in ca0132_prepare_verbs()
7555 if (!spec->spec_init_verbs) in ca0132_prepare_verbs()
7559 spec->spec_init_verbs[0].nid = 0x0b; in ca0132_prepare_verbs()
7560 spec->spec_init_verbs[0].param = 0x78D; in ca0132_prepare_verbs()
7561 spec->spec_init_verbs[0].verb = 0x00; in ca0132_prepare_verbs()
7584 struct ca0132_spec *spec; in patch_ca0132() local
7590 spec = kzalloc(sizeof(*spec), GFP_KERNEL); in patch_ca0132()
7591 if (!spec) in patch_ca0132()
7593 codec->spec = spec; in patch_ca0132()
7594 spec->codec = codec; in patch_ca0132()
7603 spec->quirk = quirk->value; in patch_ca0132()
7605 spec->quirk = QUIRK_NONE; in patch_ca0132()
7607 spec->dsp_state = DSP_DOWNLOAD_INIT; in patch_ca0132()
7608 spec->num_mixers = 1; in patch_ca0132()
7611 switch (spec->quirk) { in patch_ca0132()
7613 spec->mixers[0] = desktop_mixer; in patch_ca0132()
7617 spec->mixers[0] = desktop_mixer; in patch_ca0132()
7621 spec->mixers[0] = r3di_mixer; in patch_ca0132()
7625 spec->mixers[0] = ca0132_mixer; in patch_ca0132()
7630 switch (spec->quirk) { in patch_ca0132()
7633 spec->use_alt_controls = true; in patch_ca0132()
7634 spec->use_alt_functions = true; in patch_ca0132()
7635 spec->use_pci_mmio = true; in patch_ca0132()
7638 spec->use_alt_controls = true; in patch_ca0132()
7639 spec->use_alt_functions = true; in patch_ca0132()
7640 spec->use_pci_mmio = false; in patch_ca0132()
7643 spec->use_alt_controls = false; in patch_ca0132()
7644 spec->use_alt_functions = false; in patch_ca0132()
7645 spec->use_pci_mmio = false; in patch_ca0132()
7649 if (spec->use_pci_mmio) { in patch_ca0132()
7650 spec->mem_base = pci_iomap(codec->bus->pci, 2, 0xC20); in patch_ca0132()
7651 if (spec->mem_base == NULL) { in patch_ca0132()
7653 spec->quirk = QUIRK_NONE; in patch_ca0132()
7657 spec->base_init_verbs = ca0132_base_init_verbs; in patch_ca0132()
7658 spec->base_exit_verbs = ca0132_base_exit_verbs; in patch_ca0132()
7660 INIT_DELAYED_WORK(&spec->unsol_hp_work, ca0132_unsol_hp_delayed); in patch_ca0132()
7670 err = snd_hda_parse_pin_def_config(codec, &spec->autocfg, NULL); in patch_ca0132()