Merge tag 'drm-intel-fixes-2016-02-18' of git://anongit.freedesktop.org/drm-intel into drm-fixes

single g4x hpd fix.

* tag 'drm-intel-fixes-2016-02-18' of git://anongit.freedesktop.org/drm-intel:
drm/i915: Fix hpd live status bits for g4x

+15 -14
+8 -7
drivers/gpu/drm/i915/i915_reg.h
··· 3287 3287 3288 3288 #define PORT_HOTPLUG_STAT _MMIO(dev_priv->info.display_mmio_offset + 0x61114) 3289 3289 /* 3290 - * HDMI/DP bits are gen4+ 3290 + * HDMI/DP bits are g4x+ 3291 3291 * 3292 3292 * WARNING: Bspec for hpd status bits on gen4 seems to be completely confused. 3293 3293 * Please check the detailed lore in the commit message for for experimental 3294 3294 * evidence. 3295 3295 */ 3296 - #define PORTD_HOTPLUG_LIVE_STATUS_G4X (1 << 29) 3296 + /* Bspec says GM45 should match G4X/VLV/CHV, but reality disagrees */ 3297 + #define PORTD_HOTPLUG_LIVE_STATUS_GM45 (1 << 29) 3298 + #define PORTC_HOTPLUG_LIVE_STATUS_GM45 (1 << 28) 3299 + #define PORTB_HOTPLUG_LIVE_STATUS_GM45 (1 << 27) 3300 + /* G4X/VLV/CHV DP/HDMI bits again match Bspec */ 3301 + #define PORTD_HOTPLUG_LIVE_STATUS_G4X (1 << 27) 3297 3302 #define PORTC_HOTPLUG_LIVE_STATUS_G4X (1 << 28) 3298 - #define PORTB_HOTPLUG_LIVE_STATUS_G4X (1 << 27) 3299 - /* VLV DP/HDMI bits again match Bspec */ 3300 - #define PORTD_HOTPLUG_LIVE_STATUS_VLV (1 << 27) 3301 - #define PORTC_HOTPLUG_LIVE_STATUS_VLV (1 << 28) 3302 - #define PORTB_HOTPLUG_LIVE_STATUS_VLV (1 << 29) 3303 + #define PORTB_HOTPLUG_LIVE_STATUS_G4X (1 << 29) 3303 3304 #define PORTD_HOTPLUG_INT_STATUS (3 << 21) 3304 3305 #define PORTD_HOTPLUG_INT_LONG_PULSE (2 << 21) 3305 3306 #define PORTD_HOTPLUG_INT_SHORT_PULSE (1 << 21)
+7 -7
drivers/gpu/drm/i915/intel_dp.c
··· 4493 4493 return I915_READ(PORT_HOTPLUG_STAT) & bit; 4494 4494 } 4495 4495 4496 - static bool vlv_digital_port_connected(struct drm_i915_private *dev_priv, 4497 - struct intel_digital_port *port) 4496 + static bool gm45_digital_port_connected(struct drm_i915_private *dev_priv, 4497 + struct intel_digital_port *port) 4498 4498 { 4499 4499 u32 bit; 4500 4500 4501 4501 switch (port->port) { 4502 4502 case PORT_B: 4503 - bit = PORTB_HOTPLUG_LIVE_STATUS_VLV; 4503 + bit = PORTB_HOTPLUG_LIVE_STATUS_GM45; 4504 4504 break; 4505 4505 case PORT_C: 4506 - bit = PORTC_HOTPLUG_LIVE_STATUS_VLV; 4506 + bit = PORTC_HOTPLUG_LIVE_STATUS_GM45; 4507 4507 break; 4508 4508 case PORT_D: 4509 - bit = PORTD_HOTPLUG_LIVE_STATUS_VLV; 4509 + bit = PORTD_HOTPLUG_LIVE_STATUS_GM45; 4510 4510 break; 4511 4511 default: 4512 4512 MISSING_CASE(port->port); ··· 4558 4558 return cpt_digital_port_connected(dev_priv, port); 4559 4559 else if (IS_BROXTON(dev_priv)) 4560 4560 return bxt_digital_port_connected(dev_priv, port); 4561 - else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) 4562 - return vlv_digital_port_connected(dev_priv, port); 4561 + else if (IS_GM45(dev_priv)) 4562 + return gm45_digital_port_connected(dev_priv, port); 4563 4563 else 4564 4564 return g4x_digital_port_connected(dev_priv, port); 4565 4565 }