diff options
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/hda/hda_codec.h | 3 | ||||
-rw-r--r-- | sound/pci/hda/hda_proc.c | 13 | ||||
-rw-r--r-- | sound/pci/hda/patch_conexant.c | 8 |
3 files changed, 17 insertions, 7 deletions
diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h index 9a9f372e1be..56b4f74c0b1 100644 --- a/sound/pci/hda/hda_codec.h +++ b/sound/pci/hda/hda_codec.h | |||
@@ -851,6 +851,9 @@ struct hda_codec { | |||
851 | unsigned int pin_amp_workaround:1; /* pin out-amp takes index | 851 | unsigned int pin_amp_workaround:1; /* pin out-amp takes index |
852 | * (e.g. Conexant codecs) | 852 | * (e.g. Conexant codecs) |
853 | */ | 853 | */ |
854 | unsigned int single_adc_amp:1; /* adc in-amp takes no index | ||
855 | * (e.g. CX20549 codec) | ||
856 | */ | ||
854 | unsigned int no_sticky_stream:1; /* no sticky-PCM stream assignment */ | 857 | unsigned int no_sticky_stream:1; /* no sticky-PCM stream assignment */ |
855 | unsigned int pins_shutup:1; /* pins are shut up */ | 858 | unsigned int pins_shutup:1; /* pins are shut up */ |
856 | unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */ | 859 | unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */ |
diff --git a/sound/pci/hda/hda_proc.c b/sound/pci/hda/hda_proc.c index 254ab520460..e59e2f059b6 100644 --- a/sound/pci/hda/hda_proc.c +++ b/sound/pci/hda/hda_proc.c | |||
@@ -651,9 +651,16 @@ static void print_codec_info(struct snd_info_entry *entry, | |||
651 | snd_iprintf(buffer, " Amp-In caps: "); | 651 | snd_iprintf(buffer, " Amp-In caps: "); |
652 | print_amp_caps(buffer, codec, nid, HDA_INPUT); | 652 | print_amp_caps(buffer, codec, nid, HDA_INPUT); |
653 | snd_iprintf(buffer, " Amp-In vals: "); | 653 | snd_iprintf(buffer, " Amp-In vals: "); |
654 | print_amp_vals(buffer, codec, nid, HDA_INPUT, | 654 | if (wid_type == AC_WID_PIN || |
655 | wid_caps & AC_WCAP_STEREO, | 655 | (codec->single_adc_amp && |
656 | wid_type == AC_WID_PIN ? 1 : conn_len); | 656 | wid_type == AC_WID_AUD_IN)) |
657 | print_amp_vals(buffer, codec, nid, HDA_INPUT, | ||
658 | wid_caps & AC_WCAP_STEREO, | ||
659 | 1); | ||
660 | else | ||
661 | print_amp_vals(buffer, codec, nid, HDA_INPUT, | ||
662 | wid_caps & AC_WCAP_STEREO, | ||
663 | conn_len); | ||
657 | } | 664 | } |
658 | if (wid_caps & AC_WCAP_OUT_AMP) { | 665 | if (wid_caps & AC_WCAP_OUT_AMP) { |
659 | snd_iprintf(buffer, " Amp-Out caps: "); | 666 | snd_iprintf(buffer, " Amp-Out caps: "); |
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index e6eafb18c8f..368617abab4 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c | |||
@@ -141,7 +141,6 @@ struct conexant_spec { | |||
141 | unsigned int hp_laptop:1; | 141 | unsigned int hp_laptop:1; |
142 | unsigned int asus:1; | 142 | unsigned int asus:1; |
143 | unsigned int pin_eapd_ctrls:1; | 143 | unsigned int pin_eapd_ctrls:1; |
144 | unsigned int single_adc_amp:1; | ||
145 | 144 | ||
146 | unsigned int adc_switching:1; | 145 | unsigned int adc_switching:1; |
147 | 146 | ||
@@ -1111,6 +1110,7 @@ static int patch_cxt5045(struct hda_codec *codec) | |||
1111 | return -ENOMEM; | 1110 | return -ENOMEM; |
1112 | codec->spec = spec; | 1111 | codec->spec = spec; |
1113 | codec->pin_amp_workaround = 1; | 1112 | codec->pin_amp_workaround = 1; |
1113 | codec->single_adc_amp = 1; | ||
1114 | 1114 | ||
1115 | spec->multiout.max_channels = 2; | 1115 | spec->multiout.max_channels = 2; |
1116 | spec->multiout.num_dacs = ARRAY_SIZE(cxt5045_dac_nids); | 1116 | spec->multiout.num_dacs = ARRAY_SIZE(cxt5045_dac_nids); |
@@ -4220,7 +4220,7 @@ static int cx_auto_add_capture_volume(struct hda_codec *codec, hda_nid_t nid, | |||
4220 | int idx = get_input_connection(codec, adc_nid, nid); | 4220 | int idx = get_input_connection(codec, adc_nid, nid); |
4221 | if (idx < 0) | 4221 | if (idx < 0) |
4222 | continue; | 4222 | continue; |
4223 | if (spec->single_adc_amp) | 4223 | if (codec->single_adc_amp) |
4224 | idx = 0; | 4224 | idx = 0; |
4225 | return cx_auto_add_volume_idx(codec, label, pfx, | 4225 | return cx_auto_add_volume_idx(codec, label, pfx, |
4226 | cidx, adc_nid, HDA_INPUT, idx); | 4226 | cidx, adc_nid, HDA_INPUT, idx); |
@@ -4275,7 +4275,7 @@ static int cx_auto_build_input_controls(struct hda_codec *codec) | |||
4275 | if (cidx < 0) | 4275 | if (cidx < 0) |
4276 | continue; | 4276 | continue; |
4277 | input_conn[i] = spec->imux_info[i].adc; | 4277 | input_conn[i] = spec->imux_info[i].adc; |
4278 | if (!spec->single_adc_amp) | 4278 | if (!codec->single_adc_amp) |
4279 | input_conn[i] |= cidx << 8; | 4279 | input_conn[i] |= cidx << 8; |
4280 | if (i > 0 && input_conn[i] != input_conn[0]) | 4280 | if (i > 0 && input_conn[i] != input_conn[0]) |
4281 | multi_connection = 1; | 4281 | multi_connection = 1; |
@@ -4470,7 +4470,7 @@ static int patch_conexant_auto(struct hda_codec *codec) | |||
4470 | 4470 | ||
4471 | switch (codec->vendor_id) { | 4471 | switch (codec->vendor_id) { |
4472 | case 0x14f15045: | 4472 | case 0x14f15045: |
4473 | spec->single_adc_amp = 1; | 4473 | codec->single_adc_amp = 1; |
4474 | break; | 4474 | break; |
4475 | case 0x14f15051: | 4475 | case 0x14f15051: |
4476 | add_cx5051_fake_mutes(codec); | 4476 | add_cx5051_fake_mutes(codec); |