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
This commit is contained in:
Коммит
42412b120d
|
@ -3287,19 +3287,20 @@ enum skl_disp_power_wells {
|
|||
|
||||
#define PORT_HOTPLUG_STAT _MMIO(dev_priv->info.display_mmio_offset + 0x61114)
|
||||
/*
|
||||
* HDMI/DP bits are gen4+
|
||||
* HDMI/DP bits are g4x+
|
||||
*
|
||||
* WARNING: Bspec for hpd status bits on gen4 seems to be completely confused.
|
||||
* Please check the detailed lore in the commit message for for experimental
|
||||
* evidence.
|
||||
*/
|
||||
#define PORTD_HOTPLUG_LIVE_STATUS_G4X (1 << 29)
|
||||
/* Bspec says GM45 should match G4X/VLV/CHV, but reality disagrees */
|
||||
#define PORTD_HOTPLUG_LIVE_STATUS_GM45 (1 << 29)
|
||||
#define PORTC_HOTPLUG_LIVE_STATUS_GM45 (1 << 28)
|
||||
#define PORTB_HOTPLUG_LIVE_STATUS_GM45 (1 << 27)
|
||||
/* G4X/VLV/CHV DP/HDMI bits again match Bspec */
|
||||
#define PORTD_HOTPLUG_LIVE_STATUS_G4X (1 << 27)
|
||||
#define PORTC_HOTPLUG_LIVE_STATUS_G4X (1 << 28)
|
||||
#define PORTB_HOTPLUG_LIVE_STATUS_G4X (1 << 27)
|
||||
/* VLV DP/HDMI bits again match Bspec */
|
||||
#define PORTD_HOTPLUG_LIVE_STATUS_VLV (1 << 27)
|
||||
#define PORTC_HOTPLUG_LIVE_STATUS_VLV (1 << 28)
|
||||
#define PORTB_HOTPLUG_LIVE_STATUS_VLV (1 << 29)
|
||||
#define PORTB_HOTPLUG_LIVE_STATUS_G4X (1 << 29)
|
||||
#define PORTD_HOTPLUG_INT_STATUS (3 << 21)
|
||||
#define PORTD_HOTPLUG_INT_LONG_PULSE (2 << 21)
|
||||
#define PORTD_HOTPLUG_INT_SHORT_PULSE (1 << 21)
|
||||
|
|
|
@ -4493,20 +4493,20 @@ static bool g4x_digital_port_connected(struct drm_i915_private *dev_priv,
|
|||
return I915_READ(PORT_HOTPLUG_STAT) & bit;
|
||||
}
|
||||
|
||||
static bool vlv_digital_port_connected(struct drm_i915_private *dev_priv,
|
||||
struct intel_digital_port *port)
|
||||
static bool gm45_digital_port_connected(struct drm_i915_private *dev_priv,
|
||||
struct intel_digital_port *port)
|
||||
{
|
||||
u32 bit;
|
||||
|
||||
switch (port->port) {
|
||||
case PORT_B:
|
||||
bit = PORTB_HOTPLUG_LIVE_STATUS_VLV;
|
||||
bit = PORTB_HOTPLUG_LIVE_STATUS_GM45;
|
||||
break;
|
||||
case PORT_C:
|
||||
bit = PORTC_HOTPLUG_LIVE_STATUS_VLV;
|
||||
bit = PORTC_HOTPLUG_LIVE_STATUS_GM45;
|
||||
break;
|
||||
case PORT_D:
|
||||
bit = PORTD_HOTPLUG_LIVE_STATUS_VLV;
|
||||
bit = PORTD_HOTPLUG_LIVE_STATUS_GM45;
|
||||
break;
|
||||
default:
|
||||
MISSING_CASE(port->port);
|
||||
|
@ -4558,8 +4558,8 @@ bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
|
|||
return cpt_digital_port_connected(dev_priv, port);
|
||||
else if (IS_BROXTON(dev_priv))
|
||||
return bxt_digital_port_connected(dev_priv, port);
|
||||
else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
|
||||
return vlv_digital_port_connected(dev_priv, port);
|
||||
else if (IS_GM45(dev_priv))
|
||||
return gm45_digital_port_connected(dev_priv, port);
|
||||
else
|
||||
return g4x_digital_port_connected(dev_priv, port);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче