drm/i915/bxt: add support for HPD long/short pulse detection on HPD_PORT_A pin
authorImre Deak <imre.deak@intel.com>
Mon, 20 Jul 2015 21:43:39 +0000 (14:43 -0700)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 22 Jul 2015 08:45:11 +0000 (10:45 +0200)
This is a requirement for enabling display port HPD support on the port
A HPD pin. This support is to be added by follow-up patches.

Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Sonika Jindal <sonika.jindal@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/i915_reg.h

index f08ec9cf46e65c81c2dc9b9306b7cdbf24c83d90..1118c39281f98cc272b23bcbded120c7ecdd4502 100644 (file)
@@ -1227,6 +1227,22 @@ static irqreturn_t gen8_gt_irq_handler(struct drm_i915_private *dev_priv,
        return ret;
 }
 
+static bool bxt_port_hotplug_long_detect(enum port port, u32 val)
+{
+       switch (port) {
+       case PORT_A:
+               return val & BXT_PORTA_HOTPLUG_LONG_DETECT;
+       case PORT_B:
+               return val & PORTB_HOTPLUG_LONG_DETECT;
+       case PORT_C:
+               return val & PORTC_HOTPLUG_LONG_DETECT;
+       case PORT_D:
+               return val & PORTD_HOTPLUG_LONG_DETECT;
+       default:
+               return false;
+       }
+}
+
 static bool pch_port_hotplug_long_detect(enum port port, u32 val)
 {
        switch (port) {
@@ -1964,7 +1980,7 @@ static void bxt_hpd_handler(struct drm_device *dev, uint32_t iir_status)
        I915_WRITE(BXT_HOTPLUG_CTL, hp_control);
 
        intel_get_hpd_pins(&pin_mask, &long_mask, hp_trigger, hp_control,
-                          hpd_bxt, pch_port_hotplug_long_detect);
+                          hpd_bxt, bxt_port_hotplug_long_detect);
        intel_hpd_irq_handler(dev, pin_mask, long_mask);
 }
 
index e9a95df639f0e48653c200ecd5085eb5808a71eb..8cf77568f7e14eb5efcd61e432bfe07aff2da86d 100644 (file)
@@ -5985,6 +5985,11 @@ enum skl_disp_power_wells {
 
 /* digital port hotplug */
 #define PCH_PORT_HOTPLUG        0xc4030                /* SHOTPLUG_CTL */
+#define BXT_PORTA_HOTPLUG_ENABLE       (1 << 28)
+#define BXT_PORTA_HOTPLUG_STATUS_MASK  (0x3 << 24)
+#define  BXT_PORTA_HOTPLUG_NO_DETECT   (0 << 24)
+#define  BXT_PORTA_HOTPLUG_SHORT_DETECT        (1 << 24)
+#define  BXT_PORTA_HOTPLUG_LONG_DETECT (2 << 24)
 #define PORTD_HOTPLUG_ENABLE            (1 << 20)
 #define PORTD_PULSE_DURATION_2ms        (0)
 #define PORTD_PULSE_DURATION_4_5ms      (1 << 18)