Lines Matching refs:spec

1182 #define ca0132_quirk(spec)		((spec)->quirk)
1183 #define ca0132_use_pci_mmio(spec) ((spec)->use_pci_mmio)
1184 #define ca0132_use_alt_functions(spec) ((spec)->use_alt_functions)
1185 #define ca0132_use_alt_controls(spec) ((spec)->use_alt_controls)
1187 #define ca0132_quirk(spec) ({ (void)(spec); QUIRK_NONE; })
1188 #define ca0132_use_alt_functions(spec) ({ (void)(spec); false; })
1189 #define ca0132_use_pci_mmio(spec) ({ (void)(spec); false; })
1190 #define ca0132_use_alt_controls(spec) ({ (void)(spec); false; })
1569 struct ca0132_spec *spec = codec->spec;
1572 if (spec->curr_chip_addx == chip_addx)
1585 spec->curr_chip_addx = (res < 0) ? ~0U : chip_addx;
1595 struct ca0132_spec *spec = codec->spec;
1609 spec->curr_chip_addx = (res != -EIO) ?
1610 (spec->curr_chip_addx + 4) : ~0U;
1640 struct ca0132_spec *spec = codec->spec;
1660 spec->curr_chip_addx = (res != -EIO) ?
1661 (spec->curr_chip_addx + 4) : ~0U;
1672 struct ca0132_spec *spec = codec->spec;
1675 mutex_lock(&spec->chipio_mutex);
1687 mutex_unlock(&spec->chipio_mutex);
1723 struct ca0132_spec *spec = codec->spec;
1726 mutex_lock(&spec->chipio_mutex);
1733 mutex_unlock(&spec->chipio_mutex);
1745 struct ca0132_spec *spec = codec->spec;
1748 mutex_lock(&spec->chipio_mutex);
1760 mutex_unlock(&spec->chipio_mutex);
1786 struct ca0132_spec *spec = codec->spec;
1794 mutex_lock(&spec->chipio_mutex);
1803 mutex_unlock(&spec->chipio_mutex);
1966 struct ca0132_spec *spec = codec->spec;
1968 mutex_lock(&spec->chipio_mutex);
1973 mutex_unlock(&spec->chipio_mutex);
1994 struct ca0132_spec *spec = codec->spec;
1996 mutex_lock(&spec->chipio_mutex);
2001 mutex_unlock(&spec->chipio_mutex);
2016 struct ca0132_spec *spec = codec->spec;
2018 mutex_lock(&spec->chipio_mutex);
2024 mutex_unlock(&spec->chipio_mutex);
2070 struct ca0132_spec *spec = codec->spec;
2075 mutex_lock(&spec->chipio_mutex);
2090 mutex_unlock(&spec->chipio_mutex);
2245 struct ca0132_spec *spec = codec->spec;
2252 if ((data & 0x00ffffff) == spec->wait_scp_header) {
2253 spec->scp_resp_header = data;
2254 spec->scp_resp_count = data >> 27;
2255 count = spec->wait_num_data;
2256 dspio_read_multiple(codec, spec->scp_resp_data,
2257 &spec->scp_resp_count, count);
2274 struct ca0132_spec *spec = codec->spec;
2301 spec->wait_scp_header = *((unsigned int *)send_buf);
2306 spec->wait_scp_header &= 0xffff0000;
2307 spec->wait_scp_header |= (resp_src_id << 8) | (resp_target_id);
2308 spec->wait_num_data = return_buf_size/sizeof(unsigned int) - 1;
2309 spec->wait_scp = 1;
2316 spec->wait_scp = 0;
2325 } while (spec->wait_scp && time_before(jiffies, timeout));
2327 if (!spec->wait_scp) {
2329 memcpy(&ret_msg->hdr, &spec->scp_resp_header, 4);
2330 memcpy(&ret_msg->data, spec->scp_resp_data,
2331 spec->wait_num_data);
2332 *bytes_returned = (spec->scp_resp_count + 1) * 4;
2337 spec->wait_scp = 0;
3040 struct ca0132_spec *spec = codec->spec;
3052 spec->dsp_stream_id = status;
3103 struct ca0132_spec *spec = dma->codec->spec;
3105 return spec->dsp_stream_id;
3397 struct ca0132_spec *spec = codec->spec;
3441 spec->dsp_stream_id = status;
3513 struct ca0132_spec *spec = codec->spec;
3515 if (!ca0132_use_alt_functions(spec)) {
3647 struct ca0132_spec *spec = codec->spec;
3653 writew(gpio_data, spec->mem_base + 0x320);
3667 struct ca0132_spec *spec = codec->spec;
3670 writel(0x0000007e, spec->mem_base + 0x210);
3671 readl(spec->mem_base + 0x210);
3672 writel(0x0000005a, spec->mem_base + 0x210);
3673 readl(spec->mem_base + 0x210);
3674 readl(spec->mem_base + 0x210);
3676 writel(0x00800005, spec->mem_base + 0x20c);
3677 writel(group, spec->mem_base + 0x804);
3679 writel(0x00800005, spec->mem_base + 0x20c);
3684 writel(write_val, spec->mem_base + 0x204);
3690 readl(spec->mem_base + 0x860);
3691 readl(spec->mem_base + 0x854);
3692 readl(spec->mem_base + 0x840);
3694 writel(0x00800004, spec->mem_base + 0x20c);
3695 writel(0x00000000, spec->mem_base + 0x210);
3696 readl(spec->mem_base + 0x210);
3697 readl(spec->mem_base + 0x210);
3706 struct ca0132_spec *spec = codec->spec;
3709 writel(0x0000007e, spec->mem_base + 0x210);
3710 readl(spec->mem_base + 0x210);
3711 writel(0x0000005a, spec->mem_base + 0x210);
3712 readl(spec->mem_base + 0x210);
3713 readl(spec->mem_base + 0x210);
3715 writel(0x00800003, spec->mem_base + 0x20c);
3716 writel(group, spec->mem_base + 0x804);
3718 writel(0x00800005, spec->mem_base + 0x20c);
3723 writel(write_val, spec->mem_base + 0x204);
3725 readl(spec->mem_base + 0x860);
3726 readl(spec->mem_base + 0x854);
3727 readl(spec->mem_base + 0x840);
3729 writel(0x00800004, spec->mem_base + 0x20c);
3730 writel(0x00000000, spec->mem_base + 0x210);
3731 readl(spec->mem_base + 0x210);
3732 readl(spec->mem_base + 0x210);
3745 struct ca0132_spec *spec = codec->spec;
3747 switch (ca0132_quirk(spec)) {
3768 struct ca0132_spec *spec = codec->spec;
3770 switch (ca0132_quirk(spec)) {
3894 struct ca0132_spec *spec = codec->spec;
3896 snd_hda_codec_setup_stream(codec, spec->dacs[0], stream_tag, 0, format);
3905 struct ca0132_spec *spec = codec->spec;
3907 if (spec->dsp_state == DSP_DOWNLOADING)
3912 if (spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID])
3915 snd_hda_codec_cleanup_stream(codec, spec->dacs[0]);
3924 struct ca0132_spec *spec = codec->spec;
3928 if (spec->dsp_state != DSP_DOWNLOADED)
3932 if (spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]) {
3933 if ((spec->effects_switch[SURROUND - EFFECT_START_NID]) ||
3934 (spec->effects_switch[DIALOG_PLUS - EFFECT_START_NID]))
3939 if (spec->cur_out_type == SPEAKER_OUT)
3952 struct ca0132_spec *spec = codec->spec;
3953 return snd_hda_multi_out_dig_open(codec, &spec->multiout);
3962 struct ca0132_spec *spec = codec->spec;
3963 return snd_hda_multi_out_dig_prepare(codec, &spec->multiout,
3971 struct ca0132_spec *spec = codec->spec;
3972 return snd_hda_multi_out_dig_cleanup(codec, &spec->multiout);
3979 struct ca0132_spec *spec = codec->spec;
3980 return snd_hda_multi_out_dig_close(codec, &spec->multiout);
4002 struct ca0132_spec *spec = codec->spec;
4004 if (spec->dsp_state == DSP_DOWNLOADING)
4015 struct ca0132_spec *spec = codec->spec;
4019 if (spec->dsp_state != DSP_DOWNLOADED)
4022 if (spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID])
4249 struct ca0132_spec *spec = codec->spec;
4254 *valp = spec->cur_ctl_vals[idx];
4275 struct ca0132_spec *spec = codec->spec;
4282 if (spec->cur_ctl_vals[idx] == *valp)
4285 spec->cur_ctl_vals[idx] = *valp;
4310 struct ca0132_spec *spec = codec->spec;
4317 if (spec->cur_ctl_vals[idx] == *valp)
4320 spec->cur_ctl_vals[idx] = *valp;
4345 struct ca0132_spec *spec = codec->spec;
4352 if (spec->cur_ctl_vals[idx] == *valp)
4355 spec->cur_ctl_vals[idx] = *valp;
4426 struct ca0132_spec *spec = codec->spec;
4430 spec->cur_ctl_vals[WEDGE_ANGLE - TUNING_CTL_START_NID] = 10;
4432 spec->cur_ctl_vals[SVM_LEVEL - TUNING_CTL_START_NID] = 74;
4436 spec->cur_ctl_vals[i] = 24;
4448 struct ca0132_spec *spec = codec->spec;
4459 auto_jack = spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID];
4462 jack_present = snd_hda_jack_detect(codec, spec->unsol_tag_hp);
4465 spec->vnode_lswitch[VNID_HP_SEL - VNODE_START_NID];
4468 spec->cur_out_type = HEADPHONE_OUT;
4470 spec->cur_out_type = SPEAKER_OUT;
4472 if (spec->cur_out_type == SPEAKER_OUT) {
4486 snd_hda_codec_write(codec, spec->out_pins[1], 0,
4488 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4490 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4492 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4496 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[1], 0,
4498 snd_hda_set_pin_ctl(codec, spec->out_pins[1],
4501 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[0], 0,
4503 snd_hda_set_pin_ctl(codec, spec->out_pins[0],
4519 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4521 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4523 snd_hda_codec_write(codec, spec->out_pins[1], 0,
4525 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4529 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[0], 0,
4531 snd_hda_set_pin_ctl(codec, spec->out_pins[0],
4534 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[1], 0,
4536 snd_hda_set_pin_ctl(codec, spec->out_pins[1],
4552 struct ca0132_spec *spec = codec->spec;
4556 if (ca0132_quirk(spec) == QUIRK_AE5)
4564 out_cmds->vals[spec->cur_out_type][i]);
4569 struct ca0132_spec *spec = codec->spec;
4570 int quirk = ca0132_quirk(spec);
4575 if (spec->channel_cfg_val == SPEAKER_CHANNELS_4_0
4576 || spec->channel_cfg_val == SPEAKER_CHANNELS_2_0)
4580 tmp = spec->speaker_range_val[0] ? FLOAT_ZERO : FLOAT_ONE;
4587 tmp = spec->speaker_range_val[1] ? FLOAT_ZERO : FLOAT_ONE;
4615 struct ca0132_spec *spec = codec->spec;
4619 if (val && spec->channel_cfg_val != SPEAKER_CHANNELS_4_0 &&
4620 spec->channel_cfg_val != SPEAKER_CHANNELS_2_0)
4631 tmp = float_xbass_xover_lookup[spec->xbass_xover_freq];
4648 struct ca0132_spec *spec = codec->spec;
4649 int quirk = ca0132_quirk(spec);
4665 struct ca0132_spec *spec = codec->spec;
4673 out_info = &quirk_data->out_set_info[spec->cur_out_type];
4716 if (spec->cur_out_type != HEADPHONE_OUT) {
4724 spec->ae5_headphone_gain_val);
4727 spec->zxr_gain_set);
4757 struct ca0132_spec *spec = codec->spec;
4763 hda_nid_t headphone_nid = spec->out_pins[1];
4769 auto_jack = spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID];
4777 jack_present = snd_hda_jack_detect(codec, spec->unsol_tag_hp) ||
4778 snd_hda_jack_detect(codec, spec->unsol_tag_front_hp);
4781 spec->cur_out_type = HEADPHONE_OUT;
4783 spec->cur_out_type = SPEAKER_OUT;
4785 spec->cur_out_type = spec->out_enum_val;
4787 outfx_set = spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID];
4797 switch (spec->cur_out_type) {
4802 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4806 ca0132_set_out_node_pincfg(codec, spec->out_pins[1], 0, 0);
4808 ca0132_set_out_node_pincfg(codec, spec->out_pins[0], 1, 0);
4810 ca0132_set_out_node_pincfg(codec, spec->out_pins[2], 1, 0);
4812 ca0132_set_out_node_pincfg(codec, spec->out_pins[3], 1, 0);
4819 if (!outfx_set && spec->channel_cfg_val == SPEAKER_CHANNELS_2_0)
4822 tmp = speaker_channel_cfgs[spec->channel_cfg_val].val;
4831 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4835 ca0132_set_out_node_pincfg(codec, spec->out_pins[0], 0, 0);
4836 ca0132_set_out_node_pincfg(codec, spec->out_pins[2], 0, 0);
4837 ca0132_set_out_node_pincfg(codec, spec->out_pins[3], 0, 0);
4840 if (snd_hda_jack_detect(codec, spec->unsol_tag_front_hp))
4841 headphone_nid = spec->out_pins[2];
4842 else if (snd_hda_jack_detect(codec, spec->unsol_tag_hp))
4843 headphone_nid = spec->out_pins[1];
4863 spec->effects_switch[X_BASS - EFFECT_START_NID]);
4879 if (spec->cur_out_type == SPEAKER_OUT)
4881 spec->bass_redirection_val);
4891 if (spec->cur_out_type == SPEAKER_OUT) {
4905 struct ca0132_spec *spec = container_of(
4909 if (ca0132_use_alt_functions(spec))
4910 ca0132_alt_select_out(spec->codec);
4912 ca0132_select_out(spec->codec);
4914 jack = snd_hda_jack_tbl_get(spec->codec, spec->unsol_tag_hp);
4917 snd_hda_jack_report_sync(spec->codec);
4933 struct ca0132_spec *spec = codec->spec;
4936 if (spec->dsp_state != DSP_DOWNLOADED)
4940 if (!spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] ||
4945 if (spec->cur_mic_type == DIGITAL_MIC)
4955 if (spec->cur_mic_type == DIGITAL_MIC)
4971 struct ca0132_spec *spec = codec->spec;
4974 if (spec->dsp_state != DSP_DOWNLOADED)
4983 if (!spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] ||
4984 (val == 0) || spec->in_enum_val == REAR_LINE_IN) {
4993 if (ca0132_quirk(spec) == QUIRK_R3DI)
4997 if (spec->in_enum_val == REAR_LINE_IN)
5000 if (ca0132_quirk(spec) == QUIRK_SBZ)
5012 if (ca0132_quirk(spec) == QUIRK_R3DI)
5015 if (spec->effects_switch[VOICE_FOCUS - EFFECT_START_NID])
5042 struct ca0132_spec *spec = codec->spec;
5050 auto_jack = spec->vnode_lswitch[VNID_AMIC1_ASEL - VNODE_START_NID];
5053 jack_present = snd_hda_jack_detect(codec, spec->unsol_tag_amic1);
5056 spec->vnode_lswitch[VNID_AMIC1_SEL - VNODE_START_NID];
5059 spec->cur_mic_type = LINE_MIC_IN;
5061 spec->cur_mic_type = DIGITAL_MIC;
5063 if (spec->cur_mic_type == DIGITAL_MIC) {
5070 spec->effects_switch
5076 ca0132_mic_boost_set(codec, spec->cur_mic_boost);
5094 struct ca0132_spec *spec = codec->spec;
5104 spec->cur_mic_type = spec->in_enum_val;
5106 switch (spec->cur_mic_type) {
5108 switch (ca0132_quirk(spec)) {
5141 if (ca0132_quirk(spec) == QUIRK_R3DI)
5148 switch (ca0132_quirk(spec)) {
5164 ca0132_alt_mic_boost_set(codec, spec->mic_boost_enum_val);
5168 switch (ca0132_quirk(spec)) {
5193 if (ca0132_quirk(spec) == QUIRK_R3DI)
5196 if (ca0132_quirk(spec) == QUIRK_AE7)
5202 switch (ca0132_quirk(spec)) {
5215 switch (ca0132_quirk(spec)) {
5237 if (ca0132_quirk(spec) == QUIRK_R3DI)
5245 switch (ca0132_quirk(spec)) {
5257 ca0132_alt_mic_boost_set(codec, spec->mic_boost_enum_val);
5273 struct ca0132_spec *spec = codec->spec;
5278 nid = spec->shared_out_nid;
5281 nid = spec->shared_mic_nid;
5299 struct ca0132_spec *spec = codec->spec;
5304 tmp = spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] ?
5321 struct ca0132_spec *spec = codec->spec;
5333 if (!spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID])
5335 if (spec->cur_out_type == SPEAKER_OUT && nid == X_BASS) {
5336 channel_cfg = spec->channel_cfg_val;
5346 if (!spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID])
5350 if ((nid == VOICE_FOCUS) && (spec->cur_mic_type != DIGITAL_MIC))
5354 if ((nid == VOICE_FOCUS) && ca0132_use_pci_mmio(spec)
5355 && (spec->cur_mic_type != REAR_LINE_IN)) {
5356 if (spec->effects_switch[CRYSTAL_VOICE -
5359 if (spec->effects_switch[VOICE_FOCUS -
5373 if ((nid == NOISE_REDUCTION) && ca0132_use_pci_mmio(spec)
5374 && (spec->cur_mic_type != REAR_LINE_IN)) {
5375 if (spec->effects_switch[CRYSTAL_VOICE -
5377 if (spec->effects_switch[NOISE_REDUCTION -
5389 if (ca0132_use_alt_functions(spec) &&
5390 spec->in_enum_val == REAR_LINE_IN)
5412 struct ca0132_spec *spec = codec->spec;
5417 spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]);
5419 if (ca0132_use_alt_functions(spec))
5426 ret |= ca0132_effects_set(codec, nid, spec->effects_switch[i]);
5434 struct ca0132_spec *spec = codec->spec;
5435 unsigned int oldval = snd_hda_codec_read(codec, spec->adcs[0], 0,
5438 snd_hda_codec_write(codec, spec->adcs[0], 0,
5447 struct ca0132_spec *spec = codec->spec;
5450 snd_hda_codec_write(codec, spec->adcs[0], 0,
5460 struct ca0132_spec *spec = codec->spec;
5466 spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID]);
5472 ret |= ca0132_effects_set(codec, nid, spec->effects_switch[i]);
5475 ret |= ca0132_voicefx_set(codec, (spec->voicefx_val ? 1 : 0));
5479 if (ca0132_use_alt_functions(spec))
5489 struct ca0132_spec *spec = codec->spec;
5493 ret = snd_hda_codec_amp_update(codec, spec->input_pins[0], 0,
5496 ret = snd_hda_codec_amp_update(codec, spec->input_pins[0], 0,
5504 struct ca0132_spec *spec = codec->spec;
5507 ret = snd_hda_codec_amp_update(codec, spec->input_pins[0], 0,
5541 struct ca0132_spec *spec = codec->spec;
5546 spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID];
5548 if (ca0132_use_alt_functions(spec))
5558 spec->vnode_lswitch[VNID_AMIC1_ASEL - VNODE_START_NID];
5565 if (ca0132_use_alt_functions(spec))
5660 struct ca0132_spec *spec = codec->spec;
5665 *valp = spec->bass_redirect_xover_freq;
5667 *valp = spec->xbass_xover_freq;
5676 struct ca0132_spec *spec = codec->spec;
5681 *valp = spec->fx_ctl_val[idx];
5719 struct ca0132_spec *spec = codec->spec;
5726 cur_val = &spec->bass_redirect_xover_freq;
5728 cur_val = &spec->xbass_xover_freq;
5749 struct ca0132_spec *spec = codec->spec;
5756 if (spec->fx_ctl_val[idx] == *valp)
5759 spec->fx_ctl_val[idx] = *valp;
5796 struct ca0132_spec *spec = codec->spec;
5798 ucontrol->value.enumerated.item[0] = spec->mic_boost_enum_val;
5806 struct ca0132_spec *spec = codec->spec;
5816 spec->mic_boost_enum_val = sel;
5818 if (spec->in_enum_val != REAR_LINE_IN)
5819 ca0132_alt_mic_boost_set(codec, spec->mic_boost_enum_val);
5850 struct ca0132_spec *spec = codec->spec;
5852 ucontrol->value.enumerated.item[0] = spec->ae5_headphone_gain_val;
5860 struct ca0132_spec *spec = codec->spec;
5870 spec->ae5_headphone_gain_val = sel;
5872 if (spec->out_enum_val == HEADPHONE_OUT)
5873 ae5_headphone_gain_set(codec, spec->ae5_headphone_gain_val);
5903 struct ca0132_spec *spec = codec->spec;
5905 ucontrol->value.enumerated.item[0] = spec->ae5_filter_val;
5913 struct ca0132_spec *spec = codec->spec;
5923 spec->ae5_filter_val = sel;
5953 struct ca0132_spec *spec = codec->spec;
5955 ucontrol->value.enumerated.item[0] = spec->in_enum_val;
5963 struct ca0132_spec *spec = codec->spec;
5971 if (ca0132_quirk(spec) == QUIRK_AE7)
5980 spec->in_enum_val = sel;
6005 struct ca0132_spec *spec = codec->spec;
6007 ucontrol->value.enumerated.item[0] = spec->out_enum_val;
6015 struct ca0132_spec *spec = codec->spec;
6026 spec->out_enum_val = sel;
6028 auto_jack = spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID];
6056 struct ca0132_spec *spec = codec->spec;
6058 ucontrol->value.enumerated.item[0] = spec->channel_cfg_val;
6066 struct ca0132_spec *spec = codec->spec;
6076 spec->channel_cfg_val = sel;
6078 if (spec->out_enum_val == SPEAKER_OUT)
6109 struct ca0132_spec *spec = codec->spec;
6111 ucontrol->value.enumerated.item[0] = spec->smart_volume_setting;
6119 struct ca0132_spec *spec = codec->spec;
6131 spec->smart_volume_setting = sel;
6173 struct ca0132_spec *spec = codec->spec;
6175 ucontrol->value.enumerated.item[0] = spec->eq_preset_val;
6183 struct ca0132_spec *spec = codec->spec;
6206 spec->eq_preset_val = sel;
6230 struct ca0132_spec *spec = codec->spec;
6232 ucontrol->value.enumerated.item[0] = spec->voicefx_val;
6240 struct ca0132_spec *spec = codec->spec;
6263 spec->voicefx_val = sel;
6275 struct ca0132_spec *spec = codec->spec;
6283 *valp = spec->vnode_lswitch[nid - VNODE_START_NID];
6287 *valp = spec->vnode_rswitch[nid - VNODE_START_NID];
6295 *valp = spec->effects_switch[nid - EFFECT_START_NID];
6300 if (nid == spec->input_pins[0]) {
6301 *valp = spec->cur_mic_boost;
6306 *valp = spec->zxr_gain_set;
6311 *valp = spec->speaker_range_val[nid - SPEAKER_FULL_RANGE_FRONT];
6316 *valp = spec->bass_redirection_val;
6327 struct ca0132_spec *spec = codec->spec;
6340 spec->vnode_lswitch[nid - VNODE_START_NID] = *valp;
6344 spec->vnode_rswitch[nid - VNODE_START_NID] = *valp;
6353 spec->effects_switch[nid - EFFECT_START_NID] = *valp;
6360 spec->effects_switch[nid - EFFECT_START_NID] = *valp;
6368 spec->effects_switch[nid - EFFECT_START_NID] = *valp;
6374 if (nid == spec->input_pins[0]) {
6375 spec->cur_mic_boost = *valp;
6376 if (ca0132_use_alt_functions(spec)) {
6377 if (spec->in_enum_val != REAR_LINE_IN)
6381 if (spec->cur_mic_type != DIGITAL_MIC)
6389 spec->zxr_gain_set = *valp;
6390 if (spec->cur_out_type == HEADPHONE_OUT)
6399 spec->speaker_range_val[nid - SPEAKER_FULL_RANGE_FRONT] = *valp;
6400 if (spec->cur_out_type == SPEAKER_OUT)
6407 spec->bass_redirection_val = *valp;
6408 if (spec->cur_out_type == SPEAKER_OUT)
6429 struct ca0132_spec *spec = codec->spec;
6438 lookup_val = spec->vnode_lvol[nid - VNODE_START_NID];
6445 lookup_val = spec->vnode_rvol[nid - VNODE_START_NID];
6461 struct ca0132_spec *spec = codec->spec;
6471 nid = spec->shared_out_nid;
6481 nid = spec->shared_mic_nid;
6499 struct ca0132_spec *spec = codec->spec;
6506 *valp = spec->vnode_lvol[nid - VNODE_START_NID];
6510 *valp = spec->vnode_rvol[nid - VNODE_START_NID];
6520 struct ca0132_spec *spec = codec->spec;
6530 spec->vnode_lvol[nid - VNODE_START_NID] = *valp;
6534 spec->vnode_rvol[nid - VNODE_START_NID] = *valp;
6567 struct ca0132_spec *spec = codec->spec;
6585 spec->vnode_lvol[vnid - VNODE_START_NID] = *valp;
6589 spec->vnode_rvol[vnid - VNODE_START_NID] = *valp;
6607 struct ca0132_spec *spec = codec->spec;
6617 nid = spec->shared_out_nid;
6627 nid = spec->shared_mic_nid;
6680 struct ca0132_spec *spec = codec->spec;
6688 if (ca0132_use_alt_controls(spec) && (nid <= IN_EFFECT_END_NID))
7029 struct ca0132_spec *spec = codec->spec;
7034 for (i = 0; i < spec->num_mixers; i++) {
7035 err = snd_hda_add_new_ctls(codec, spec->mixers[i]);
7040 if (ca0132_use_alt_functions(spec)) {
7041 snd_hda_set_vmaster_tlv(codec, spec->dacs[0], HDA_OUTPUT,
7042 spec->tlv);
7044 spec->tlv, ca0132_alt_follower_pfxs,
7049 true, 0, &spec->vmaster_mute.sw_kctl);
7060 if (ca0132_use_pci_mmio(spec)) {
7077 if (ca0132_use_alt_controls(spec)) {
7131 if (ca0132_use_alt_functions(spec)) {
7157 if (ca0132_quirk(spec) != QUIRK_ZXR) {
7164 switch (ca0132_quirk(spec)) {
7187 err = snd_hda_jack_add_kctls(codec, &spec->autocfg);
7191 if (spec->dig_out) {
7192 err = snd_hda_create_spdif_out_ctls(codec, spec->dig_out,
7193 spec->dig_out);
7196 err = snd_hda_create_spdif_share_sw(codec, &spec->multiout);
7199 /* spec->multiout.share_spdif = 1; */
7202 if (spec->dig_in) {
7203 err = snd_hda_create_spdif_in_ctls(codec, spec->dig_in);
7208 if (ca0132_use_alt_functions(spec))
7216 struct ca0132_spec *spec = codec->spec;
7219 if (spec->dig_out) {
7220 err = snd_hda_create_spdif_out_ctls(codec, spec->dig_out,
7221 spec->dig_out);
7226 if (spec->dig_in) {
7227 err = snd_hda_create_spdif_in_ctls(codec, spec->dig_in);
7280 struct ca0132_spec *spec = codec->spec;
7286 if (ca0132_use_alt_functions(spec)) {
7292 info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->dacs[0];
7294 spec->multiout.max_channels;
7297 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[0];
7300 if (!ca0132_use_alt_functions(spec)) {
7307 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[1];
7315 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[2];
7317 if (!spec->dig_out && !spec->dig_in)
7324 if (spec->dig_out) {
7327 info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->dig_out;
7329 if (spec->dig_in) {
7332 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->dig_in;
7340 struct ca0132_spec *spec = codec->spec;
7348 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[0];
7351 if (!spec->dig_out && !spec->dig_in)
7358 if (spec->dig_out) {
7361 info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->dig_out;
7363 if (spec->dig_in) {
7366 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->dig_in;
7421 struct ca0132_spec *spec = codec->spec;
7435 val = spec->dmic_ctl;
7437 snd_hda_codec_write(codec, spec->input_pins[0], 0,
7440 if (!(spec->dmic_ctl & 0x20))
7447 val = spec->dmic_ctl;
7450 snd_hda_codec_write(codec, spec->input_pins[0], 0,
7453 if (!(spec->dmic_ctl & 0x20))
7465 struct ca0132_spec *spec = codec->spec;
7478 snd_hda_codec_write(codec, spec->input_pins[0], 0,
7488 snd_hda_codec_write(codec, spec->input_pins[0], 0,
7498 if (ca0132_quirk(spec) == QUIRK_ALIENWARE_M17XR4)
7503 spec->dmic_ctl = val;
7504 snd_hda_codec_write(codec, spec->input_pins[0], 0,
7513 struct ca0132_spec *spec = codec->spec;
7515 mutex_lock(&spec->chipio_mutex);
7520 mutex_unlock(&spec->chipio_mutex);
7525 struct ca0132_spec *spec = codec->spec;
7531 for (i = 0; i < spec->multiout.num_dacs; i++)
7532 refresh_amp_caps(codec, spec->dacs[i], HDA_OUTPUT);
7534 for (i = 0; i < spec->num_outputs; i++)
7535 refresh_amp_caps(codec, spec->out_pins[i], HDA_OUTPUT);
7537 for (i = 0; i < spec->num_inputs; i++) {
7538 refresh_amp_caps(codec, spec->adcs[i], HDA_INPUT);
7539 refresh_amp_caps(codec, spec->input_pins[i], HDA_INPUT);
7603 struct ca0132_spec *spec = codec->spec;
7610 mutex_lock(&spec->chipio_mutex);
7621 mutex_unlock(&spec->chipio_mutex);
7630 mutex_lock(&spec->chipio_mutex);
7643 mutex_unlock(&spec->chipio_mutex);
7759 struct ca0132_spec *spec = codec->spec;
7763 switch (ca0132_quirk(spec)) {
7803 struct ca0132_spec *spec = codec->spec;
7809 if (ca0132_quirk(spec) == QUIRK_R3DI) {
7819 if (ca0132_quirk(spec) == QUIRK_R3DI)
7833 struct ca0132_spec *spec = codec->spec;
7835 mutex_lock(&spec->chipio_mutex);
7851 mutex_unlock(&spec->chipio_mutex);
7863 struct ca0132_spec *spec = codec->spec;
7865 mutex_lock(&spec->chipio_mutex);
7872 switch (ca0132_quirk(spec)) {
7890 mutex_unlock(&spec->chipio_mutex);
7895 struct ca0132_spec *spec = codec->spec;
7910 switch (ca0132_quirk(spec)) {
7926 struct ca0132_spec *spec = codec->spec;
7931 writeb(0xff, spec->mem_base + 0x304);
7932 writeb(0xff, spec->mem_base + 0x304);
7933 writeb(0xff, spec->mem_base + 0x304);
7934 writeb(0xff, spec->mem_base + 0x304);
7935 writeb(0x00, spec->mem_base + 0x100);
7936 writeb(0xff, spec->mem_base + 0x304);
7937 writeb(0x00, spec->mem_base + 0x100);
7938 writeb(0xff, spec->mem_base + 0x304);
7939 writeb(0x00, spec->mem_base + 0x100);
7940 writeb(0xff, spec->mem_base + 0x304);
7941 writeb(0x00, spec->mem_base + 0x100);
7942 writeb(0xff, spec->mem_base + 0x304);
7980 struct ca0132_spec *spec = codec->spec;
7982 mutex_lock(&spec->chipio_mutex);
8001 mutex_unlock(&spec->chipio_mutex);
8006 struct ca0132_spec *spec = codec->spec;
8008 mutex_lock(&spec->chipio_mutex);
8033 mutex_unlock(&spec->chipio_mutex);
8038 struct ca0132_spec *spec = codec->spec;
8040 mutex_lock(&spec->chipio_mutex);
8054 mutex_unlock(&spec->chipio_mutex);
8059 struct ca0132_spec *spec = codec->spec;
8061 mutex_lock(&spec->chipio_mutex);
8077 mutex_unlock(&spec->chipio_mutex);
8096 struct ca0132_spec *spec = codec->spec;
8105 mutex_lock(&spec->chipio_mutex);
8168 mutex_unlock(&spec->chipio_mutex);
8207 struct ca0132_spec *spec = codec->spec;
8212 if (spec->dsp_state != DSP_DOWNLOADED)
8252 struct ca0132_spec *spec = codec->spec;
8257 if (spec->dsp_state != DSP_DOWNLOADED)
8275 if (ca0132_quirk(spec) == QUIRK_R3DI)
8279 if (ca0132_quirk(spec) == QUIRK_R3D) {
8302 struct ca0132_spec *spec = codec->spec;
8307 if (spec->dsp_state != DSP_DOWNLOADED)
8356 struct ca0132_spec *spec = codec->spec;
8361 if (spec->dsp_state != DSP_DOWNLOADED)
8421 struct ca0132_spec *spec = codec->spec;
8426 if (spec->dsp_state != DSP_DOWNLOADED)
8504 struct ca0132_spec *spec = codec->spec;
8506 if (ca0132_use_alt_functions(spec)) {
8537 struct ca0132_spec *spec = codec->spec;
8539 if (ca0132_use_alt_functions(spec)) {
8568 struct ca0132_spec *spec = codec->spec;
8576 switch (ca0132_quirk(spec)) {
8623 struct ca0132_spec *spec = codec->spec;
8629 if (spec->dsp_state == DSP_DOWNLOAD_FAILED)
8633 if (spec->dsp_state != DSP_DOWNLOADED) {
8634 spec->dsp_state = DSP_DOWNLOADING;
8637 spec->dsp_state = DSP_DOWNLOAD_FAILED;
8639 spec->dsp_state = DSP_DOWNLOADED;
8643 if (spec->dsp_state == DSP_DOWNLOADED && !ca0132_use_alt_functions(spec))
8650 struct ca0132_spec *spec = codec->spec;
8654 if (spec->wait_scp) {
8656 spec->wait_scp = 0;
8665 struct ca0132_spec *spec = codec->spec;
8674 schedule_delayed_work(&spec->unsol_hp_work, msecs_to_jiffies(500));
8679 struct ca0132_spec *spec = codec->spec;
8681 if (ca0132_use_alt_functions(spec))
8689 struct ca0132_spec *spec = codec->spec;
8690 snd_hda_jack_detect_enable_callback(codec, spec->unsol_tag_hp, hp_callback);
8691 snd_hda_jack_detect_enable_callback(codec, spec->unsol_tag_amic1,
8696 if (ca0132_use_alt_functions(spec))
8698 spec->unsol_tag_front_hp, hp_callback);
8778 struct ca0132_spec *spec = codec->spec;
8783 mutex_init(&spec->chipio_mutex);
8791 if (ca0132_use_alt_functions(spec)) {
8801 spec->cur_out_type = SPEAKER_OUT;
8802 if (!ca0132_use_alt_functions(spec))
8803 spec->cur_mic_type = DIGITAL_MIC;
8805 spec->cur_mic_type = REAR_MIC;
8807 spec->cur_mic_boost = 0;
8810 spec->vnode_lvol[i] = 0x5a;
8811 spec->vnode_rvol[i] = 0x5a;
8812 spec->vnode_lswitch[i] = 0;
8813 spec->vnode_rswitch[i] = 0;
8822 spec->effects_switch[i] = on ? 1 : 0;
8828 if (ca0132_use_alt_controls(spec)) {
8830 spec->speaker_range_val[0] = 1;
8831 spec->speaker_range_val[1] = 1;
8833 spec->xbass_xover_freq = 8;
8835 spec->fx_ctl_val[i] = effect_slider_defaults[i];
8837 spec->bass_redirect_xover_freq = 8;
8840 spec->voicefx_val = 0;
8841 spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID] = 1;
8842 spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] = 0;
8847 * to make sure that spec->in_enum_val is set properly.
8849 if (ca0132_quirk(spec) == QUIRK_ZXR)
8850 spec->in_enum_val = REAR_MIC;
8871 struct ca0132_spec *spec = codec->spec;
8875 writeb(0x0, spec->mem_base + 0x100);
8877 writeb(0xb3, spec->mem_base + 0x304);
9077 struct ca0132_spec *spec = codec->spec;
9084 if (spec->startup_check_entered)
9087 spec->startup_check_entered = true;
9109 spec->dsp_state = DSP_DOWNLOAD_INIT;
9157 struct ca0132_spec *spec = codec->spec;
9159 writel(0x00820680, spec->mem_base + 0x01C);
9160 writel(0x00820680, spec->mem_base + 0x01C);
9270 struct ca0132_spec *spec = codec->spec;
9276 writel(0x00000000, spec->mem_base + addr[i]);
9279 switch (ca0132_quirk(spec)) {
9299 writel(tmp[i], spec->mem_base + addr[cur_addr + i]);
9303 switch (ca0132_quirk(spec)) {
9315 writel(data[i], spec->mem_base + addr[cur_addr + i]);
9320 struct ca0132_spec *spec = codec->spec;
9328 if (ca0132_quirk(spec) == QUIRK_AE7) {
9329 writel(0x00000680, spec->mem_base + 0x1c);
9330 writel(0x00880680, spec->mem_base + 0x1c);
9338 if (i == 21 && ca0132_quirk(spec) == QUIRK_AE7) {
9339 writel(0x00800001, spec->mem_base + addr[i]);
9343 writel(data[i], spec->mem_base + addr[i]);
9346 if (ca0132_quirk(spec) == QUIRK_AE5)
9347 writel(0x00880680, spec->mem_base + 0x1c);
9352 struct ca0132_spec *spec = codec->spec;
9354 switch (ca0132_quirk(spec)) {
9385 struct ca0132_spec *spec = codec->spec;
9392 if (ca0132_quirk(spec) == QUIRK_AE7)
9398 if (ca0132_quirk(spec) == QUIRK_AE7) {
9409 writeb(tmp[i], spec->mem_base + addr[cur_addr]);
9416 writeb(data[i], spec->mem_base + addr[cur_addr]);
9419 writel(data[i], spec->mem_base + addr[cur_addr]);
9421 writel(0x00800001, spec->mem_base + 0x20c);
9423 if (ca0132_quirk(spec) == QUIRK_AE7) {
9433 if (ca0132_quirk(spec) == QUIRK_AE5)
9444 struct ca0132_spec *spec = codec->spec;
9448 switch (ca0132_quirk(spec)) {
9453 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9454 snd_hda_sequence_write(codec, spec->desktop_init_verbs);
9462 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9467 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9468 snd_hda_sequence_write(codec, spec->desktop_init_verbs);
9474 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9475 snd_hda_sequence_write(codec, spec->desktop_init_verbs);
9481 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9482 snd_hda_sequence_write(codec, spec->desktop_init_verbs);
9490 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9491 snd_hda_sequence_write(codec, spec->desktop_init_verbs);
9501 struct ca0132_spec *spec = codec->spec;
9502 struct auto_pin_cfg *cfg = &spec->autocfg;
9516 if (spec->dsp_state == DSP_DOWNLOADED) {
9519 spec->dsp_reload = true;
9520 spec->dsp_state = DSP_DOWNLOAD_INIT;
9522 if (ca0132_quirk(spec) == QUIRK_SBZ)
9528 if (spec->dsp_state != DSP_DOWNLOAD_FAILED)
9529 spec->dsp_state = DSP_DOWNLOAD_INIT;
9530 spec->curr_chip_addx = INVALID_CHIP_ADDRESS;
9532 if (ca0132_use_pci_mmio(spec))
9537 if (ca0132_quirk(spec) == QUIRK_AE5 || ca0132_quirk(spec) == QUIRK_AE7)
9543 snd_hda_sequence_write(codec, spec->base_init_verbs);
9545 if (ca0132_use_alt_functions(spec))
9552 switch (ca0132_quirk(spec)) {
9574 for (i = 0; i < spec->num_outputs; i++)
9575 init_output(codec, spec->out_pins[i], spec->dacs[0]);
9577 init_output(codec, cfg->dig_out_pins[0], spec->dig_out);
9579 for (i = 0; i < spec->num_inputs; i++)
9580 init_input(codec, spec->input_pins[i], spec->adcs[i]);
9582 init_input(codec, cfg->dig_in_pin, spec->dig_in);
9584 if (!ca0132_use_alt_functions(spec)) {
9585 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9592 if (ca0132_quirk(spec) == QUIRK_SBZ)
9595 snd_hda_sequence_write(codec, spec->spec_init_verbs);
9596 if (ca0132_use_alt_functions(spec)) {
9610 if (spec->dsp_reload) {
9611 spec->dsp_reload = false;
9622 struct ca0132_spec *spec = codec->spec;
9623 struct auto_pin_cfg *cfg = &spec->autocfg;
9626 init_output(codec, cfg->dig_out_pins[0], spec->dig_out);
9627 init_input(codec, cfg->dig_in_pin, spec->dig_in);
9629 for (i = 0; i < spec->num_inputs; i++)
9630 init_input(codec, spec->input_pins[i], spec->adcs[i]);
9637 struct ca0132_spec *spec = codec->spec;
9639 cancel_delayed_work_sync(&spec->unsol_hp_work);
9641 switch (ca0132_quirk(spec)) {
9664 snd_hda_sequence_write(codec, spec->base_exit_verbs);
9669 if (spec->mem_base)
9670 pci_iounmap(codec->bus->pci, spec->mem_base);
9672 kfree(spec->spec_init_verbs);
9673 kfree(codec->spec);
9678 struct ca0132_spec *spec = codec->spec;
9682 kfree(spec->spec_init_verbs);
9683 kfree(codec->spec);
9689 struct ca0132_spec *spec = codec->spec;
9691 cancel_delayed_work_sync(&spec->unsol_hp_work);
9716 struct ca0132_spec *spec = codec->spec;
9718 spec->dacs[0] = 0x2;
9719 spec->dacs[1] = 0x3;
9720 spec->dacs[2] = 0x4;
9722 spec->multiout.dac_nids = spec->dacs;
9723 spec->multiout.num_dacs = 3;
9725 if (!ca0132_use_alt_functions(spec))
9726 spec->multiout.max_channels = 2;
9728 spec->multiout.max_channels = 6;
9730 switch (ca0132_quirk(spec)) {
9763 switch (ca0132_quirk(spec)) {
9765 spec->num_outputs = 2;
9766 spec->out_pins[0] = 0x0b; /* speaker out */
9767 spec->out_pins[1] = 0x0f;
9768 spec->shared_out_nid = 0x2;
9769 spec->unsol_tag_hp = 0x0f;
9771 spec->adcs[0] = 0x7; /* digital mic / analog mic1 */
9772 spec->adcs[1] = 0x8; /* analog mic2 */
9773 spec->adcs[2] = 0xa; /* what u hear */
9775 spec->num_inputs = 3;
9776 spec->input_pins[0] = 0x12;
9777 spec->input_pins[1] = 0x11;
9778 spec->input_pins[2] = 0x13;
9779 spec->shared_mic_nid = 0x7;
9780 spec->unsol_tag_amic1 = 0x11;
9784 spec->num_outputs = 2;
9785 spec->out_pins[0] = 0x0B; /* Line out */
9786 spec->out_pins[1] = 0x0F; /* Rear headphone out */
9787 spec->out_pins[2] = 0x10; /* Front Headphone / Center/LFE*/
9788 spec->out_pins[3] = 0x11; /* Rear surround */
9789 spec->shared_out_nid = 0x2;
9790 spec->unsol_tag_hp = spec->out_pins[1];
9791 spec->unsol_tag_front_hp = spec->out_pins[2];
9793 spec->adcs[0] = 0x7; /* Rear Mic / Line-in */
9794 spec->adcs[1] = 0x8; /* Front Mic, but only if no DSP */
9795 spec->adcs[2] = 0xa; /* what u hear */
9797 spec->num_inputs = 2;
9798 spec->input_pins[0] = 0x12; /* Rear Mic / Line-in */
9799 spec->input_pins[1] = 0x13; /* What U Hear */
9800 spec->shared_mic_nid = 0x7;
9801 spec->unsol_tag_amic1 = spec->input_pins[0];
9804 spec->dig_out = 0x05;
9805 spec->multiout.dig_out_nid = spec->dig_out;
9806 spec->dig_in = 0x09;
9809 spec->num_outputs = 2;
9810 spec->out_pins[0] = 0x0B; /* Line out */
9811 spec->out_pins[1] = 0x0F; /* Rear headphone out */
9812 spec->out_pins[2] = 0x10; /* Center/LFE */
9813 spec->out_pins[3] = 0x11; /* Rear surround */
9814 spec->shared_out_nid = 0x2;
9815 spec->unsol_tag_hp = spec->out_pins[1];
9816 spec->unsol_tag_front_hp = spec->out_pins[2];
9818 spec->adcs[0] = 0x7; /* Rear Mic / Line-in */
9819 spec->adcs[1] = 0x8; /* Not connected, no front mic */
9820 spec->adcs[2] = 0xa; /* what u hear */
9822 spec->num_inputs = 2;
9823 spec->input_pins[0] = 0x12; /* Rear Mic / Line-in */
9824 spec->input_pins[1] = 0x13; /* What U Hear */
9825 spec->shared_mic_nid = 0x7;
9826 spec->unsol_tag_amic1 = spec->input_pins[0];
9829 spec->adcs[0] = 0x8; /* ZxR DBPro Aux In */
9831 spec->num_inputs = 1;
9832 spec->input_pins[0] = 0x11; /* RCA Line-in */
9834 spec->dig_out = 0x05;
9835 spec->multiout.dig_out_nid = spec->dig_out;
9837 spec->dig_in = 0x09;
9841 spec->num_outputs = 2;
9842 spec->out_pins[0] = 0x0B; /* Line out */
9843 spec->out_pins[1] = 0x11; /* Rear headphone out */
9844 spec->out_pins[2] = 0x10; /* Front Headphone / Center/LFE*/
9845 spec->out_pins[3] = 0x0F; /* Rear surround */
9846 spec->shared_out_nid = 0x2;
9847 spec->unsol_tag_hp = spec->out_pins[1];
9848 spec->unsol_tag_front_hp = spec->out_pins[2];
9850 spec->adcs[0] = 0x7; /* Rear Mic / Line-in */
9851 spec->adcs[1] = 0x8; /* Front Mic, but only if no DSP */
9852 spec->adcs[2] = 0xa; /* what u hear */
9854 spec->num_inputs = 2;
9855 spec->input_pins[0] = 0x12; /* Rear Mic / Line-in */
9856 spec->input_pins[1] = 0x13; /* What U Hear */
9857 spec->shared_mic_nid = 0x7;
9858 spec->unsol_tag_amic1 = spec->input_pins[0];
9861 spec->dig_out = 0x05;
9862 spec->multiout.dig_out_nid = spec->dig_out;
9865 spec->num_outputs = 2;
9866 spec->out_pins[0] = 0x0B; /* Line out */
9867 spec->out_pins[1] = 0x0F; /* Rear headphone out */
9868 spec->out_pins[2] = 0x10; /* Front Headphone / Center/LFE*/
9869 spec->out_pins[3] = 0x11; /* Rear surround */
9870 spec->shared_out_nid = 0x2;
9871 spec->unsol_tag_hp = spec->out_pins[1];
9872 spec->unsol_tag_front_hp = spec->out_pins[2];
9874 spec->adcs[0] = 0x07; /* Rear Mic / Line-in */
9875 spec->adcs[1] = 0x08; /* Front Mic, but only if no DSP */
9876 spec->adcs[2] = 0x0a; /* what u hear */
9878 spec->num_inputs = 2;
9879 spec->input_pins[0] = 0x12; /* Rear Mic / Line-in */
9880 spec->input_pins[1] = 0x13; /* What U Hear */
9881 spec->shared_mic_nid = 0x7;
9882 spec->unsol_tag_amic1 = spec->input_pins[0];
9885 spec->dig_out = 0x05;
9886 spec->multiout.dig_out_nid = spec->dig_out;
9889 spec->num_outputs = 2;
9890 spec->out_pins[0] = 0x0b; /* speaker out */
9891 spec->out_pins[1] = 0x10; /* headphone out */
9892 spec->shared_out_nid = 0x2;
9893 spec->unsol_tag_hp = spec->out_pins[1];
9895 spec->adcs[0] = 0x7; /* digital mic / analog mic1 */
9896 spec->adcs[1] = 0x8; /* analog mic2 */
9897 spec->adcs[2] = 0xa; /* what u hear */
9899 spec->num_inputs = 3;
9900 spec->input_pins[0] = 0x12;
9901 spec->input_pins[1] = 0x11;
9902 spec->input_pins[2] = 0x13;
9903 spec->shared_mic_nid = 0x7;
9904 spec->unsol_tag_amic1 = spec->input_pins[0];
9907 spec->dig_out = 0x05;
9908 spec->multiout.dig_out_nid = spec->dig_out;
9909 spec->dig_in = 0x09;
9918 struct ca0132_spec *spec = codec->spec;
9920 spec->chip_init_verbs = ca0132_init_verbs0;
9925 if (ca0132_use_pci_mmio(spec))
9926 spec->desktop_init_verbs = ca0132_init_verbs1;
9927 spec->spec_init_verbs = kcalloc(NUM_SPEC_VERBS,
9930 if (!spec->spec_init_verbs)
9934 spec->spec_init_verbs[0].nid = 0x0b;
9935 spec->spec_init_verbs[0].param = 0x78D;
9936 spec->spec_init_verbs[0].verb = 0x00;
9940 spec->spec_init_verbs[2].nid = 0x0b;
9941 spec->spec_init_verbs[2].param = AC_VERB_SET_EAPD_BTLENABLE;
9942 spec->spec_init_verbs[2].verb = 0x02;
9944 spec->spec_init_verbs[3].nid = 0x10;
9945 spec->spec_init_verbs[3].param = 0x78D;
9946 spec->spec_init_verbs[3].verb = 0x02;
9948 spec->spec_init_verbs[4].nid = 0x10;
9949 spec->spec_init_verbs[4].param = AC_VERB_SET_EAPD_BTLENABLE;
9950 spec->spec_init_verbs[4].verb = 0x02;
9953 /* Terminator: spec->spec_init_verbs[NUM_SPEC_VERBS-1] */
9965 struct ca0132_spec *spec = codec->spec;
9969 spec->quirk = QUIRK_ZXR;
9972 spec->quirk = QUIRK_ZXR_DBPRO;
9975 spec->quirk = QUIRK_SBZ;
9982 struct ca0132_spec *spec;
9988 spec = kzalloc(sizeof(*spec), GFP_KERNEL);
9989 if (!spec)
9991 codec->spec = spec;
9992 spec->codec = codec;
9997 spec->quirk = quirk->value;
9999 spec->quirk = QUIRK_NONE;
10000 if (ca0132_quirk(spec) == QUIRK_SBZ)
10003 if (ca0132_quirk(spec) == QUIRK_ZXR_DBPRO)
10012 spec->dsp_state = DSP_DOWNLOAD_INIT;
10013 spec->num_mixers = 1;
10016 switch (ca0132_quirk(spec)) {
10018 spec->mixers[0] = desktop_mixer;
10022 spec->mixers[0] = desktop_mixer;
10028 spec->mixers[0] = desktop_mixer;
10032 spec->mixers[0] = r3di_mixer;
10036 spec->mixers[0] = desktop_mixer;
10040 spec->mixers[0] = desktop_mixer;
10044 spec->mixers[0] = ca0132_mixer;
10049 switch (ca0132_quirk(spec)) {
10055 spec->use_alt_controls = true;
10056 spec->use_alt_functions = true;
10057 spec->use_pci_mmio = true;
10060 spec->use_alt_controls = true;
10061 spec->use_alt_functions = true;
10062 spec->use_pci_mmio = false;
10065 spec->use_alt_controls = false;
10066 spec->use_alt_functions = false;
10067 spec->use_pci_mmio = false;
10072 if (spec->use_pci_mmio) {
10073 spec->mem_base = pci_iomap(codec->bus->pci, 2, 0xC20);
10074 if (spec->mem_base == NULL) {
10076 spec->quirk = QUIRK_NONE;
10081 spec->base_init_verbs = ca0132_base_init_verbs;
10082 spec->base_exit_verbs = ca0132_base_exit_verbs;
10084 INIT_DELAYED_WORK(&spec->unsol_hp_work, ca0132_unsol_hp_delayed);
10094 err = snd_hda_parse_pin_def_config(codec, &spec->autocfg, NULL);