diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_hotplug.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_hotplug.c | 19 |
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 | */ |
86 | enum port intel_hpd_pin_to_port(enum hpd_pin pin) | 87 | enum 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 | */ |
111 | enum hpd_pin intel_hpd_pin(enum port port) | 118 | enum 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 | ||