--- /dev/null
+From: Takashi Iwai <tiwai@suse.de>
+Subject: ALSA: hda - Misc fixes on proc output
+Patch-mainline: 2.6.28-rc1
+References:
+
+Misc fixes and additions for codec#* proc output.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+
+---
+---
+ sound/pci/hda/hda_proc.c | 21 ++++++++++++++++++---
+ 1 file changed, 18 insertions(+), 3 deletions(-)
+
+--- a/sound/pci/hda/hda_proc.c
++++ b/sound/pci/hda/hda_proc.c
+@@ -229,6 +229,13 @@ static void print_pin_caps(struct snd_in
+ snd_iprintf(buffer, " Detect");
+ if (caps & AC_PINCAP_BALANCE)
+ snd_iprintf(buffer, " Balanced");
++ if (caps & AC_PINCAP_HDMI) {
++ /* Realtek uses this bit as a different meaning */
++ if ((codec->vendor_id >> 16) == 0x10ec)
++ snd_iprintf(buffer, " R/L");
++ else
++ snd_iprintf(buffer, " HDMI");
++ }
+ if (caps & AC_PINCAP_LR_SWAP)
+ snd_iprintf(buffer, " R/L");
+ if (caps & AC_PINCAP_TRIG_REQ)
+@@ -552,9 +559,15 @@ static void print_codec_info(struct snd_
+
+ snd_iprintf(buffer, "Node 0x%02x [%s] wcaps 0x%x:", nid,
+ get_wid_type_name(wid_type), wid_caps);
+- if (wid_caps & AC_WCAP_STEREO)
+- snd_iprintf(buffer, " Stereo");
+- else
++ if (wid_caps & AC_WCAP_STEREO) {
++ unsigned int chans;
++ chans = (wid_caps & AC_WCAP_CHAN_CNT_EXT) >> 13;
++ chans = ((chans << 1) | 1) + 1;
++ if (chans == 2)
++ snd_iprintf(buffer, " Stereo");
++ else
++ snd_iprintf(buffer, " %d-Channels", chans);
++ } else
+ snd_iprintf(buffer, " Mono");
+ if (wid_caps & AC_WCAP_DIGITAL)
+ snd_iprintf(buffer, " Digital");
+@@ -566,6 +579,8 @@ static void print_codec_info(struct snd_
+ snd_iprintf(buffer, " Stripe");
+ if (wid_caps & AC_WCAP_LR_SWAP)
+ snd_iprintf(buffer, " R/L");
++ if (wid_caps & AC_WCAP_CP_CAPS)
++ snd_iprintf(buffer, " CP");
+ snd_iprintf(buffer, "\n");
+
+ /* volume knob is a special widget that always have connection