ALSA: intelhdmi - accept DisplayPort pin
authorWu Fengguang <fengguang.wu@intel.com>
Fri, 11 Dec 2009 04:28:34 +0000 (12:28 +0800)
committerTakashi Iwai <tiwai@suse.de>
Fri, 11 Dec 2009 06:56:04 +0000 (07:56 +0100)
HDA036 spec states:
  DP (Display Port) indicates whether the Pin Complex Widget supports
  connection to a Display Port sink.  Supported if set to 1. Note that
  it is possible for the pin widget to support more than one digital
  display connection type, e.g. HDMI and DP bit are both set to 1.

Also export the DP pin cap in procfs.

Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_codec.h
sound/pci/hda/hda_proc.c
sound/pci/hda/patch_intelhdmi.c

index f9a084a1378efabee74b88480490d5e30c4e64f6..9000d52fcccaa76d39ac33fbaae0ff6e32786e52 100644 (file)
@@ -255,6 +255,9 @@ enum {
  *       in HD-audio specification
  */
 #define AC_PINCAP_HDMI                 (1<<7)  /* HDMI pin */
+#define AC_PINCAP_DP                   (1<<24) /* DisplayPort pin, can
+                                                * coexist with AC_PINCAP_HDMI
+                                                */
 #define AC_PINCAP_VREF                 (0x37<<8)
 #define AC_PINCAP_VREF_SHIFT           8
 #define AC_PINCAP_EAPD                 (1<<16) /* EAPD capable */
index 8d381c891001eade2aa49e547c880a23885b7329..c9afc04adac8d126c302b7c11bcdc183b355766a 100644 (file)
@@ -246,6 +246,8 @@ static void print_pin_caps(struct snd_info_buffer *buffer,
                        snd_iprintf(buffer, " HDMI");
                }
        }
+       if (caps & AC_PINCAP_DP)
+               snd_iprintf(buffer, " DP");
        if (caps & AC_PINCAP_TRIG_REQ)
                snd_iprintf(buffer, " Trigger");
        if (caps & AC_PINCAP_IMP_SENSE)
index 928df59be5d8737e27f78a2e9c56f4afa3cde1b6..742f15eb333113fe7f4131c6d31c8043df658487 100644 (file)
@@ -344,7 +344,7 @@ static int intel_hdmi_parse_codec(struct hda_codec *codec)
                        break;
                case AC_WID_PIN:
                        caps = snd_hda_param_read(codec, nid, AC_PAR_PIN_CAP);
-                       if (!(caps & AC_PINCAP_HDMI))
+                       if (!(caps & (AC_PINCAP_HDMI | AC_PINCAP_DP)))
                                continue;
                        if (intel_hdmi_add_pin(codec, nid) < 0)
                                return -EINVAL;