[PATCH] drm/i915/bxt: Use correct live status register for BXT platform

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



BXT platform uses live status bits from 0x44440 register to
obtain DP status on hotplug. The existing g4x_digital_port_connected()
uses a different register and hence misses DP hotplug events on
BXT platform. This patch fixes it by using the appropriate
register(0x44440) and live status bits(3:5).

Signed-off-by: Durgadoss R <durgadoss.r@xxxxxxxxx>
---
 drivers/gpu/drm/i915/intel_dp.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index a1dac9c..821d770 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4444,6 +4444,7 @@ static int g4x_digital_port_connected(struct drm_device *dev,
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	uint32_t bit;
+	uint32_t reg = IS_BROXTON(dev) ? GEN8_DE_PORT_ISR : PORT_HOTPLUG_STAT;
 
 	if (IS_VALLEYVIEW(dev)) {
 		switch (intel_dig_port->port) {
@@ -4459,6 +4460,20 @@ static int g4x_digital_port_connected(struct drm_device *dev,
 		default:
 			return -EINVAL;
 		}
+	} else if (IS_BROXTON(dev)) {
+		switch (intel_dig_port->port) {
+		case PORT_A:
+			bit = BXT_DE_PORT_HP_DDIA;
+			break;
+		case PORT_B:
+			bit = BXT_DE_PORT_HP_DDIB;
+			break;
+		case PORT_C:
+			bit = BXT_DE_PORT_HP_DDIC;
+			break;
+		default:
+			return -EINVAL;
+		}
 	} else {
 		switch (intel_dig_port->port) {
 		case PORT_B:
@@ -4475,7 +4490,7 @@ static int g4x_digital_port_connected(struct drm_device *dev,
 		}
 	}
 
-	if ((I915_READ(PORT_HOTPLUG_STAT) & bit) == 0)
+	if ((I915_READ(reg) & bit) == 0)
 		return 0;
 	return 1;
 }
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux