|
@@ -4533,38 +4533,44 @@ static bool cpt_digital_port_connected(struct drm_i915_private *dev_priv,
|
|
|
static bool g4x_digital_port_connected(struct drm_i915_private *dev_priv,
|
|
|
struct intel_digital_port *port)
|
|
|
{
|
|
|
- uint32_t bit;
|
|
|
+ u32 bit;
|
|
|
|
|
|
- if (IS_VALLEYVIEW(dev_priv)) {
|
|
|
- switch (port->port) {
|
|
|
- case PORT_B:
|
|
|
- bit = PORTB_HOTPLUG_LIVE_STATUS_VLV;
|
|
|
- break;
|
|
|
- case PORT_C:
|
|
|
- bit = PORTC_HOTPLUG_LIVE_STATUS_VLV;
|
|
|
- break;
|
|
|
- case PORT_D:
|
|
|
- bit = PORTD_HOTPLUG_LIVE_STATUS_VLV;
|
|
|
- break;
|
|
|
- default:
|
|
|
- MISSING_CASE(port->port);
|
|
|
- return false;
|
|
|
- }
|
|
|
- } else {
|
|
|
- switch (port->port) {
|
|
|
- case PORT_B:
|
|
|
- bit = PORTB_HOTPLUG_LIVE_STATUS_G4X;
|
|
|
- break;
|
|
|
- case PORT_C:
|
|
|
- bit = PORTC_HOTPLUG_LIVE_STATUS_G4X;
|
|
|
- break;
|
|
|
- case PORT_D:
|
|
|
- bit = PORTD_HOTPLUG_LIVE_STATUS_G4X;
|
|
|
- break;
|
|
|
- default:
|
|
|
- MISSING_CASE(port->port);
|
|
|
- return false;
|
|
|
- }
|
|
|
+ switch (port->port) {
|
|
|
+ case PORT_B:
|
|
|
+ bit = PORTB_HOTPLUG_LIVE_STATUS_G4X;
|
|
|
+ break;
|
|
|
+ case PORT_C:
|
|
|
+ bit = PORTC_HOTPLUG_LIVE_STATUS_G4X;
|
|
|
+ break;
|
|
|
+ case PORT_D:
|
|
|
+ bit = PORTD_HOTPLUG_LIVE_STATUS_G4X;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ MISSING_CASE(port->port);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return I915_READ(PORT_HOTPLUG_STAT) & bit;
|
|
|
+}
|
|
|
+
|
|
|
+static bool vlv_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;
|
|
|
+ break;
|
|
|
+ case PORT_C:
|
|
|
+ bit = PORTC_HOTPLUG_LIVE_STATUS_VLV;
|
|
|
+ break;
|
|
|
+ case PORT_D:
|
|
|
+ bit = PORTD_HOTPLUG_LIVE_STATUS_VLV;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ MISSING_CASE(port->port);
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
return I915_READ(PORT_HOTPLUG_STAT) & bit;
|
|
@@ -4584,6 +4590,8 @@ static bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
|
|
|
return ibx_digital_port_connected(dev_priv, port);
|
|
|
if (HAS_PCH_SPLIT(dev_priv))
|
|
|
return cpt_digital_port_connected(dev_priv, port);
|
|
|
+ else if (IS_VALLEYVIEW(dev_priv))
|
|
|
+ return vlv_digital_port_connected(dev_priv, port);
|
|
|
else
|
|
|
return g4x_digital_port_connected(dev_priv, port);
|
|
|
}
|