aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Karcher <kernel@mkarcher.dialup.fu-berlin.de>2012-04-06 09:34:15 -0400
committerTakashi Iwai <tiwai@suse.de>2012-04-07 06:25:02 -0400
commit4f32456e5ed4852abc9b555c887dfb3481ea9cab (patch)
tree3aecee12c3503913afbe14e863bf0b0476836a2d
parent92fd918c2416404c2ec09829b25243b9a785dc9b (diff)
ALSA: hda - Fix proc output for ADC amp values of CX20549
The CX20549 has only one single input amp on it's input converter widget. Fix printing of values in the codec file in /proc/asound. Signed-off-by: Michael Karcher <kernel@mkarcher.dialup.fu-berlin.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/pci/hda/hda_codec.h3
-rw-r--r--sound/pci/hda/hda_proc.c13
-rw-r--r--sound/pci/hda/patch_conexant.c8
3 files changed, 17 insertions, 7 deletions
diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h
index 9a9f372e1be4..56b4f74c0b13 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 254ab5204603..e59e2f059b6e 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 e6eafb18c8f5..368617abab4c 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);