aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_hotplug.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/intel_hotplug.c')
-rw-r--r--drivers/gpu/drm/i915/intel_hotplug.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
index 875d5d218d5c..fe28c1ea84a5 100644
--- a/drivers/gpu/drm/i915/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/intel_hotplug.c
@@ -78,12 +78,14 @@
78 78
79/** 79/**
80 * intel_hpd_port - return port hard associated with certain pin. 80 * intel_hpd_port - return port hard associated with certain pin.
81 * @dev_priv: private driver data pointer
81 * @pin: the hpd pin to get associated port 82 * @pin: the hpd pin to get associated port
82 * 83 *
83 * Return port that is associatade with @pin and PORT_NONE if no port is 84 * Return port that is associatade with @pin and PORT_NONE if no port is
84 * hard associated with that @pin. 85 * hard associated with that @pin.
85 */ 86 */
86enum port intel_hpd_pin_to_port(enum hpd_pin pin) 87enum port intel_hpd_pin_to_port(struct drm_i915_private *dev_priv,
88 enum hpd_pin pin)
87{ 89{
88 switch (pin) { 90 switch (pin) {
89 case HPD_PORT_A: 91 case HPD_PORT_A:
@@ -95,6 +97,8 @@ enum port intel_hpd_pin_to_port(enum hpd_pin pin)
95 case HPD_PORT_D: 97 case HPD_PORT_D:
96 return PORT_D; 98 return PORT_D;
97 case HPD_PORT_E: 99 case HPD_PORT_E:
100 if (IS_CNL_WITH_PORT_F(dev_priv))
101 return PORT_F;
98 return PORT_E; 102 return PORT_E;
99 default: 103 default:
100 return PORT_NONE; /* no port for this pin */ 104 return PORT_NONE; /* no port for this pin */
@@ -102,13 +106,17 @@ enum port intel_hpd_pin_to_port(enum hpd_pin pin)
102} 106}
103 107
104/** 108/**
105 * intel_hpd_pin - return pin hard associated with certain port. 109 * intel_hpd_pin_default - return default pin associated with certain port.
110 * @dev_priv: private driver data pointer
106 * @port: the hpd port to get associated pin 111 * @port: the hpd port to get associated pin
107 * 112 *
113 * It is only valid and used by digital port encoder.
114 *
108 * Return pin that is associatade with @port and HDP_NONE if no pin is 115 * Return pin that is associatade with @port and HDP_NONE if no pin is
109 * hard associated with that @port. 116 * hard associated with that @port.
110 */ 117 */
111enum hpd_pin intel_hpd_pin(enum port port) 118enum hpd_pin intel_hpd_pin_default(struct drm_i915_private *dev_priv,
119 enum port port)
112{ 120{
113 switch (port) { 121 switch (port) {
114 case PORT_A: 122 case PORT_A:
@@ -121,6 +129,9 @@ enum hpd_pin intel_hpd_pin(enum port port)
121 return HPD_PORT_D; 129 return HPD_PORT_D;
122 case PORT_E: 130 case PORT_E:
123 return HPD_PORT_E; 131 return HPD_PORT_E;
132 case PORT_F:
133 if (IS_CNL_WITH_PORT_F(dev_priv))
134 return HPD_PORT_E;
124 default: 135 default:
125 MISSING_CASE(port); 136 MISSING_CASE(port);
126 return HPD_NONE; 137 return HPD_NONE;
@@ -417,7 +428,7 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
417 if (!(BIT(i) & pin_mask)) 428 if (!(BIT(i) & pin_mask))
418 continue; 429 continue;
419 430
420 port = intel_hpd_pin_to_port(i); 431 port = intel_hpd_pin_to_port(dev_priv, i);
421 is_dig_port = port != PORT_NONE && 432 is_dig_port = port != PORT_NONE &&
422 dev_priv->hotplug.irq_port[port]; 433 dev_priv->hotplug.irq_port[port];
423 434