Lines Matching refs:spec

1148 #define ca0132_quirk(spec)		((spec)->quirk)
1149 #define ca0132_use_pci_mmio(spec) ((spec)->use_pci_mmio)
1150 #define ca0132_use_alt_functions(spec) ((spec)->use_alt_functions)
1151 #define ca0132_use_alt_controls(spec) ((spec)->use_alt_controls)
1153 #define ca0132_quirk(spec) ({ (void)(spec); QUIRK_NONE; })
1154 #define ca0132_use_alt_functions(spec) ({ (void)(spec); false; })
1155 #define ca0132_use_pci_mmio(spec) ({ (void)(spec); false; })
1156 #define ca0132_use_alt_controls(spec) ({ (void)(spec); false; })
1535 struct ca0132_spec *spec = codec->spec;
1538 if (spec->curr_chip_addx == chip_addx)
1551 spec->curr_chip_addx = (res < 0) ? ~0U : chip_addx;
1561 struct ca0132_spec *spec = codec->spec;
1575 spec->curr_chip_addx = (res != -EIO) ?
1576 (spec->curr_chip_addx + 4) : ~0U;
1606 struct ca0132_spec *spec = codec->spec;
1626 spec->curr_chip_addx = (res != -EIO) ?
1627 (spec->curr_chip_addx + 4) : ~0U;
1638 struct ca0132_spec *spec = codec->spec;
1641 mutex_lock(&spec->chipio_mutex);
1653 mutex_unlock(&spec->chipio_mutex);
1689 struct ca0132_spec *spec = codec->spec;
1692 mutex_lock(&spec->chipio_mutex);
1699 mutex_unlock(&spec->chipio_mutex);
1711 struct ca0132_spec *spec = codec->spec;
1714 mutex_lock(&spec->chipio_mutex);
1726 mutex_unlock(&spec->chipio_mutex);
1752 struct ca0132_spec *spec = codec->spec;
1760 mutex_lock(&spec->chipio_mutex);
1769 mutex_unlock(&spec->chipio_mutex);
1878 struct ca0132_spec *spec = codec->spec;
1880 mutex_lock(&spec->chipio_mutex);
1893 mutex_unlock(&spec->chipio_mutex);
1939 struct ca0132_spec *spec = codec->spec;
1944 mutex_lock(&spec->chipio_mutex);
1959 mutex_unlock(&spec->chipio_mutex);
2114 struct ca0132_spec *spec = codec->spec;
2121 if ((data & 0x00ffffff) == spec->wait_scp_header) {
2122 spec->scp_resp_header = data;
2123 spec->scp_resp_count = data >> 27;
2124 count = spec->wait_num_data;
2125 dspio_read_multiple(codec, spec->scp_resp_data,
2126 &spec->scp_resp_count, count);
2143 struct ca0132_spec *spec = codec->spec;
2170 spec->wait_scp_header = *((unsigned int *)send_buf);
2175 spec->wait_scp_header &= 0xffff0000;
2176 spec->wait_scp_header |= (resp_src_id << 8) | (resp_target_id);
2177 spec->wait_num_data = return_buf_size/sizeof(unsigned int) - 1;
2178 spec->wait_scp = 1;
2185 spec->wait_scp = 0;
2194 } while (spec->wait_scp && time_before(jiffies, timeout));
2196 if (!spec->wait_scp) {
2198 memcpy(&ret_msg->hdr, &spec->scp_resp_header, 4);
2199 memcpy(&ret_msg->data, spec->scp_resp_data,
2200 spec->wait_num_data);
2201 *bytes_returned = (spec->scp_resp_count + 1) * 4;
2206 spec->wait_scp = 0;
2919 struct ca0132_spec *spec = codec->spec;
2931 spec->dsp_stream_id = status;
2982 struct ca0132_spec *spec = dma->codec->spec;
2984 return spec->dsp_stream_id;
3277 struct ca0132_spec *spec = codec->spec;
3321 spec->dsp_stream_id = status;
3393 struct ca0132_spec *spec = codec->spec;
3395 if (!ca0132_use_alt_functions(spec)) {
3527 struct ca0132_spec *spec = codec->spec;
3533 writew(gpio_data, spec->mem_base + 0x320);
3547 struct ca0132_spec *spec = codec->spec;
3550 writel(0x0000007e, spec->mem_base + 0x210);
3551 readl(spec->mem_base + 0x210);
3552 writel(0x0000005a, spec->mem_base + 0x210);
3553 readl(spec->mem_base + 0x210);
3554 readl(spec->mem_base + 0x210);
3556 writel(0x00800005, spec->mem_base + 0x20c);
3557 writel(group, spec->mem_base + 0x804);
3559 writel(0x00800005, spec->mem_base + 0x20c);
3564 writel(write_val, spec->mem_base + 0x204);
3570 readl(spec->mem_base + 0x860);
3571 readl(spec->mem_base + 0x854);
3572 readl(spec->mem_base + 0x840);
3574 writel(0x00800004, spec->mem_base + 0x20c);
3575 writel(0x00000000, spec->mem_base + 0x210);
3576 readl(spec->mem_base + 0x210);
3577 readl(spec->mem_base + 0x210);
3586 struct ca0132_spec *spec = codec->spec;
3589 writel(0x0000007e, spec->mem_base + 0x210);
3590 readl(spec->mem_base + 0x210);
3591 writel(0x0000005a, spec->mem_base + 0x210);
3592 readl(spec->mem_base + 0x210);
3593 readl(spec->mem_base + 0x210);
3595 writel(0x00800003, spec->mem_base + 0x20c);
3596 writel(group, spec->mem_base + 0x804);
3598 writel(0x00800005, spec->mem_base + 0x20c);
3603 writel(write_val, spec->mem_base + 0x204);
3605 readl(spec->mem_base + 0x860);
3606 readl(spec->mem_base + 0x854);
3607 readl(spec->mem_base + 0x840);
3609 writel(0x00800004, spec->mem_base + 0x20c);
3610 writel(0x00000000, spec->mem_base + 0x210);
3611 readl(spec->mem_base + 0x210);
3612 readl(spec->mem_base + 0x210);
3625 struct ca0132_spec *spec = codec->spec;
3627 switch (ca0132_quirk(spec)) {
3648 struct ca0132_spec *spec = codec->spec;
3650 switch (ca0132_quirk(spec)) {
3774 struct ca0132_spec *spec = codec->spec;
3776 snd_hda_codec_setup_stream(codec, spec->dacs[0], stream_tag, 0, format);
3785 struct ca0132_spec *spec = codec->spec;
3787 if (spec->dsp_state == DSP_DOWNLOADING)
3792 if (spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID])
3795 snd_hda_codec_cleanup_stream(codec, spec->dacs[0]);
3804 struct ca0132_spec *spec = codec->spec;
3808 if (spec->dsp_state != DSP_DOWNLOADED)
3812 if (spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]) {
3813 if ((spec->effects_switch[SURROUND - EFFECT_START_NID]) ||
3814 (spec->effects_switch[DIALOG_PLUS - EFFECT_START_NID]))
3819 if (spec->cur_out_type == SPEAKER_OUT)
3832 struct ca0132_spec *spec = codec->spec;
3833 return snd_hda_multi_out_dig_open(codec, &spec->multiout);
3842 struct ca0132_spec *spec = codec->spec;
3843 return snd_hda_multi_out_dig_prepare(codec, &spec->multiout,
3851 struct ca0132_spec *spec = codec->spec;
3852 return snd_hda_multi_out_dig_cleanup(codec, &spec->multiout);
3859 struct ca0132_spec *spec = codec->spec;
3860 return snd_hda_multi_out_dig_close(codec, &spec->multiout);
3882 struct ca0132_spec *spec = codec->spec;
3884 if (spec->dsp_state == DSP_DOWNLOADING)
3895 struct ca0132_spec *spec = codec->spec;
3899 if (spec->dsp_state != DSP_DOWNLOADED)
3902 if (spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID])
4129 struct ca0132_spec *spec = codec->spec;
4134 *valp = spec->cur_ctl_vals[idx];
4155 struct ca0132_spec *spec = codec->spec;
4162 if (spec->cur_ctl_vals[idx] == *valp)
4165 spec->cur_ctl_vals[idx] = *valp;
4190 struct ca0132_spec *spec = codec->spec;
4197 if (spec->cur_ctl_vals[idx] == *valp)
4200 spec->cur_ctl_vals[idx] = *valp;
4225 struct ca0132_spec *spec = codec->spec;
4232 if (spec->cur_ctl_vals[idx] == *valp)
4235 spec->cur_ctl_vals[idx] = *valp;
4306 struct ca0132_spec *spec = codec->spec;
4310 spec->cur_ctl_vals[WEDGE_ANGLE - TUNING_CTL_START_NID] = 10;
4312 spec->cur_ctl_vals[SVM_LEVEL - TUNING_CTL_START_NID] = 74;
4316 spec->cur_ctl_vals[i] = 24;
4328 struct ca0132_spec *spec = codec->spec;
4339 auto_jack = spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID];
4342 jack_present = snd_hda_jack_detect(codec, spec->unsol_tag_hp);
4345 spec->vnode_lswitch[VNID_HP_SEL - VNODE_START_NID];
4348 spec->cur_out_type = HEADPHONE_OUT;
4350 spec->cur_out_type = SPEAKER_OUT;
4352 if (spec->cur_out_type == SPEAKER_OUT) {
4366 snd_hda_codec_write(codec, spec->out_pins[1], 0,
4368 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4370 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4372 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4376 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[1], 0,
4378 snd_hda_set_pin_ctl(codec, spec->out_pins[1],
4381 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[0], 0,
4383 snd_hda_set_pin_ctl(codec, spec->out_pins[0],
4399 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4401 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4403 snd_hda_codec_write(codec, spec->out_pins[1], 0,
4405 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4409 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[0], 0,
4411 snd_hda_set_pin_ctl(codec, spec->out_pins[0],
4414 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[1], 0,
4416 snd_hda_set_pin_ctl(codec, spec->out_pins[1],
4432 struct ca0132_spec *spec = codec->spec;
4436 if (ca0132_quirk(spec) == QUIRK_AE5)
4444 out_cmds->vals[spec->cur_out_type][i]);
4449 struct ca0132_spec *spec = codec->spec;
4450 int quirk = ca0132_quirk(spec);
4455 if (spec->channel_cfg_val == SPEAKER_CHANNELS_4_0
4456 || spec->channel_cfg_val == SPEAKER_CHANNELS_2_0)
4460 tmp = spec->speaker_range_val[0] ? FLOAT_ZERO : FLOAT_ONE;
4467 tmp = spec->speaker_range_val[1] ? FLOAT_ZERO : FLOAT_ONE;
4495 struct ca0132_spec *spec = codec->spec;
4499 if (val && spec->channel_cfg_val != SPEAKER_CHANNELS_4_0 &&
4500 spec->channel_cfg_val != SPEAKER_CHANNELS_2_0)
4511 tmp = float_xbass_xover_lookup[spec->xbass_xover_freq];
4528 struct ca0132_spec *spec = codec->spec;
4529 int quirk = ca0132_quirk(spec);
4545 struct ca0132_spec *spec = codec->spec;
4553 out_info = &quirk_data->out_set_info[spec->cur_out_type];
4596 if (spec->cur_out_type != HEADPHONE_OUT) {
4604 spec->ae5_headphone_gain_val);
4607 spec->zxr_gain_set);
4637 struct ca0132_spec *spec = codec->spec;
4643 hda_nid_t headphone_nid = spec->out_pins[1];
4649 auto_jack = spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID];
4657 jack_present = snd_hda_jack_detect(codec, spec->unsol_tag_hp) ||
4658 snd_hda_jack_detect(codec, spec->unsol_tag_front_hp);
4661 spec->cur_out_type = HEADPHONE_OUT;
4663 spec->cur_out_type = SPEAKER_OUT;
4665 spec->cur_out_type = spec->out_enum_val;
4667 outfx_set = spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID];
4677 switch (spec->cur_out_type) {
4682 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4686 ca0132_set_out_node_pincfg(codec, spec->out_pins[1], 0, 0);
4688 ca0132_set_out_node_pincfg(codec, spec->out_pins[0], 1, 0);
4690 ca0132_set_out_node_pincfg(codec, spec->out_pins[2], 1, 0);
4692 ca0132_set_out_node_pincfg(codec, spec->out_pins[3], 1, 0);
4699 if (!outfx_set && spec->channel_cfg_val == SPEAKER_CHANNELS_2_0)
4702 tmp = speaker_channel_cfgs[spec->channel_cfg_val].val;
4711 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4715 ca0132_set_out_node_pincfg(codec, spec->out_pins[0], 0, 0);
4716 ca0132_set_out_node_pincfg(codec, spec->out_pins[2], 0, 0);
4717 ca0132_set_out_node_pincfg(codec, spec->out_pins[3], 0, 0);
4720 if (snd_hda_jack_detect(codec, spec->unsol_tag_front_hp))
4721 headphone_nid = spec->out_pins[2];
4722 else if (snd_hda_jack_detect(codec, spec->unsol_tag_hp))
4723 headphone_nid = spec->out_pins[1];
4743 spec->effects_switch[X_BASS - EFFECT_START_NID]);
4759 if (spec->cur_out_type == SPEAKER_OUT)
4761 spec->bass_redirection_val);
4771 if (spec->cur_out_type == SPEAKER_OUT) {
4785 struct ca0132_spec *spec = container_of(
4789 if (ca0132_use_alt_functions(spec))
4790 ca0132_alt_select_out(spec->codec);
4792 ca0132_select_out(spec->codec);
4794 jack = snd_hda_jack_tbl_get(spec->codec, spec->unsol_tag_hp);
4797 snd_hda_jack_report_sync(spec->codec);
4813 struct ca0132_spec *spec = codec->spec;
4816 if (spec->dsp_state != DSP_DOWNLOADED)
4820 if (!spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] ||
4825 if (spec->cur_mic_type == DIGITAL_MIC)
4835 if (spec->cur_mic_type == DIGITAL_MIC)
4851 struct ca0132_spec *spec = codec->spec;
4854 if (spec->dsp_state != DSP_DOWNLOADED)
4863 if (!spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] ||
4864 (val == 0) || spec->in_enum_val == REAR_LINE_IN) {
4873 if (ca0132_quirk(spec) == QUIRK_R3DI)
4877 if (spec->in_enum_val == REAR_LINE_IN)
4880 if (ca0132_quirk(spec) == QUIRK_SBZ)
4892 if (ca0132_quirk(spec) == QUIRK_R3DI)
4895 if (spec->effects_switch[VOICE_FOCUS - EFFECT_START_NID])
4922 struct ca0132_spec *spec = codec->spec;
4930 auto_jack = spec->vnode_lswitch[VNID_AMIC1_ASEL - VNODE_START_NID];
4933 jack_present = snd_hda_jack_detect(codec, spec->unsol_tag_amic1);
4936 spec->vnode_lswitch[VNID_AMIC1_SEL - VNODE_START_NID];
4939 spec->cur_mic_type = LINE_MIC_IN;
4941 spec->cur_mic_type = DIGITAL_MIC;
4943 if (spec->cur_mic_type == DIGITAL_MIC) {
4950 spec->effects_switch
4956 ca0132_mic_boost_set(codec, spec->cur_mic_boost);
4974 struct ca0132_spec *spec = codec->spec;
4984 spec->cur_mic_type = spec->in_enum_val;
4986 switch (spec->cur_mic_type) {
4988 switch (ca0132_quirk(spec)) {
5021 if (ca0132_quirk(spec) == QUIRK_R3DI)
5028 switch (ca0132_quirk(spec)) {
5044 ca0132_alt_mic_boost_set(codec, spec->mic_boost_enum_val);
5048 switch (ca0132_quirk(spec)) {
5073 if (ca0132_quirk(spec) == QUIRK_R3DI)
5076 if (ca0132_quirk(spec) == QUIRK_AE7)
5082 switch (ca0132_quirk(spec)) {
5095 switch (ca0132_quirk(spec)) {
5117 if (ca0132_quirk(spec) == QUIRK_R3DI)
5125 switch (ca0132_quirk(spec)) {
5137 ca0132_alt_mic_boost_set(codec, spec->mic_boost_enum_val);
5153 struct ca0132_spec *spec = codec->spec;
5158 nid = spec->shared_out_nid;
5161 nid = spec->shared_mic_nid;
5179 struct ca0132_spec *spec = codec->spec;
5184 tmp = spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] ?
5201 struct ca0132_spec *spec = codec->spec;
5213 if (!spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID])
5215 if (spec->cur_out_type == SPEAKER_OUT && nid == X_BASS) {
5216 channel_cfg = spec->channel_cfg_val;
5226 if (!spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID])
5230 if ((nid == VOICE_FOCUS) && (spec->cur_mic_type != DIGITAL_MIC))
5234 if ((nid == VOICE_FOCUS) && ca0132_use_pci_mmio(spec)
5235 && (spec->cur_mic_type != REAR_LINE_IN)) {
5236 if (spec->effects_switch[CRYSTAL_VOICE -
5239 if (spec->effects_switch[VOICE_FOCUS -
5253 if ((nid == NOISE_REDUCTION) && ca0132_use_pci_mmio(spec)
5254 && (spec->cur_mic_type != REAR_LINE_IN)) {
5255 if (spec->effects_switch[CRYSTAL_VOICE -
5257 if (spec->effects_switch[NOISE_REDUCTION -
5269 if (ca0132_use_alt_functions(spec) &&
5270 spec->in_enum_val == REAR_LINE_IN)
5292 struct ca0132_spec *spec = codec->spec;
5297 spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]);
5299 if (ca0132_use_alt_functions(spec))
5306 ret |= ca0132_effects_set(codec, nid, spec->effects_switch[i]);
5314 struct ca0132_spec *spec = codec->spec;
5315 unsigned int oldval = snd_hda_codec_read(codec, spec->adcs[0], 0,
5318 snd_hda_codec_write(codec, spec->adcs[0], 0,
5327 struct ca0132_spec *spec = codec->spec;
5330 snd_hda_codec_write(codec, spec->adcs[0], 0,
5340 struct ca0132_spec *spec = codec->spec;
5346 spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID]);
5352 ret |= ca0132_effects_set(codec, nid, spec->effects_switch[i]);
5355 ret |= ca0132_voicefx_set(codec, (spec->voicefx_val ? 1 : 0));
5359 if (ca0132_use_alt_functions(spec))
5369 struct ca0132_spec *spec = codec->spec;
5373 ret = snd_hda_codec_amp_update(codec, spec->input_pins[0], 0,
5376 ret = snd_hda_codec_amp_update(codec, spec->input_pins[0], 0,
5384 struct ca0132_spec *spec = codec->spec;
5387 ret = snd_hda_codec_amp_update(codec, spec->input_pins[0], 0,
5421 struct ca0132_spec *spec = codec->spec;
5426 spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID];
5428 if (ca0132_use_alt_functions(spec))
5438 spec->vnode_lswitch[VNID_AMIC1_ASEL - VNODE_START_NID];
5445 if (ca0132_use_alt_functions(spec))
5540 struct ca0132_spec *spec = codec->spec;
5545 *valp = spec->bass_redirect_xover_freq;
5547 *valp = spec->xbass_xover_freq;
5556 struct ca0132_spec *spec = codec->spec;
5561 *valp = spec->fx_ctl_val[idx];
5599 struct ca0132_spec *spec = codec->spec;
5606 cur_val = &spec->bass_redirect_xover_freq;
5608 cur_val = &spec->xbass_xover_freq;
5629 struct ca0132_spec *spec = codec->spec;
5636 if (spec->fx_ctl_val[idx] == *valp)
5639 spec->fx_ctl_val[idx] = *valp;
5676 struct ca0132_spec *spec = codec->spec;
5678 ucontrol->value.enumerated.item[0] = spec->mic_boost_enum_val;
5686 struct ca0132_spec *spec = codec->spec;
5696 spec->mic_boost_enum_val = sel;
5698 if (spec->in_enum_val != REAR_LINE_IN)
5699 ca0132_alt_mic_boost_set(codec, spec->mic_boost_enum_val);
5730 struct ca0132_spec *spec = codec->spec;
5732 ucontrol->value.enumerated.item[0] = spec->ae5_headphone_gain_val;
5740 struct ca0132_spec *spec = codec->spec;
5750 spec->ae5_headphone_gain_val = sel;
5752 if (spec->out_enum_val == HEADPHONE_OUT)
5753 ae5_headphone_gain_set(codec, spec->ae5_headphone_gain_val);
5783 struct ca0132_spec *spec = codec->spec;
5785 ucontrol->value.enumerated.item[0] = spec->ae5_filter_val;
5793 struct ca0132_spec *spec = codec->spec;
5803 spec->ae5_filter_val = sel;
5833 struct ca0132_spec *spec = codec->spec;
5835 ucontrol->value.enumerated.item[0] = spec->in_enum_val;
5843 struct ca0132_spec *spec = codec->spec;
5851 if (ca0132_quirk(spec) == QUIRK_AE7)
5860 spec->in_enum_val = sel;
5885 struct ca0132_spec *spec = codec->spec;
5887 ucontrol->value.enumerated.item[0] = spec->out_enum_val;
5895 struct ca0132_spec *spec = codec->spec;
5906 spec->out_enum_val = sel;
5908 auto_jack = spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID];
5936 struct ca0132_spec *spec = codec->spec;
5938 ucontrol->value.enumerated.item[0] = spec->channel_cfg_val;
5946 struct ca0132_spec *spec = codec->spec;
5956 spec->channel_cfg_val = sel;
5958 if (spec->out_enum_val == SPEAKER_OUT)
5989 struct ca0132_spec *spec = codec->spec;
5991 ucontrol->value.enumerated.item[0] = spec->smart_volume_setting;
5999 struct ca0132_spec *spec = codec->spec;
6011 spec->smart_volume_setting = sel;
6053 struct ca0132_spec *spec = codec->spec;
6055 ucontrol->value.enumerated.item[0] = spec->eq_preset_val;
6063 struct ca0132_spec *spec = codec->spec;
6086 spec->eq_preset_val = sel;
6110 struct ca0132_spec *spec = codec->spec;
6112 ucontrol->value.enumerated.item[0] = spec->voicefx_val;
6120 struct ca0132_spec *spec = codec->spec;
6143 spec->voicefx_val = sel;
6155 struct ca0132_spec *spec = codec->spec;
6163 *valp = spec->vnode_lswitch[nid - VNODE_START_NID];
6167 *valp = spec->vnode_rswitch[nid - VNODE_START_NID];
6175 *valp = spec->effects_switch[nid - EFFECT_START_NID];
6180 if (nid == spec->input_pins[0]) {
6181 *valp = spec->cur_mic_boost;
6186 *valp = spec->zxr_gain_set;
6191 *valp = spec->speaker_range_val[nid - SPEAKER_FULL_RANGE_FRONT];
6196 *valp = spec->bass_redirection_val;
6207 struct ca0132_spec *spec = codec->spec;
6220 spec->vnode_lswitch[nid - VNODE_START_NID] = *valp;
6224 spec->vnode_rswitch[nid - VNODE_START_NID] = *valp;
6233 spec->effects_switch[nid - EFFECT_START_NID] = *valp;
6240 spec->effects_switch[nid - EFFECT_START_NID] = *valp;
6248 spec->effects_switch[nid - EFFECT_START_NID] = *valp;
6254 if (nid == spec->input_pins[0]) {
6255 spec->cur_mic_boost = *valp;
6256 if (ca0132_use_alt_functions(spec)) {
6257 if (spec->in_enum_val != REAR_LINE_IN)
6261 if (spec->cur_mic_type != DIGITAL_MIC)
6269 spec->zxr_gain_set = *valp;
6270 if (spec->cur_out_type == HEADPHONE_OUT)
6279 spec->speaker_range_val[nid - SPEAKER_FULL_RANGE_FRONT] = *valp;
6280 if (spec->cur_out_type == SPEAKER_OUT)
6287 spec->bass_redirection_val = *valp;
6288 if (spec->cur_out_type == SPEAKER_OUT)
6309 struct ca0132_spec *spec = codec->spec;
6318 lookup_val = spec->vnode_lvol[nid - VNODE_START_NID];
6325 lookup_val = spec->vnode_rvol[nid - VNODE_START_NID];
6341 struct ca0132_spec *spec = codec->spec;
6351 nid = spec->shared_out_nid;
6361 nid = spec->shared_mic_nid;
6379 struct ca0132_spec *spec = codec->spec;
6386 *valp = spec->vnode_lvol[nid - VNODE_START_NID];
6390 *valp = spec->vnode_rvol[nid - VNODE_START_NID];
6400 struct ca0132_spec *spec = codec->spec;
6410 spec->vnode_lvol[nid - VNODE_START_NID] = *valp;
6414 spec->vnode_rvol[nid - VNODE_START_NID] = *valp;
6447 struct ca0132_spec *spec = codec->spec;
6465 spec->vnode_lvol[vnid - VNODE_START_NID] = *valp;
6469 spec->vnode_rvol[vnid - VNODE_START_NID] = *valp;
6487 struct ca0132_spec *spec = codec->spec;
6497 nid = spec->shared_out_nid;
6507 nid = spec->shared_mic_nid;
6560 struct ca0132_spec *spec = codec->spec;
6568 if (ca0132_use_alt_controls(spec) && (nid <= IN_EFFECT_END_NID))
6909 struct ca0132_spec *spec = codec->spec;
6914 for (i = 0; i < spec->num_mixers; i++) {
6915 err = snd_hda_add_new_ctls(codec, spec->mixers[i]);
6920 if (ca0132_use_alt_functions(spec)) {
6921 snd_hda_set_vmaster_tlv(codec, spec->dacs[0], HDA_OUTPUT,
6922 spec->tlv);
6924 spec->tlv, ca0132_alt_follower_pfxs,
6929 true, &spec->vmaster_mute.sw_kctl);
6940 if (ca0132_use_pci_mmio(spec)) {
6957 if (ca0132_use_alt_controls(spec)) {
7011 if (ca0132_use_alt_functions(spec)) {
7037 if (ca0132_quirk(spec) != QUIRK_ZXR) {
7044 switch (ca0132_quirk(spec)) {
7067 err = snd_hda_jack_add_kctls(codec, &spec->autocfg);
7071 if (spec->dig_out) {
7072 err = snd_hda_create_spdif_out_ctls(codec, spec->dig_out,
7073 spec->dig_out);
7076 err = snd_hda_create_spdif_share_sw(codec, &spec->multiout);
7079 /* spec->multiout.share_spdif = 1; */
7082 if (spec->dig_in) {
7083 err = snd_hda_create_spdif_in_ctls(codec, spec->dig_in);
7088 if (ca0132_use_alt_functions(spec))
7096 struct ca0132_spec *spec = codec->spec;
7099 if (spec->dig_out) {
7100 err = snd_hda_create_spdif_out_ctls(codec, spec->dig_out,
7101 spec->dig_out);
7106 if (spec->dig_in) {
7107 err = snd_hda_create_spdif_in_ctls(codec, spec->dig_in);
7160 struct ca0132_spec *spec = codec->spec;
7166 if (ca0132_use_alt_functions(spec)) {
7172 info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->dacs[0];
7174 spec->multiout.max_channels;
7177 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[0];
7180 if (!ca0132_use_alt_functions(spec)) {
7187 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[1];
7195 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[2];
7197 if (!spec->dig_out && !spec->dig_in)
7204 if (spec->dig_out) {
7207 info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->dig_out;
7209 if (spec->dig_in) {
7212 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->dig_in;
7220 struct ca0132_spec *spec = codec->spec;
7228 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[0];
7231 if (!spec->dig_out && !spec->dig_in)
7238 if (spec->dig_out) {
7241 info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->dig_out;
7243 if (spec->dig_in) {
7246 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->dig_in;
7301 struct ca0132_spec *spec = codec->spec;
7315 val = spec->dmic_ctl;
7317 snd_hda_codec_write(codec, spec->input_pins[0], 0,
7320 if (!(spec->dmic_ctl & 0x20))
7327 val = spec->dmic_ctl;
7330 snd_hda_codec_write(codec, spec->input_pins[0], 0,
7333 if (!(spec->dmic_ctl & 0x20))
7345 struct ca0132_spec *spec = codec->spec;
7358 snd_hda_codec_write(codec, spec->input_pins[0], 0,
7368 snd_hda_codec_write(codec, spec->input_pins[0], 0,
7378 if (ca0132_quirk(spec) == QUIRK_ALIENWARE_M17XR4)
7383 spec->dmic_ctl = val;
7384 snd_hda_codec_write(codec, spec->input_pins[0], 0,
7393 struct ca0132_spec *spec = codec->spec;
7395 mutex_lock(&spec->chipio_mutex);
7408 mutex_unlock(&spec->chipio_mutex);
7413 struct ca0132_spec *spec = codec->spec;
7419 for (i = 0; i < spec->multiout.num_dacs; i++)
7420 refresh_amp_caps(codec, spec->dacs[i], HDA_OUTPUT);
7422 for (i = 0; i < spec->num_outputs; i++)
7423 refresh_amp_caps(codec, spec->out_pins[i], HDA_OUTPUT);
7425 for (i = 0; i < spec->num_inputs; i++) {
7426 refresh_amp_caps(codec, spec->adcs[i], HDA_INPUT);
7427 refresh_amp_caps(codec, spec->input_pins[i], HDA_INPUT);
7454 struct ca0132_spec *spec = codec->spec;
7458 switch (ca0132_quirk(spec)) {
7499 struct ca0132_spec *spec = codec->spec;
7505 snd_hda_codec_setup_stream(codec, spec->dacs[0], spec->dsp_stream_id,
7508 snd_hda_codec_cleanup_stream(codec, spec->dacs[0]);
7516 struct ca0132_spec *spec = codec->spec;
7522 if (ca0132_quirk(spec) == QUIRK_R3DI) {
7532 if (ca0132_quirk(spec) == QUIRK_R3DI)
7546 struct ca0132_spec *spec = codec->spec;
7548 mutex_lock(&spec->chipio_mutex);
7567 mutex_unlock(&spec->chipio_mutex);
7578 struct ca0132_spec *spec = codec->spec;
7580 mutex_lock(&spec->chipio_mutex);
7594 if (ca0132_quirk(spec) == QUIRK_SBZ) {
7607 } else if (ca0132_quirk(spec) == QUIRK_ZXR) {
7620 mutex_unlock(&spec->chipio_mutex);
7629 struct ca0132_spec *spec = codec->spec;
7637 switch (ca0132_quirk(spec)) {
7676 struct ca0132_spec *spec = codec->spec;
7691 switch (ca0132_quirk(spec)) {
7707 struct ca0132_spec *spec = codec->spec;
7715 writeb(0xff, spec->mem_base + 0x304);
7716 writeb(0xff, spec->mem_base + 0x304);
7717 writeb(0xff, spec->mem_base + 0x304);
7718 writeb(0xff, spec->mem_base + 0x304);
7719 writeb(0x00, spec->mem_base + 0x100);
7720 writeb(0xff, spec->mem_base + 0x304);
7721 writeb(0x00, spec->mem_base + 0x100);
7722 writeb(0xff, spec->mem_base + 0x304);
7723 writeb(0x00, spec->mem_base + 0x100);
7724 writeb(0xff, spec->mem_base + 0x304);
7725 writeb(0x00, spec->mem_base + 0x100);
7726 writeb(0xff, spec->mem_base + 0x304);
7788 struct ca0132_spec *spec = codec->spec;
7790 mutex_lock(&spec->chipio_mutex);
7815 mutex_unlock(&spec->chipio_mutex);
7820 struct ca0132_spec *spec = codec->spec;
7822 mutex_lock(&spec->chipio_mutex);
7847 mutex_unlock(&spec->chipio_mutex);
7857 struct ca0132_spec *spec = codec->spec;
7860 mutex_lock(&spec->chipio_mutex);
7888 mutex_unlock(&spec->chipio_mutex);
7893 struct ca0132_spec *spec = codec->spec;
7895 mutex_lock(&spec->chipio_mutex);
7913 mutex_unlock(&spec->chipio_mutex);
7936 struct ca0132_spec *spec = codec->spec;
7945 mutex_lock(&spec->chipio_mutex);
8011 mutex_unlock(&spec->chipio_mutex);
8061 struct ca0132_spec *spec = codec->spec;
8066 if (spec->dsp_state != DSP_DOWNLOADED)
8106 struct ca0132_spec *spec = codec->spec;
8111 if (spec->dsp_state != DSP_DOWNLOADED)
8129 if (ca0132_quirk(spec) == QUIRK_R3DI)
8133 if (ca0132_quirk(spec) == QUIRK_R3D) {
8156 struct ca0132_spec *spec = codec->spec;
8161 if (spec->dsp_state != DSP_DOWNLOADED)
8215 struct ca0132_spec *spec = codec->spec;
8220 if (spec->dsp_state != DSP_DOWNLOADED)
8284 struct ca0132_spec *spec = codec->spec;
8289 if (spec->dsp_state != DSP_DOWNLOADED)
8369 struct ca0132_spec *spec = codec->spec;
8371 if (ca0132_use_alt_functions(spec)) {
8402 struct ca0132_spec *spec = codec->spec;
8404 if (ca0132_use_alt_functions(spec)) {
8433 struct ca0132_spec *spec = codec->spec;
8441 switch (ca0132_quirk(spec)) {
8488 struct ca0132_spec *spec = codec->spec;
8494 if (spec->dsp_state == DSP_DOWNLOAD_FAILED)
8498 if (spec->dsp_state != DSP_DOWNLOADED) {
8499 spec->dsp_state = DSP_DOWNLOADING;
8502 spec->dsp_state = DSP_DOWNLOAD_FAILED;
8504 spec->dsp_state = DSP_DOWNLOADED;
8508 if (spec->dsp_state == DSP_DOWNLOADED && !ca0132_use_alt_functions(spec))
8515 struct ca0132_spec *spec = codec->spec;
8519 if (spec->wait_scp) {
8521 spec->wait_scp = 0;
8530 struct ca0132_spec *spec = codec->spec;
8539 schedule_delayed_work(&spec->unsol_hp_work, msecs_to_jiffies(500));
8544 struct ca0132_spec *spec = codec->spec;
8546 if (ca0132_use_alt_functions(spec))
8554 struct ca0132_spec *spec = codec->spec;
8555 snd_hda_jack_detect_enable_callback(codec, spec->unsol_tag_hp, hp_callback);
8556 snd_hda_jack_detect_enable_callback(codec, spec->unsol_tag_amic1,
8561 if (ca0132_use_alt_functions(spec))
8563 spec->unsol_tag_front_hp, hp_callback);
8643 struct ca0132_spec *spec = codec->spec;
8648 mutex_init(&spec->chipio_mutex);
8650 spec->cur_out_type = SPEAKER_OUT;
8651 if (!ca0132_use_alt_functions(spec))
8652 spec->cur_mic_type = DIGITAL_MIC;
8654 spec->cur_mic_type = REAR_MIC;
8656 spec->cur_mic_boost = 0;
8659 spec->vnode_lvol[i] = 0x5a;
8660 spec->vnode_rvol[i] = 0x5a;
8661 spec->vnode_lswitch[i] = 0;
8662 spec->vnode_rswitch[i] = 0;
8671 spec->effects_switch[i] = on ? 1 : 0;
8677 if (ca0132_use_alt_controls(spec)) {
8679 spec->speaker_range_val[0] = 1;
8680 spec->speaker_range_val[1] = 1;
8682 spec->xbass_xover_freq = 8;
8684 spec->fx_ctl_val[i] = effect_slider_defaults[i];
8686 spec->bass_redirect_xover_freq = 8;
8689 spec->voicefx_val = 0;
8690 spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID] = 1;
8691 spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] = 0;
8696 * to make sure that spec->in_enum_val is set properly.
8698 if (ca0132_quirk(spec) == QUIRK_ZXR)
8699 spec->in_enum_val = REAR_MIC;
8720 struct ca0132_spec *spec = codec->spec;
8724 writeb(0x0, spec->mem_base + 0x100);
8726 writeb(0xb3, spec->mem_base + 0x304);
8926 struct ca0132_spec *spec = codec->spec;
8933 if (spec->startup_check_entered)
8936 spec->startup_check_entered = true;
8958 spec->dsp_state = DSP_DOWNLOAD_INIT;
9006 struct ca0132_spec *spec = codec->spec;
9008 writel(0x00820680, spec->mem_base + 0x01C);
9009 writel(0x00820680, spec->mem_base + 0x01C);
9098 struct ca0132_spec *spec = codec->spec;
9104 writel(0x00000000, spec->mem_base + addr[i]);
9107 switch (ca0132_quirk(spec)) {
9127 writel(tmp[i], spec->mem_base + addr[cur_addr + i]);
9131 switch (ca0132_quirk(spec)) {
9143 writel(data[i], spec->mem_base + addr[cur_addr + i]);
9148 struct ca0132_spec *spec = codec->spec;
9156 if (ca0132_quirk(spec) == QUIRK_AE7) {
9157 writel(0x00000680, spec->mem_base + 0x1c);
9158 writel(0x00880680, spec->mem_base + 0x1c);
9166 if (i == 21 && ca0132_quirk(spec) == QUIRK_AE7) {
9167 writel(0x00800001, spec->mem_base + addr[i]);
9171 writel(data[i], spec->mem_base + addr[i]);
9174 if (ca0132_quirk(spec) == QUIRK_AE5)
9175 writel(0x00880680, spec->mem_base + 0x1c);
9180 struct ca0132_spec *spec = codec->spec;
9182 switch (ca0132_quirk(spec)) {
9213 struct ca0132_spec *spec = codec->spec;
9220 if (ca0132_quirk(spec) == QUIRK_AE7) {
9233 if (ca0132_quirk(spec) == QUIRK_AE7) {
9244 writeb(tmp[i], spec->mem_base + addr[cur_addr]);
9251 writeb(data[i], spec->mem_base + addr[cur_addr]);
9254 writel(data[i], spec->mem_base + addr[cur_addr]);
9256 writel(0x00800001, spec->mem_base + 0x20c);
9258 if (ca0132_quirk(spec) == QUIRK_AE7) {
9268 if (ca0132_quirk(spec) == QUIRK_AE5)
9284 struct ca0132_spec *spec = codec->spec;
9288 switch (ca0132_quirk(spec)) {
9293 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9294 snd_hda_sequence_write(codec, spec->desktop_init_verbs);
9302 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9307 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9308 snd_hda_sequence_write(codec, spec->desktop_init_verbs);
9317 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9318 snd_hda_sequence_write(codec, spec->desktop_init_verbs);
9327 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9328 snd_hda_sequence_write(codec, spec->desktop_init_verbs);
9335 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9336 snd_hda_sequence_write(codec, spec->desktop_init_verbs);
9345 struct ca0132_spec *spec = codec->spec;
9346 struct auto_pin_cfg *cfg = &spec->autocfg;
9360 if (spec->dsp_state == DSP_DOWNLOADED) {
9363 spec->dsp_reload = true;
9364 spec->dsp_state = DSP_DOWNLOAD_INIT;
9366 if (ca0132_quirk(spec) == QUIRK_SBZ)
9372 if (spec->dsp_state != DSP_DOWNLOAD_FAILED)
9373 spec->dsp_state = DSP_DOWNLOAD_INIT;
9374 spec->curr_chip_addx = INVALID_CHIP_ADDRESS;
9376 if (ca0132_use_pci_mmio(spec))
9381 if (ca0132_quirk(spec) == QUIRK_AE5 || ca0132_quirk(spec) == QUIRK_AE7)
9388 snd_hda_sequence_write(codec, spec->base_init_verbs);
9390 if (ca0132_use_alt_functions(spec))
9397 switch (ca0132_quirk(spec)) {
9419 for (i = 0; i < spec->num_outputs; i++)
9420 init_output(codec, spec->out_pins[i], spec->dacs[0]);
9422 init_output(codec, cfg->dig_out_pins[0], spec->dig_out);
9424 for (i = 0; i < spec->num_inputs; i++)
9425 init_input(codec, spec->input_pins[i], spec->adcs[i]);
9427 init_input(codec, cfg->dig_in_pin, spec->dig_in);
9429 if (!ca0132_use_alt_functions(spec)) {
9430 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9437 if (ca0132_quirk(spec) == QUIRK_SBZ)
9440 snd_hda_sequence_write(codec, spec->spec_init_verbs);
9441 if (ca0132_use_alt_functions(spec)) {
9455 if (spec->dsp_reload) {
9456 spec->dsp_reload = false;
9467 struct ca0132_spec *spec = codec->spec;
9468 struct auto_pin_cfg *cfg = &spec->autocfg;
9471 init_output(codec, cfg->dig_out_pins[0], spec->dig_out);
9472 init_input(codec, cfg->dig_in_pin, spec->dig_in);
9474 for (i = 0; i < spec->num_inputs; i++)
9475 init_input(codec, spec->input_pins[i], spec->adcs[i]);
9482 struct ca0132_spec *spec = codec->spec;
9484 cancel_delayed_work_sync(&spec->unsol_hp_work);
9486 switch (ca0132_quirk(spec)) {
9509 snd_hda_sequence_write(codec, spec->base_exit_verbs);
9514 if (spec->mem_base)
9515 pci_iounmap(codec->bus->pci, spec->mem_base);
9517 kfree(spec->spec_init_verbs);
9518 kfree(codec->spec);
9523 struct ca0132_spec *spec = codec->spec;
9527 kfree(spec->spec_init_verbs);
9528 kfree(codec->spec);
9539 struct ca0132_spec *spec = codec->spec;
9541 cancel_delayed_work_sync(&spec->unsol_hp_work);
9567 struct ca0132_spec *spec = codec->spec;
9569 spec->dacs[0] = 0x2;
9570 spec->dacs[1] = 0x3;
9571 spec->dacs[2] = 0x4;
9573 spec->multiout.dac_nids = spec->dacs;
9574 spec->multiout.num_dacs = 3;
9576 if (!ca0132_use_alt_functions(spec))
9577 spec->multiout.max_channels = 2;
9579 spec->multiout.max_channels = 6;
9581 switch (ca0132_quirk(spec)) {
9614 switch (ca0132_quirk(spec)) {
9616 spec->num_outputs = 2;
9617 spec->out_pins[0] = 0x0b; /* speaker out */
9618 spec->out_pins[1] = 0x0f;
9619 spec->shared_out_nid = 0x2;
9620 spec->unsol_tag_hp = 0x0f;
9622 spec->adcs[0] = 0x7; /* digital mic / analog mic1 */
9623 spec->adcs[1] = 0x8; /* analog mic2 */
9624 spec->adcs[2] = 0xa; /* what u hear */
9626 spec->num_inputs = 3;
9627 spec->input_pins[0] = 0x12;
9628 spec->input_pins[1] = 0x11;
9629 spec->input_pins[2] = 0x13;
9630 spec->shared_mic_nid = 0x7;
9631 spec->unsol_tag_amic1 = 0x11;
9635 spec->num_outputs = 2;
9636 spec->out_pins[0] = 0x0B; /* Line out */
9637 spec->out_pins[1] = 0x0F; /* Rear headphone out */
9638 spec->out_pins[2] = 0x10; /* Front Headphone / Center/LFE*/
9639 spec->out_pins[3] = 0x11; /* Rear surround */
9640 spec->shared_out_nid = 0x2;
9641 spec->unsol_tag_hp = spec->out_pins[1];
9642 spec->unsol_tag_front_hp = spec->out_pins[2];
9644 spec->adcs[0] = 0x7; /* Rear Mic / Line-in */
9645 spec->adcs[1] = 0x8; /* Front Mic, but only if no DSP */
9646 spec->adcs[2] = 0xa; /* what u hear */
9648 spec->num_inputs = 2;
9649 spec->input_pins[0] = 0x12; /* Rear Mic / Line-in */
9650 spec->input_pins[1] = 0x13; /* What U Hear */
9651 spec->shared_mic_nid = 0x7;
9652 spec->unsol_tag_amic1 = spec->input_pins[0];
9655 spec->dig_out = 0x05;
9656 spec->multiout.dig_out_nid = spec->dig_out;
9657 spec->dig_in = 0x09;
9660 spec->num_outputs = 2;
9661 spec->out_pins[0] = 0x0B; /* Line out */
9662 spec->out_pins[1] = 0x0F; /* Rear headphone out */
9663 spec->out_pins[2] = 0x10; /* Center/LFE */
9664 spec->out_pins[3] = 0x11; /* Rear surround */
9665 spec->shared_out_nid = 0x2;
9666 spec->unsol_tag_hp = spec->out_pins[1];
9667 spec->unsol_tag_front_hp = spec->out_pins[2];
9669 spec->adcs[0] = 0x7; /* Rear Mic / Line-in */
9670 spec->adcs[1] = 0x8; /* Not connected, no front mic */
9671 spec->adcs[2] = 0xa; /* what u hear */
9673 spec->num_inputs = 2;
9674 spec->input_pins[0] = 0x12; /* Rear Mic / Line-in */
9675 spec->input_pins[1] = 0x13; /* What U Hear */
9676 spec->shared_mic_nid = 0x7;
9677 spec->unsol_tag_amic1 = spec->input_pins[0];
9680 spec->adcs[0] = 0x8; /* ZxR DBPro Aux In */
9682 spec->num_inputs = 1;
9683 spec->input_pins[0] = 0x11; /* RCA Line-in */
9685 spec->dig_out = 0x05;
9686 spec->multiout.dig_out_nid = spec->dig_out;
9688 spec->dig_in = 0x09;
9692 spec->num_outputs = 2;
9693 spec->out_pins[0] = 0x0B; /* Line out */
9694 spec->out_pins[1] = 0x11; /* Rear headphone out */
9695 spec->out_pins[2] = 0x10; /* Front Headphone / Center/LFE*/
9696 spec->out_pins[3] = 0x0F; /* Rear surround */
9697 spec->shared_out_nid = 0x2;
9698 spec->unsol_tag_hp = spec->out_pins[1];
9699 spec->unsol_tag_front_hp = spec->out_pins[2];
9701 spec->adcs[0] = 0x7; /* Rear Mic / Line-in */
9702 spec->adcs[1] = 0x8; /* Front Mic, but only if no DSP */
9703 spec->adcs[2] = 0xa; /* what u hear */
9705 spec->num_inputs = 2;
9706 spec->input_pins[0] = 0x12; /* Rear Mic / Line-in */
9707 spec->input_pins[1] = 0x13; /* What U Hear */
9708 spec->shared_mic_nid = 0x7;
9709 spec->unsol_tag_amic1 = spec->input_pins[0];
9712 spec->dig_out = 0x05;
9713 spec->multiout.dig_out_nid = spec->dig_out;
9716 spec->num_outputs = 2;
9717 spec->out_pins[0] = 0x0B; /* Line out */
9718 spec->out_pins[1] = 0x0F; /* Rear headphone out */
9719 spec->out_pins[2] = 0x10; /* Front Headphone / Center/LFE*/
9720 spec->out_pins[3] = 0x11; /* Rear surround */
9721 spec->shared_out_nid = 0x2;
9722 spec->unsol_tag_hp = spec->out_pins[1];
9723 spec->unsol_tag_front_hp = spec->out_pins[2];
9725 spec->adcs[0] = 0x07; /* Rear Mic / Line-in */
9726 spec->adcs[1] = 0x08; /* Front Mic, but only if no DSP */
9727 spec->adcs[2] = 0x0a; /* what u hear */
9729 spec->num_inputs = 2;
9730 spec->input_pins[0] = 0x12; /* Rear Mic / Line-in */
9731 spec->input_pins[1] = 0x13; /* What U Hear */
9732 spec->shared_mic_nid = 0x7;
9733 spec->unsol_tag_amic1 = spec->input_pins[0];
9736 spec->dig_out = 0x05;
9737 spec->multiout.dig_out_nid = spec->dig_out;
9740 spec->num_outputs = 2;
9741 spec->out_pins[0] = 0x0b; /* speaker out */
9742 spec->out_pins[1] = 0x10; /* headphone out */
9743 spec->shared_out_nid = 0x2;
9744 spec->unsol_tag_hp = spec->out_pins[1];
9746 spec->adcs[0] = 0x7; /* digital mic / analog mic1 */
9747 spec->adcs[1] = 0x8; /* analog mic2 */
9748 spec->adcs[2] = 0xa; /* what u hear */
9750 spec->num_inputs = 3;
9751 spec->input_pins[0] = 0x12;
9752 spec->input_pins[1] = 0x11;
9753 spec->input_pins[2] = 0x13;
9754 spec->shared_mic_nid = 0x7;
9755 spec->unsol_tag_amic1 = spec->input_pins[0];
9758 spec->dig_out = 0x05;
9759 spec->multiout.dig_out_nid = spec->dig_out;
9760 spec->dig_in = 0x09;
9769 struct ca0132_spec *spec = codec->spec;
9771 spec->chip_init_verbs = ca0132_init_verbs0;
9776 if (ca0132_use_pci_mmio(spec))
9777 spec->desktop_init_verbs = ca0132_init_verbs1;
9778 spec->spec_init_verbs = kcalloc(NUM_SPEC_VERBS,
9781 if (!spec->spec_init_verbs)
9785 spec->spec_init_verbs[0].nid = 0x0b;
9786 spec->spec_init_verbs[0].param = 0x78D;
9787 spec->spec_init_verbs[0].verb = 0x00;
9791 spec->spec_init_verbs[2].nid = 0x0b;
9792 spec->spec_init_verbs[2].param = AC_VERB_SET_EAPD_BTLENABLE;
9793 spec->spec_init_verbs[2].verb = 0x02;
9795 spec->spec_init_verbs[3].nid = 0x10;
9796 spec->spec_init_verbs[3].param = 0x78D;
9797 spec->spec_init_verbs[3].verb = 0x02;
9799 spec->spec_init_verbs[4].nid = 0x10;
9800 spec->spec_init_verbs[4].param = AC_VERB_SET_EAPD_BTLENABLE;
9801 spec->spec_init_verbs[4].verb = 0x02;
9804 /* Terminator: spec->spec_init_verbs[NUM_SPEC_VERBS-1] */
9816 struct ca0132_spec *spec = codec->spec;
9820 spec->quirk = QUIRK_ZXR;
9823 spec->quirk = QUIRK_ZXR_DBPRO;
9826 spec->quirk = QUIRK_SBZ;
9833 struct ca0132_spec *spec;
9839 spec = kzalloc(sizeof(*spec), GFP_KERNEL);
9840 if (!spec)
9842 codec->spec = spec;
9843 spec->codec = codec;
9848 spec->quirk = quirk->value;
9850 spec->quirk = QUIRK_NONE;
9851 if (ca0132_quirk(spec) == QUIRK_SBZ)
9854 if (ca0132_quirk(spec) == QUIRK_ZXR_DBPRO)
9863 spec->dsp_state = DSP_DOWNLOAD_INIT;
9864 spec->num_mixers = 1;
9867 switch (ca0132_quirk(spec)) {
9869 spec->mixers[0] = desktop_mixer;
9873 spec->mixers[0] = desktop_mixer;
9879 spec->mixers[0] = desktop_mixer;
9883 spec->mixers[0] = r3di_mixer;
9887 spec->mixers[0] = desktop_mixer;
9891 spec->mixers[0] = desktop_mixer;
9895 spec->mixers[0] = ca0132_mixer;
9900 switch (ca0132_quirk(spec)) {
9906 spec->use_alt_controls = true;
9907 spec->use_alt_functions = true;
9908 spec->use_pci_mmio = true;
9911 spec->use_alt_controls = true;
9912 spec->use_alt_functions = true;
9913 spec->use_pci_mmio = false;
9916 spec->use_alt_controls = false;
9917 spec->use_alt_functions = false;
9918 spec->use_pci_mmio = false;
9923 if (spec->use_pci_mmio) {
9924 spec->mem_base = pci_iomap(codec->bus->pci, 2, 0xC20);
9925 if (spec->mem_base == NULL) {
9927 spec->quirk = QUIRK_NONE;
9932 spec->base_init_verbs = ca0132_base_init_verbs;
9933 spec->base_exit_verbs = ca0132_base_exit_verbs;
9935 INIT_DELAYED_WORK(&spec->unsol_hp_work, ca0132_unsol_hp_delayed);
9945 err = snd_hda_parse_pin_def_config(codec, &spec->autocfg, NULL);