Lines Matching full:spec
1181 #define ca0132_quirk(spec) ((spec)->codec->fixup_id)
1182 #define ca0132_use_pci_mmio(spec) ((spec)->use_pci_mmio)
1183 #define ca0132_use_alt_functions(spec) ((spec)->use_alt_functions)
1184 #define ca0132_use_alt_controls(spec) ((spec)->use_alt_controls)
1186 #define ca0132_quirk(spec) ({ (void)(spec); QUIRK_NONE; })
1187 #define ca0132_use_alt_functions(spec) ({ (void)(spec); false; })
1188 #define ca0132_use_pci_mmio(spec) ({ (void)(spec); false; })
1189 #define ca0132_use_alt_controls(spec) ({ (void)(spec); false; })
1581 struct ca0132_spec *spec = codec->spec;
1584 if (spec->curr_chip_addx == chip_addx)
1597 spec->curr_chip_addx = (res < 0) ? ~0U : chip_addx;
1607 struct ca0132_spec *spec = codec->spec;
1621 spec->curr_chip_addx = (res != -EIO) ?
1622 (spec->curr_chip_addx + 4) : ~0U;
1652 struct ca0132_spec *spec = codec->spec;
1672 spec->curr_chip_addx = (res != -EIO) ?
1673 (spec->curr_chip_addx + 4) : ~0U;
1684 struct ca0132_spec *spec = codec->spec;
1687 guard(mutex)(&spec->chipio_mutex);
1729 struct ca0132_spec *spec = codec->spec;
1732 guard(mutex)(&spec->chipio_mutex);
1747 struct ca0132_spec *spec = codec->spec;
1750 guard(mutex)(&spec->chipio_mutex);
1782 struct ca0132_spec *spec = codec->spec;
1790 guard(mutex)(&spec->chipio_mutex);
1961 struct ca0132_spec *spec = codec->spec;
1963 guard(mutex)(&spec->chipio_mutex);
1987 struct ca0132_spec *spec = codec->spec;
1989 guard(mutex)(&spec->chipio_mutex);
2007 struct ca0132_spec *spec = codec->spec;
2009 guard(mutex)(&spec->chipio_mutex);
2059 struct ca0132_spec *spec = codec->spec;
2064 guard(mutex)(&spec->chipio_mutex);
2232 struct ca0132_spec *spec = codec->spec;
2239 if ((data & 0x00ffffff) == spec->wait_scp_header) {
2240 spec->scp_resp_header = data;
2241 spec->scp_resp_count = data >> 27;
2242 count = spec->wait_num_data;
2243 dspio_read_multiple(codec, spec->scp_resp_data,
2244 &spec->scp_resp_count, count);
2261 struct ca0132_spec *spec = codec->spec;
2288 spec->wait_scp_header = *((unsigned int *)send_buf);
2293 spec->wait_scp_header &= 0xffff0000;
2294 spec->wait_scp_header |= (resp_src_id << 8) | (resp_target_id);
2295 spec->wait_num_data = return_buf_size/sizeof(unsigned int) - 1;
2296 spec->wait_scp = 1;
2303 spec->wait_scp = 0;
2312 } while (spec->wait_scp && time_before(jiffies, timeout));
2314 if (!spec->wait_scp) {
2316 memcpy(&ret_msg->hdr, &spec->scp_resp_header, 4);
2317 memcpy(&ret_msg->data, spec->scp_resp_data,
2318 spec->wait_num_data);
2319 *bytes_returned = (spec->scp_resp_count + 1) * 4;
2324 spec->wait_scp = 0;
3026 struct ca0132_spec *spec = codec->spec;
3038 spec->dsp_stream_id = status;
3089 struct ca0132_spec *spec = dma->codec->spec;
3091 return spec->dsp_stream_id;
3383 struct ca0132_spec *spec = codec->spec;
3427 spec->dsp_stream_id = status;
3499 struct ca0132_spec *spec = codec->spec;
3501 if (!ca0132_use_alt_functions(spec)) {
3633 struct ca0132_spec *spec = codec->spec;
3639 writew(gpio_data, spec->mem_base + 0x320);
3653 struct ca0132_spec *spec = codec->spec;
3656 writel(0x0000007e, spec->mem_base + 0x210);
3657 readl(spec->mem_base + 0x210);
3658 writel(0x0000005a, spec->mem_base + 0x210);
3659 readl(spec->mem_base + 0x210);
3660 readl(spec->mem_base + 0x210);
3662 writel(0x00800005, spec->mem_base + 0x20c);
3663 writel(group, spec->mem_base + 0x804);
3665 writel(0x00800005, spec->mem_base + 0x20c);
3670 writel(write_val, spec->mem_base + 0x204);
3676 readl(spec->mem_base + 0x860);
3677 readl(spec->mem_base + 0x854);
3678 readl(spec->mem_base + 0x840);
3680 writel(0x00800004, spec->mem_base + 0x20c);
3681 writel(0x00000000, spec->mem_base + 0x210);
3682 readl(spec->mem_base + 0x210);
3683 readl(spec->mem_base + 0x210);
3692 struct ca0132_spec *spec = codec->spec;
3695 writel(0x0000007e, spec->mem_base + 0x210);
3696 readl(spec->mem_base + 0x210);
3697 writel(0x0000005a, spec->mem_base + 0x210);
3698 readl(spec->mem_base + 0x210);
3699 readl(spec->mem_base + 0x210);
3701 writel(0x00800003, spec->mem_base + 0x20c);
3702 writel(group, spec->mem_base + 0x804);
3704 writel(0x00800005, spec->mem_base + 0x20c);
3709 writel(write_val, spec->mem_base + 0x204);
3711 readl(spec->mem_base + 0x860);
3712 readl(spec->mem_base + 0x854);
3713 readl(spec->mem_base + 0x840);
3715 writel(0x00800004, spec->mem_base + 0x20c);
3716 writel(0x00000000, spec->mem_base + 0x210);
3717 readl(spec->mem_base + 0x210);
3718 readl(spec->mem_base + 0x210);
3731 struct ca0132_spec *spec = codec->spec;
3733 switch (ca0132_quirk(spec)) {
3754 struct ca0132_spec *spec = codec->spec;
3756 switch (ca0132_quirk(spec)) {
3880 struct ca0132_spec *spec = codec->spec;
3882 snd_hda_codec_setup_stream(codec, spec->dacs[0], stream_tag, 0, format);
3891 struct ca0132_spec *spec = codec->spec;
3893 if (spec->dsp_state == DSP_DOWNLOADING)
3898 if (spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID])
3901 snd_hda_codec_cleanup_stream(codec, spec->dacs[0]);
3910 struct ca0132_spec *spec = codec->spec;
3914 if (spec->dsp_state != DSP_DOWNLOADED)
3918 if (spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]) {
3919 if ((spec->effects_switch[SURROUND - EFFECT_START_NID]) ||
3920 (spec->effects_switch[DIALOG_PLUS - EFFECT_START_NID]))
3925 if (spec->cur_out_type == SPEAKER_OUT)
3938 struct ca0132_spec *spec = codec->spec;
3939 return snd_hda_multi_out_dig_open(codec, &spec->multiout);
3948 struct ca0132_spec *spec = codec->spec;
3949 return snd_hda_multi_out_dig_prepare(codec, &spec->multiout,
3957 struct ca0132_spec *spec = codec->spec;
3958 return snd_hda_multi_out_dig_cleanup(codec, &spec->multiout);
3965 struct ca0132_spec *spec = codec->spec;
3966 return snd_hda_multi_out_dig_close(codec, &spec->multiout);
3988 struct ca0132_spec *spec = codec->spec;
3990 if (spec->dsp_state == DSP_DOWNLOADING)
4001 struct ca0132_spec *spec = codec->spec;
4005 if (spec->dsp_state != DSP_DOWNLOADED)
4008 if (spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID])
4233 struct ca0132_spec *spec = codec->spec;
4238 *valp = spec->cur_ctl_vals[idx];
4259 struct ca0132_spec *spec = codec->spec;
4266 if (spec->cur_ctl_vals[idx] == *valp)
4269 spec->cur_ctl_vals[idx] = *valp;
4294 struct ca0132_spec *spec = codec->spec;
4301 if (spec->cur_ctl_vals[idx] == *valp)
4304 spec->cur_ctl_vals[idx] = *valp;
4329 struct ca0132_spec *spec = codec->spec;
4336 if (spec->cur_ctl_vals[idx] == *valp)
4339 spec->cur_ctl_vals[idx] = *valp;
4410 struct ca0132_spec *spec = codec->spec;
4414 spec->cur_ctl_vals[WEDGE_ANGLE - TUNING_CTL_START_NID] = 10;
4416 spec->cur_ctl_vals[SVM_LEVEL - TUNING_CTL_START_NID] = 74;
4420 spec->cur_ctl_vals[i] = 24;
4432 struct ca0132_spec *spec = codec->spec;
4443 auto_jack = spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID];
4446 jack_present = snd_hda_jack_detect(codec, spec->unsol_tag_hp);
4449 spec->vnode_lswitch[VNID_HP_SEL - VNODE_START_NID];
4452 spec->cur_out_type = HEADPHONE_OUT;
4454 spec->cur_out_type = SPEAKER_OUT;
4456 if (spec->cur_out_type == SPEAKER_OUT) {
4470 snd_hda_codec_write(codec, spec->out_pins[1], 0,
4472 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4474 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4476 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4480 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[1], 0,
4482 snd_hda_set_pin_ctl(codec, spec->out_pins[1],
4485 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[0], 0,
4487 snd_hda_set_pin_ctl(codec, spec->out_pins[0],
4503 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4505 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4507 snd_hda_codec_write(codec, spec->out_pins[1], 0,
4509 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4513 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[0], 0,
4515 snd_hda_set_pin_ctl(codec, spec->out_pins[0],
4518 pin_ctl = snd_hda_codec_read(codec, spec->out_pins[1], 0,
4520 snd_hda_set_pin_ctl(codec, spec->out_pins[1],
4533 struct ca0132_spec *spec = codec->spec;
4537 if (ca0132_quirk(spec) == QUIRK_AE5)
4545 out_cmds->vals[spec->cur_out_type][i]);
4550 struct ca0132_spec *spec = codec->spec;
4551 int quirk = ca0132_quirk(spec);
4556 if (spec->channel_cfg_val == SPEAKER_CHANNELS_4_0
4557 || spec->channel_cfg_val == SPEAKER_CHANNELS_2_0)
4561 tmp = spec->speaker_range_val[0] ? FLOAT_ZERO : FLOAT_ONE;
4568 tmp = spec->speaker_range_val[1] ? FLOAT_ZERO : FLOAT_ONE;
4596 struct ca0132_spec *spec = codec->spec;
4600 if (val && spec->channel_cfg_val != SPEAKER_CHANNELS_4_0 &&
4601 spec->channel_cfg_val != SPEAKER_CHANNELS_2_0)
4612 tmp = float_xbass_xover_lookup[spec->xbass_xover_freq];
4629 struct ca0132_spec *spec = codec->spec;
4630 int quirk = ca0132_quirk(spec);
4646 struct ca0132_spec *spec = codec->spec;
4654 out_info = &quirk_data->out_set_info[spec->cur_out_type];
4697 if (spec->cur_out_type != HEADPHONE_OUT) {
4705 spec->ae5_headphone_gain_val);
4708 spec->zxr_gain_set);
4738 struct ca0132_spec *spec = codec->spec;
4744 hda_nid_t headphone_nid = spec->out_pins[1];
4750 auto_jack = spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID];
4758 jack_present = snd_hda_jack_detect(codec, spec->unsol_tag_hp) ||
4759 snd_hda_jack_detect(codec, spec->unsol_tag_front_hp);
4762 spec->cur_out_type = HEADPHONE_OUT;
4764 spec->cur_out_type = SPEAKER_OUT;
4766 spec->cur_out_type = spec->out_enum_val;
4768 outfx_set = spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID];
4779 switch (spec->cur_out_type) {
4784 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4788 ca0132_set_out_node_pincfg(codec, spec->out_pins[1], 0, 0);
4790 ca0132_set_out_node_pincfg(codec, spec->out_pins[0], 1, 0);
4792 ca0132_set_out_node_pincfg(codec, spec->out_pins[2], 1, 0);
4794 ca0132_set_out_node_pincfg(codec, spec->out_pins[3], 1, 0);
4801 if (!outfx_set && spec->channel_cfg_val == SPEAKER_CHANNELS_2_0)
4804 tmp = speaker_channel_cfgs[spec->channel_cfg_val].val;
4813 snd_hda_codec_write(codec, spec->out_pins[0], 0,
4817 ca0132_set_out_node_pincfg(codec, spec->out_pins[0], 0, 0);
4818 ca0132_set_out_node_pincfg(codec, spec->out_pins[2], 0, 0);
4819 ca0132_set_out_node_pincfg(codec, spec->out_pins[3], 0, 0);
4822 if (snd_hda_jack_detect(codec, spec->unsol_tag_front_hp))
4823 headphone_nid = spec->out_pins[2];
4824 else if (snd_hda_jack_detect(codec, spec->unsol_tag_hp))
4825 headphone_nid = spec->out_pins[1];
4845 spec->effects_switch[X_BASS - EFFECT_START_NID]);
4861 if (spec->cur_out_type == SPEAKER_OUT)
4863 spec->bass_redirection_val);
4875 if (spec->cur_out_type == SPEAKER_OUT) {
4886 struct ca0132_spec *spec = container_of(
4890 if (ca0132_use_alt_functions(spec))
4891 ca0132_alt_select_out(spec->codec);
4893 ca0132_select_out(spec->codec);
4895 jack = snd_hda_jack_tbl_get(spec->codec, spec->unsol_tag_hp);
4898 snd_hda_jack_report_sync(spec->codec);
4914 struct ca0132_spec *spec = codec->spec;
4917 if (spec->dsp_state != DSP_DOWNLOADED)
4921 if (!spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] ||
4926 if (spec->cur_mic_type == DIGITAL_MIC)
4936 if (spec->cur_mic_type == DIGITAL_MIC)
4952 struct ca0132_spec *spec = codec->spec;
4955 if (spec->dsp_state != DSP_DOWNLOADED)
4964 if (!spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] ||
4965 (val == 0) || spec->in_enum_val == REAR_LINE_IN) {
4974 if (ca0132_quirk(spec) == QUIRK_R3DI)
4978 if (spec->in_enum_val == REAR_LINE_IN)
4981 if (ca0132_quirk(spec) == QUIRK_SBZ)
4993 if (ca0132_quirk(spec) == QUIRK_R3DI)
4996 if (spec->effects_switch[VOICE_FOCUS - EFFECT_START_NID])
5023 struct ca0132_spec *spec = codec->spec;
5031 auto_jack = spec->vnode_lswitch[VNID_AMIC1_ASEL - VNODE_START_NID];
5034 jack_present = snd_hda_jack_detect(codec, spec->unsol_tag_amic1);
5037 spec->vnode_lswitch[VNID_AMIC1_SEL - VNODE_START_NID];
5040 spec->cur_mic_type = LINE_MIC_IN;
5042 spec->cur_mic_type = DIGITAL_MIC;
5044 if (spec->cur_mic_type == DIGITAL_MIC) {
5051 spec->effects_switch
5057 ca0132_mic_boost_set(codec, spec->cur_mic_boost);
5073 struct ca0132_spec *spec = codec->spec;
5083 spec->cur_mic_type = spec->in_enum_val;
5085 switch (spec->cur_mic_type) {
5087 switch (ca0132_quirk(spec)) {
5120 if (ca0132_quirk(spec) == QUIRK_R3DI)
5127 switch (ca0132_quirk(spec)) {
5143 ca0132_alt_mic_boost_set(codec, spec->mic_boost_enum_val);
5147 switch (ca0132_quirk(spec)) {
5172 if (ca0132_quirk(spec) == QUIRK_R3DI)
5175 if (ca0132_quirk(spec) == QUIRK_AE7)
5181 switch (ca0132_quirk(spec)) {
5194 switch (ca0132_quirk(spec)) {
5216 if (ca0132_quirk(spec) == QUIRK_R3DI)
5224 switch (ca0132_quirk(spec)) {
5236 ca0132_alt_mic_boost_set(codec, spec->mic_boost_enum_val);
5251 struct ca0132_spec *spec = codec->spec;
5256 nid = spec->shared_out_nid;
5259 nid = spec->shared_mic_nid;
5277 struct ca0132_spec *spec = codec->spec;
5282 tmp = spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] ?
5299 struct ca0132_spec *spec = codec->spec;
5311 if (!spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID])
5313 if (spec->cur_out_type == SPEAKER_OUT && nid == X_BASS) {
5314 channel_cfg = spec->channel_cfg_val;
5324 if (!spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID])
5328 if ((nid == VOICE_FOCUS) && (spec->cur_mic_type != DIGITAL_MIC))
5332 if ((nid == VOICE_FOCUS) && ca0132_use_pci_mmio(spec)
5333 && (spec->cur_mic_type != REAR_LINE_IN)) {
5334 if (spec->effects_switch[CRYSTAL_VOICE -
5337 if (spec->effects_switch[VOICE_FOCUS -
5351 if ((nid == NOISE_REDUCTION) && ca0132_use_pci_mmio(spec)
5352 && (spec->cur_mic_type != REAR_LINE_IN)) {
5353 if (spec->effects_switch[CRYSTAL_VOICE -
5355 if (spec->effects_switch[NOISE_REDUCTION -
5367 if (ca0132_use_alt_functions(spec) &&
5368 spec->in_enum_val == REAR_LINE_IN)
5390 struct ca0132_spec *spec = codec->spec;
5395 spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID]);
5397 if (ca0132_use_alt_functions(spec))
5404 ret |= ca0132_effects_set(codec, nid, spec->effects_switch[i]);
5412 struct ca0132_spec *spec = codec->spec;
5413 unsigned int oldval = snd_hda_codec_read(codec, spec->adcs[0], 0,
5416 snd_hda_codec_write(codec, spec->adcs[0], 0,
5425 struct ca0132_spec *spec = codec->spec;
5428 snd_hda_codec_write(codec, spec->adcs[0], 0,
5438 struct ca0132_spec *spec = codec->spec;
5444 spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID]);
5450 ret |= ca0132_effects_set(codec, nid, spec->effects_switch[i]);
5453 ret |= ca0132_voicefx_set(codec, (spec->voicefx_val ? 1 : 0));
5457 if (ca0132_use_alt_functions(spec))
5467 struct ca0132_spec *spec = codec->spec;
5471 ret = snd_hda_codec_amp_update(codec, spec->input_pins[0], 0,
5474 ret = snd_hda_codec_amp_update(codec, spec->input_pins[0], 0,
5482 struct ca0132_spec *spec = codec->spec;
5485 ret = snd_hda_codec_amp_update(codec, spec->input_pins[0], 0,
5519 struct ca0132_spec *spec = codec->spec;
5524 spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID];
5526 if (ca0132_use_alt_functions(spec))
5536 spec->vnode_lswitch[VNID_AMIC1_ASEL - VNODE_START_NID];
5543 if (ca0132_use_alt_functions(spec))
5633 struct ca0132_spec *spec = codec->spec;
5638 *valp = spec->bass_redirect_xover_freq;
5640 *valp = spec->xbass_xover_freq;
5649 struct ca0132_spec *spec = codec->spec;
5654 *valp = spec->fx_ctl_val[idx];
5692 struct ca0132_spec *spec = codec->spec;
5699 cur_val = &spec->bass_redirect_xover_freq;
5701 cur_val = &spec->xbass_xover_freq;
5722 struct ca0132_spec *spec = codec->spec;
5729 if (spec->fx_ctl_val[idx] == *valp)
5732 spec->fx_ctl_val[idx] = *valp;
5769 struct ca0132_spec *spec = codec->spec;
5771 ucontrol->value.enumerated.item[0] = spec->mic_boost_enum_val;
5779 struct ca0132_spec *spec = codec->spec;
5789 spec->mic_boost_enum_val = sel;
5791 if (spec->in_enum_val != REAR_LINE_IN)
5792 ca0132_alt_mic_boost_set(codec, spec->mic_boost_enum_val);
5823 struct ca0132_spec *spec = codec->spec;
5825 ucontrol->value.enumerated.item[0] = spec->ae5_headphone_gain_val;
5833 struct ca0132_spec *spec = codec->spec;
5843 spec->ae5_headphone_gain_val = sel;
5845 if (spec->out_enum_val == HEADPHONE_OUT)
5846 ae5_headphone_gain_set(codec, spec->ae5_headphone_gain_val);
5876 struct ca0132_spec *spec = codec->spec;
5878 ucontrol->value.enumerated.item[0] = spec->ae5_filter_val;
5886 struct ca0132_spec *spec = codec->spec;
5896 spec->ae5_filter_val = sel;
5926 struct ca0132_spec *spec = codec->spec;
5928 ucontrol->value.enumerated.item[0] = spec->in_enum_val;
5936 struct ca0132_spec *spec = codec->spec;
5944 if (ca0132_quirk(spec) == QUIRK_AE7)
5953 spec->in_enum_val = sel;
5978 struct ca0132_spec *spec = codec->spec;
5980 ucontrol->value.enumerated.item[0] = spec->out_enum_val;
5988 struct ca0132_spec *spec = codec->spec;
5999 spec->out_enum_val = sel;
6001 auto_jack = spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID];
6029 struct ca0132_spec *spec = codec->spec;
6031 ucontrol->value.enumerated.item[0] = spec->channel_cfg_val;
6039 struct ca0132_spec *spec = codec->spec;
6049 spec->channel_cfg_val = sel;
6051 if (spec->out_enum_val == SPEAKER_OUT)
6082 struct ca0132_spec *spec = codec->spec;
6084 ucontrol->value.enumerated.item[0] = spec->smart_volume_setting;
6092 struct ca0132_spec *spec = codec->spec;
6104 spec->smart_volume_setting = sel;
6146 struct ca0132_spec *spec = codec->spec;
6148 ucontrol->value.enumerated.item[0] = spec->eq_preset_val;
6156 struct ca0132_spec *spec = codec->spec;
6179 spec->eq_preset_val = sel;
6203 struct ca0132_spec *spec = codec->spec;
6205 ucontrol->value.enumerated.item[0] = spec->voicefx_val;
6213 struct ca0132_spec *spec = codec->spec;
6236 spec->voicefx_val = sel;
6248 struct ca0132_spec *spec = codec->spec;
6256 *valp = spec->vnode_lswitch[nid - VNODE_START_NID];
6260 *valp = spec->vnode_rswitch[nid - VNODE_START_NID];
6268 *valp = spec->effects_switch[nid - EFFECT_START_NID];
6273 if (nid == spec->input_pins[0]) {
6274 *valp = spec->cur_mic_boost;
6279 *valp = spec->zxr_gain_set;
6284 *valp = spec->speaker_range_val[nid - SPEAKER_FULL_RANGE_FRONT];
6289 *valp = spec->bass_redirection_val;
6300 struct ca0132_spec *spec = codec->spec;
6312 spec->vnode_lswitch[nid - VNODE_START_NID] = *valp;
6316 spec->vnode_rswitch[nid - VNODE_START_NID] = *valp;
6324 spec->effects_switch[nid - EFFECT_START_NID] = *valp;
6330 spec->effects_switch[nid - EFFECT_START_NID] = *valp;
6337 spec->effects_switch[nid - EFFECT_START_NID] = *valp;
6342 if (nid == spec->input_pins[0]) {
6343 spec->cur_mic_boost = *valp;
6344 if (ca0132_use_alt_functions(spec)) {
6345 if (spec->in_enum_val != REAR_LINE_IN)
6349 if (spec->cur_mic_type != DIGITAL_MIC)
6357 spec->zxr_gain_set = *valp;
6358 if (spec->cur_out_type == HEADPHONE_OUT)
6365 spec->speaker_range_val[nid - SPEAKER_FULL_RANGE_FRONT] = *valp;
6366 if (spec->cur_out_type == SPEAKER_OUT)
6373 spec->bass_redirection_val = *valp;
6374 if (spec->cur_out_type == SPEAKER_OUT)
6393 struct ca0132_spec *spec = codec->spec;
6402 lookup_val = spec->vnode_lvol[nid - VNODE_START_NID];
6409 lookup_val = spec->vnode_rvol[nid - VNODE_START_NID];
6425 struct ca0132_spec *spec = codec->spec;
6435 nid = spec->shared_out_nid;
6445 nid = spec->shared_mic_nid;
6463 struct ca0132_spec *spec = codec->spec;
6470 *valp = spec->vnode_lvol[nid - VNODE_START_NID];
6474 *valp = spec->vnode_rvol[nid - VNODE_START_NID];
6484 struct ca0132_spec *spec = codec->spec;
6494 spec->vnode_lvol[nid - VNODE_START_NID] = *valp;
6498 spec->vnode_rvol[nid - VNODE_START_NID] = *valp;
6529 struct ca0132_spec *spec = codec->spec;
6546 spec->vnode_lvol[vnid - VNODE_START_NID] = *valp;
6550 spec->vnode_rvol[vnid - VNODE_START_NID] = *valp;
6564 struct ca0132_spec *spec = codec->spec;
6574 nid = spec->shared_out_nid;
6584 nid = spec->shared_mic_nid;
6637 struct ca0132_spec *spec = codec->spec;
6645 if (ca0132_use_alt_controls(spec) && (nid <= IN_EFFECT_END_NID))
6986 struct ca0132_spec *spec = codec->spec;
6991 for (i = 0; i < spec->num_mixers; i++) {
6992 err = snd_hda_add_new_ctls(codec, spec->mixers[i]);
6997 if (ca0132_use_alt_functions(spec)) {
6998 snd_hda_set_vmaster_tlv(codec, spec->dacs[0], HDA_OUTPUT,
6999 spec->tlv);
7001 spec->tlv, ca0132_alt_follower_pfxs,
7006 true, 0, &spec->vmaster_mute.sw_kctl);
7017 if (ca0132_use_pci_mmio(spec)) {
7034 if (ca0132_use_alt_controls(spec)) {
7088 if (ca0132_use_alt_functions(spec)) {
7114 if (ca0132_quirk(spec) != QUIRK_ZXR) {
7121 switch (ca0132_quirk(spec)) {
7144 err = snd_hda_jack_add_kctls(codec, &spec->autocfg);
7148 if (spec->dig_out) {
7149 err = snd_hda_create_spdif_out_ctls(codec, spec->dig_out,
7150 spec->dig_out);
7153 err = snd_hda_create_spdif_share_sw(codec, &spec->multiout);
7156 /* spec->multiout.share_spdif = 1; */
7159 if (spec->dig_in) {
7160 err = snd_hda_create_spdif_in_ctls(codec, spec->dig_in);
7165 if (ca0132_use_alt_functions(spec))
7173 struct ca0132_spec *spec = codec->spec;
7176 if (spec->dig_out) {
7177 err = snd_hda_create_spdif_out_ctls(codec, spec->dig_out,
7178 spec->dig_out);
7183 if (spec->dig_in) {
7184 err = snd_hda_create_spdif_in_ctls(codec, spec->dig_in);
7237 struct ca0132_spec *spec = codec->spec;
7243 if (ca0132_use_alt_functions(spec)) {
7249 info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->dacs[0];
7251 spec->multiout.max_channels;
7254 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[0];
7257 if (!ca0132_use_alt_functions(spec)) {
7264 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[1];
7272 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[2];
7274 if (!spec->dig_out && !spec->dig_in)
7281 if (spec->dig_out) {
7284 info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->dig_out;
7286 if (spec->dig_in) {
7289 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->dig_in;
7297 struct ca0132_spec *spec = codec->spec;
7305 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[0];
7308 if (!spec->dig_out && !spec->dig_in)
7315 if (spec->dig_out) {
7318 info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->dig_out;
7320 if (spec->dig_in) {
7323 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->dig_in;
7378 struct ca0132_spec *spec = codec->spec;
7392 val = spec->dmic_ctl;
7394 snd_hda_codec_write(codec, spec->input_pins[0], 0,
7397 if (!(spec->dmic_ctl & 0x20))
7404 val = spec->dmic_ctl;
7407 snd_hda_codec_write(codec, spec->input_pins[0], 0,
7410 if (!(spec->dmic_ctl & 0x20))
7422 struct ca0132_spec *spec = codec->spec;
7435 snd_hda_codec_write(codec, spec->input_pins[0], 0,
7445 snd_hda_codec_write(codec, spec->input_pins[0], 0,
7455 if (ca0132_quirk(spec) == QUIRK_ALIENWARE_M17XR4)
7460 spec->dmic_ctl = val;
7461 snd_hda_codec_write(codec, spec->input_pins[0], 0,
7470 struct ca0132_spec *spec = codec->spec;
7472 guard(mutex)(&spec->chipio_mutex);
7480 struct ca0132_spec *spec = codec->spec;
7486 for (i = 0; i < spec->multiout.num_dacs; i++)
7487 refresh_amp_caps(codec, spec->dacs[i], HDA_OUTPUT);
7489 for (i = 0; i < spec->num_outputs; i++)
7490 refresh_amp_caps(codec, spec->out_pins[i], HDA_OUTPUT);
7492 for (i = 0; i < spec->num_inputs; i++) {
7493 refresh_amp_caps(codec, spec->adcs[i], HDA_INPUT);
7494 refresh_amp_caps(codec, spec->input_pins[i], HDA_INPUT);
7558 struct ca0132_spec *spec = codec->spec;
7565 scoped_guard(mutex, &spec->chipio_mutex) {
7583 guard(mutex)(&spec->chipio_mutex);
7710 struct ca0132_spec *spec = codec->spec;
7714 switch (ca0132_quirk(spec)) {
7754 struct ca0132_spec *spec = codec->spec;
7760 if (ca0132_quirk(spec) == QUIRK_R3DI) {
7770 if (ca0132_quirk(spec) == QUIRK_R3DI)
7784 struct ca0132_spec *spec = codec->spec;
7786 guard(mutex)(&spec->chipio_mutex);
7812 struct ca0132_spec *spec = codec->spec;
7814 guard(mutex)(&spec->chipio_mutex);
7821 switch (ca0132_quirk(spec)) {
7843 struct ca0132_spec *spec = codec->spec;
7858 switch (ca0132_quirk(spec)) {
7874 struct ca0132_spec *spec = codec->spec;
7879 writeb(0xff, spec->mem_base + 0x304);
7880 writeb(0xff, spec->mem_base + 0x304);
7881 writeb(0xff, spec->mem_base + 0x304);
7882 writeb(0xff, spec->mem_base + 0x304);
7883 writeb(0x00, spec->mem_base + 0x100);
7884 writeb(0xff, spec->mem_base + 0x304);
7885 writeb(0x00, spec->mem_base + 0x100);
7886 writeb(0xff, spec->mem_base + 0x304);
7887 writeb(0x00, spec->mem_base + 0x100);
7888 writeb(0xff, spec->mem_base + 0x304);
7889 writeb(0x00, spec->mem_base + 0x100);
7890 writeb(0xff, spec->mem_base + 0x304);
7928 struct ca0132_spec *spec = codec->spec;
7930 guard(mutex)(&spec->chipio_mutex);
7952 struct ca0132_spec *spec = codec->spec;
7954 guard(mutex)(&spec->chipio_mutex);
7982 struct ca0132_spec *spec = codec->spec;
7984 guard(mutex)(&spec->chipio_mutex);
8001 struct ca0132_spec *spec = codec->spec;
8003 guard(mutex)(&spec->chipio_mutex);
8036 struct ca0132_spec *spec = codec->spec;
8045 guard(mutex)(&spec->chipio_mutex);
8145 struct ca0132_spec *spec = codec->spec;
8150 if (spec->dsp_state != DSP_DOWNLOADED)
8190 struct ca0132_spec *spec = codec->spec;
8195 if (spec->dsp_state != DSP_DOWNLOADED)
8213 if (ca0132_quirk(spec) == QUIRK_R3DI)
8217 if (ca0132_quirk(spec) == QUIRK_R3D) {
8240 struct ca0132_spec *spec = codec->spec;
8245 if (spec->dsp_state != DSP_DOWNLOADED)
8294 struct ca0132_spec *spec = codec->spec;
8299 if (spec->dsp_state != DSP_DOWNLOADED)
8359 struct ca0132_spec *spec = codec->spec;
8364 if (spec->dsp_state != DSP_DOWNLOADED)
8442 struct ca0132_spec *spec = codec->spec;
8444 if (ca0132_use_alt_functions(spec)) {
8475 struct ca0132_spec *spec = codec->spec;
8477 if (ca0132_use_alt_functions(spec)) {
8506 struct ca0132_spec *spec = codec->spec;
8514 switch (ca0132_quirk(spec)) {
8561 struct ca0132_spec *spec = codec->spec;
8567 if (spec->dsp_state == DSP_DOWNLOAD_FAILED)
8571 if (spec->dsp_state != DSP_DOWNLOADED) {
8572 spec->dsp_state = DSP_DOWNLOADING;
8575 spec->dsp_state = DSP_DOWNLOAD_FAILED;
8577 spec->dsp_state = DSP_DOWNLOADED;
8581 if (spec->dsp_state == DSP_DOWNLOADED && !ca0132_use_alt_functions(spec))
8588 struct ca0132_spec *spec = codec->spec;
8592 if (spec->wait_scp) {
8594 spec->wait_scp = 0;
8602 struct ca0132_spec *spec = codec->spec;
8611 schedule_delayed_work(&spec->unsol_hp_work, msecs_to_jiffies(500));
8616 struct ca0132_spec *spec = codec->spec;
8618 if (ca0132_use_alt_functions(spec))
8626 struct ca0132_spec *spec = codec->spec;
8627 snd_hda_jack_detect_enable_callback(codec, spec->unsol_tag_hp, hp_callback);
8628 snd_hda_jack_detect_enable_callback(codec, spec->unsol_tag_amic1,
8633 if (ca0132_use_alt_functions(spec))
8635 spec->unsol_tag_front_hp, hp_callback);
8715 struct ca0132_spec *spec = codec->spec;
8720 mutex_init(&spec->chipio_mutex);
8728 if (ca0132_use_alt_functions(spec)) {
8738 spec->cur_out_type = SPEAKER_OUT;
8739 if (!ca0132_use_alt_functions(spec))
8740 spec->cur_mic_type = DIGITAL_MIC;
8742 spec->cur_mic_type = REAR_MIC;
8744 spec->cur_mic_boost = 0;
8747 spec->vnode_lvol[i] = 0x5a;
8748 spec->vnode_rvol[i] = 0x5a;
8749 spec->vnode_lswitch[i] = 0;
8750 spec->vnode_rswitch[i] = 0;
8759 spec->effects_switch[i] = on ? 1 : 0;
8765 if (ca0132_use_alt_controls(spec)) {
8767 spec->speaker_range_val[0] = 1;
8768 spec->speaker_range_val[1] = 1;
8770 spec->xbass_xover_freq = 8;
8772 spec->fx_ctl_val[i] = effect_slider_defaults[i];
8774 spec->bass_redirect_xover_freq = 8;
8777 spec->voicefx_val = 0;
8778 spec->effects_switch[PLAY_ENHANCEMENT - EFFECT_START_NID] = 1;
8779 spec->effects_switch[CRYSTAL_VOICE - EFFECT_START_NID] = 0;
8784 * to make sure that spec->in_enum_val is set properly.
8786 if (ca0132_quirk(spec) == QUIRK_ZXR)
8787 spec->in_enum_val = REAR_MIC;
8808 struct ca0132_spec *spec = codec->spec;
8812 writeb(0x0, spec->mem_base + 0x100);
8814 writeb(0xb3, spec->mem_base + 0x304);
9014 struct ca0132_spec *spec = codec->spec;
9021 if (spec->startup_check_entered)
9024 spec->startup_check_entered = true;
9046 spec->dsp_state = DSP_DOWNLOAD_INIT;
9094 struct ca0132_spec *spec = codec->spec;
9096 writel(0x00820680, spec->mem_base + 0x01C);
9097 writel(0x00820680, spec->mem_base + 0x01C);
9207 struct ca0132_spec *spec = codec->spec;
9213 writel(0x00000000, spec->mem_base + addr[i]);
9216 switch (ca0132_quirk(spec)) {
9236 writel(tmp[i], spec->mem_base + addr[cur_addr + i]);
9240 switch (ca0132_quirk(spec)) {
9252 writel(data[i], spec->mem_base + addr[cur_addr + i]);
9257 struct ca0132_spec *spec = codec->spec;
9265 if (ca0132_quirk(spec) == QUIRK_AE7) {
9266 writel(0x00000680, spec->mem_base + 0x1c);
9267 writel(0x00880680, spec->mem_base + 0x1c);
9275 if (i == 21 && ca0132_quirk(spec) == QUIRK_AE7) {
9276 writel(0x00800001, spec->mem_base + addr[i]);
9280 writel(data[i], spec->mem_base + addr[i]);
9283 if (ca0132_quirk(spec) == QUIRK_AE5)
9284 writel(0x00880680, spec->mem_base + 0x1c);
9289 struct ca0132_spec *spec = codec->spec;
9291 switch (ca0132_quirk(spec)) {
9322 struct ca0132_spec *spec = codec->spec;
9329 if (ca0132_quirk(spec) == QUIRK_AE7)
9335 if (ca0132_quirk(spec) == QUIRK_AE7) {
9346 writeb(tmp[i], spec->mem_base + addr[cur_addr]);
9353 writeb(data[i], spec->mem_base + addr[cur_addr]);
9356 writel(data[i], spec->mem_base + addr[cur_addr]);
9358 writel(0x00800001, spec->mem_base + 0x20c);
9360 if (ca0132_quirk(spec) == QUIRK_AE7) {
9370 if (ca0132_quirk(spec) == QUIRK_AE5)
9381 struct ca0132_spec *spec = codec->spec;
9385 switch (ca0132_quirk(spec)) {
9390 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9391 snd_hda_sequence_write(codec, spec->desktop_init_verbs);
9399 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9404 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9405 snd_hda_sequence_write(codec, spec->desktop_init_verbs);
9411 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9412 snd_hda_sequence_write(codec, spec->desktop_init_verbs);
9418 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9419 snd_hda_sequence_write(codec, spec->desktop_init_verbs);
9427 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9428 snd_hda_sequence_write(codec, spec->desktop_init_verbs);
9438 struct ca0132_spec *spec = codec->spec;
9439 struct auto_pin_cfg *cfg = &spec->autocfg;
9453 if (spec->dsp_state == DSP_DOWNLOADED) {
9456 spec->dsp_reload = true;
9457 spec->dsp_state = DSP_DOWNLOAD_INIT;
9459 if (ca0132_quirk(spec) == QUIRK_SBZ)
9465 if (spec->dsp_state != DSP_DOWNLOAD_FAILED)
9466 spec->dsp_state = DSP_DOWNLOAD_INIT;
9467 spec->curr_chip_addx = INVALID_CHIP_ADDRESS;
9469 if (ca0132_use_pci_mmio(spec))
9474 if (ca0132_quirk(spec) == QUIRK_AE5 || ca0132_quirk(spec) == QUIRK_AE7)
9480 snd_hda_sequence_write(codec, spec->base_init_verbs);
9482 if (ca0132_use_alt_functions(spec))
9489 switch (ca0132_quirk(spec)) {
9511 for (i = 0; i < spec->num_outputs; i++)
9512 init_output(codec, spec->out_pins[i], spec->dacs[0]);
9514 init_output(codec, cfg->dig_out_pins[0], spec->dig_out);
9516 for (i = 0; i < spec->num_inputs; i++)
9517 init_input(codec, spec->input_pins[i], spec->adcs[i]);
9519 init_input(codec, cfg->dig_in_pin, spec->dig_in);
9521 if (!ca0132_use_alt_functions(spec)) {
9522 snd_hda_sequence_write(codec, spec->chip_init_verbs);
9529 if (ca0132_quirk(spec) == QUIRK_SBZ)
9532 snd_hda_sequence_write(codec, spec->spec_init_verbs);
9533 if (ca0132_use_alt_functions(spec)) {
9547 if (spec->dsp_reload) {
9548 spec->dsp_reload = false;
9557 struct ca0132_spec *spec = codec->spec;
9558 struct auto_pin_cfg *cfg = &spec->autocfg;
9561 init_output(codec, cfg->dig_out_pins[0], spec->dig_out);
9562 init_input(codec, cfg->dig_in_pin, spec->dig_in);
9564 for (i = 0; i < spec->num_inputs; i++)
9565 init_input(codec, spec->input_pins[i], spec->adcs[i]);
9572 struct ca0132_spec *spec = codec->spec;
9574 cancel_delayed_work_sync(&spec->unsol_hp_work);
9576 switch (ca0132_quirk(spec)) {
9599 snd_hda_sequence_write(codec, spec->base_exit_verbs);
9604 if (spec->mem_base)
9605 pci_iounmap(codec->bus->pci, spec->mem_base);
9607 kfree(spec->spec_init_verbs);
9608 kfree(codec->spec);
9613 struct ca0132_spec *spec = codec->spec;
9617 kfree(spec->spec_init_verbs);
9618 kfree(codec->spec);
9623 struct ca0132_spec *spec = codec->spec;
9625 spec->dacs[0] = 0x2;
9626 spec->dacs[1] = 0x3;
9627 spec->dacs[2] = 0x4;
9629 spec->multiout.dac_nids = spec->dacs;
9630 spec->multiout.num_dacs = 3;
9632 if (!ca0132_use_alt_functions(spec))
9633 spec->multiout.max_channels = 2;
9635 spec->multiout.max_channels = 6;
9637 switch (ca0132_quirk(spec)) {
9670 switch (ca0132_quirk(spec)) {
9672 spec->num_outputs = 2;
9673 spec->out_pins[0] = 0x0b; /* speaker out */
9674 spec->out_pins[1] = 0x0f;
9675 spec->shared_out_nid = 0x2;
9676 spec->unsol_tag_hp = 0x0f;
9678 spec->adcs[0] = 0x7; /* digital mic / analog mic1 */
9679 spec->adcs[1] = 0x8; /* analog mic2 */
9680 spec->adcs[2] = 0xa; /* what u hear */
9682 spec->num_inputs = 3;
9683 spec->input_pins[0] = 0x12;
9684 spec->input_pins[1] = 0x11;
9685 spec->input_pins[2] = 0x13;
9686 spec->shared_mic_nid = 0x7;
9687 spec->unsol_tag_amic1 = 0x11;
9691 spec->num_outputs = 2;
9692 spec->out_pins[0] = 0x0B; /* Line out */
9693 spec->out_pins[1] = 0x0F; /* Rear headphone out */
9694 spec->out_pins[2] = 0x10; /* Front Headphone / Center/LFE*/
9695 spec->out_pins[3] = 0x11; /* Rear surround */
9696 spec->shared_out_nid = 0x2;
9697 spec->unsol_tag_hp = spec->out_pins[1];
9698 spec->unsol_tag_front_hp = spec->out_pins[2];
9700 spec->adcs[0] = 0x7; /* Rear Mic / Line-in */
9701 spec->adcs[1] = 0x8; /* Front Mic, but only if no DSP */
9702 spec->adcs[2] = 0xa; /* what u hear */
9704 spec->num_inputs = 2;
9705 spec->input_pins[0] = 0x12; /* Rear Mic / Line-in */
9706 spec->input_pins[1] = 0x13; /* What U Hear */
9707 spec->shared_mic_nid = 0x7;
9708 spec->unsol_tag_amic1 = spec->input_pins[0];
9711 spec->dig_out = 0x05;
9712 spec->multiout.dig_out_nid = spec->dig_out;
9713 spec->dig_in = 0x09;
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; /* 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] = 0x7; /* Rear Mic / Line-in */
9726 spec->adcs[1] = 0x8; /* Not connected, no front mic */
9727 spec->adcs[2] = 0xa; /* 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->adcs[0] = 0x8; /* ZxR DBPro Aux In */
9738 spec->num_inputs = 1;
9739 spec->input_pins[0] = 0x11; /* RCA Line-in */
9741 spec->dig_out = 0x05;
9742 spec->multiout.dig_out_nid = spec->dig_out;
9744 spec->dig_in = 0x09;
9748 spec->num_outputs = 2;
9749 spec->out_pins[0] = 0x0B; /* Line out */
9750 spec->out_pins[1] = 0x11; /* Rear headphone out */
9751 spec->out_pins[2] = 0x10; /* Front Headphone / Center/LFE*/
9752 spec->out_pins[3] = 0x0F; /* Rear surround */
9753 spec->shared_out_nid = 0x2;
9754 spec->unsol_tag_hp = spec->out_pins[1];
9755 spec->unsol_tag_front_hp = spec->out_pins[2];
9757 spec->adcs[0] = 0x7; /* Rear Mic / Line-in */
9758 spec->adcs[1] = 0x8; /* Front Mic, but only if no DSP */
9759 spec->adcs[2] = 0xa; /* what u hear */
9761 spec->num_inputs = 2;
9762 spec->input_pins[0] = 0x12; /* Rear Mic / Line-in */
9763 spec->input_pins[1] = 0x13; /* What U Hear */
9764 spec->shared_mic_nid = 0x7;
9765 spec->unsol_tag_amic1 = spec->input_pins[0];
9768 spec->dig_out = 0x05;
9769 spec->multiout.dig_out_nid = spec->dig_out;
9772 spec->num_outputs = 2;
9773 spec->out_pins[0] = 0x0B; /* Line out */
9774 spec->out_pins[1] = 0x0F; /* Rear headphone out */
9775 spec->out_pins[2] = 0x10; /* Front Headphone / Center/LFE*/
9776 spec->out_pins[3] = 0x11; /* Rear surround */
9777 spec->shared_out_nid = 0x2;
9778 spec->unsol_tag_hp = spec->out_pins[1];
9779 spec->unsol_tag_front_hp = spec->out_pins[2];
9781 spec->adcs[0] = 0x07; /* Rear Mic / Line-in */
9782 spec->adcs[1] = 0x08; /* Front Mic, but only if no DSP */
9783 spec->adcs[2] = 0x0a; /* what u hear */
9785 spec->num_inputs = 2;
9786 spec->input_pins[0] = 0x12; /* Rear Mic / Line-in */
9787 spec->input_pins[1] = 0x13; /* What U Hear */
9788 spec->shared_mic_nid = 0x7;
9789 spec->unsol_tag_amic1 = spec->input_pins[0];
9792 spec->dig_out = 0x05;
9793 spec->multiout.dig_out_nid = spec->dig_out;
9796 spec->num_outputs = 2;
9797 spec->out_pins[0] = 0x0b; /* speaker out */
9798 spec->out_pins[1] = 0x10; /* headphone out */
9799 spec->shared_out_nid = 0x2;
9800 spec->unsol_tag_hp = spec->out_pins[1];
9802 spec->adcs[0] = 0x7; /* digital mic / analog mic1 */
9803 spec->adcs[1] = 0x8; /* analog mic2 */
9804 spec->adcs[2] = 0xa; /* what u hear */
9806 spec->num_inputs = 3;
9807 spec->input_pins[0] = 0x12;
9808 spec->input_pins[1] = 0x11;
9809 spec->input_pins[2] = 0x13;
9810 spec->shared_mic_nid = 0x7;
9811 spec->unsol_tag_amic1 = spec->input_pins[0];
9814 spec->dig_out = 0x05;
9815 spec->multiout.dig_out_nid = spec->dig_out;
9816 spec->dig_in = 0x09;
9825 struct ca0132_spec *spec = codec->spec;
9827 spec->chip_init_verbs = ca0132_init_verbs0;
9832 if (ca0132_use_pci_mmio(spec))
9833 spec->desktop_init_verbs = ca0132_init_verbs1;
9834 spec->spec_init_verbs = kcalloc(NUM_SPEC_VERBS,
9837 if (!spec->spec_init_verbs)
9841 spec->spec_init_verbs[0].nid = 0x0b;
9842 spec->spec_init_verbs[0].param = 0x78D;
9843 spec->spec_init_verbs[0].verb = 0x00;
9847 spec->spec_init_verbs[2].nid = 0x0b;
9848 spec->spec_init_verbs[2].param = AC_VERB_SET_EAPD_BTLENABLE;
9849 spec->spec_init_verbs[2].verb = 0x02;
9851 spec->spec_init_verbs[3].nid = 0x10;
9852 spec->spec_init_verbs[3].param = 0x78D;
9853 spec->spec_init_verbs[3].verb = 0x02;
9855 spec->spec_init_verbs[4].nid = 0x10;
9856 spec->spec_init_verbs[4].param = AC_VERB_SET_EAPD_BTLENABLE;
9857 spec->spec_init_verbs[4].verb = 0x02;
9860 /* Terminator: spec->spec_init_verbs[NUM_SPEC_VERBS-1] */
9887 struct ca0132_spec *spec = codec->spec;
9889 if (ca0132_quirk(spec) == QUIRK_ZXR_DBPRO)
9898 struct ca0132_spec *spec;
9903 spec = kzalloc(sizeof(*spec), GFP_KERNEL);
9904 if (!spec)
9906 codec->spec = spec;
9907 spec->codec = codec;
9911 if (ca0132_quirk(spec) == QUIRK_SBZ)
9918 spec->dsp_state = DSP_DOWNLOAD_INIT;
9919 spec->num_mixers = 1;
9922 switch (ca0132_quirk(spec)) {
9924 spec->mixers[0] = desktop_mixer;
9928 spec->mixers[0] = desktop_mixer;
9934 spec->mixers[0] = desktop_mixer;
9938 spec->mixers[0] = r3di_mixer;
9942 spec->mixers[0] = desktop_mixer;
9946 spec->mixers[0] = desktop_mixer;
9950 spec->mixers[0] = ca0132_mixer;
9955 switch (ca0132_quirk(spec)) {
9961 spec->use_alt_controls = true;
9962 spec->use_alt_functions = true;
9963 spec->use_pci_mmio = true;
9966 spec->use_alt_controls = true;
9967 spec->use_alt_functions = true;
9968 spec->use_pci_mmio = false;
9971 spec->use_alt_controls = false;
9972 spec->use_alt_functions = false;
9973 spec->use_pci_mmio = false;
9978 if (spec->use_pci_mmio) {
9979 spec->mem_base = pci_iomap(codec->bus->pci, 2, 0xC20);
9980 if (spec->mem_base == NULL) {
9987 spec->base_init_verbs = ca0132_base_init_verbs;
9988 spec->base_exit_verbs = ca0132_base_exit_verbs;
9990 INIT_DELAYED_WORK(&spec->unsol_hp_work, ca0132_unsol_hp_delayed);
10000 err = snd_hda_parse_pin_def_config(codec, &spec->autocfg, NULL);
10015 struct ca0132_spec *spec = codec->spec;
10017 if (ca0132_quirk(spec) == QUIRK_ZXR_DBPRO)
10025 struct ca0132_spec *spec = codec->spec;
10027 if (ca0132_quirk(spec) == QUIRK_ZXR_DBPRO)
10035 struct ca0132_spec *spec = codec->spec;
10037 if (ca0132_quirk(spec) == QUIRK_ZXR_DBPRO)
10045 struct ca0132_spec *spec = codec->spec;
10047 cancel_delayed_work_sync(&spec->unsol_hp_work);