aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_hotplug.c
diff options
context:
space:
mode:
authorImre Deak <imre.deak@intel.com>2015-07-21 15:32:45 -0700
committerDaniel Vetter <daniel.vetter@ffwll.ch>2015-07-22 10:44:51 +0200
commitcc24fcdcea74844145f0f7683d4626be27dec221 (patch)
tree88a7236a26793b1666c1a54398e81e458e34c927 /drivers/gpu/drm/i915/intel_hotplug.c
parentdrm/i915: combine i9xx_get_hpd_pins and pch_get_hpd_pins (diff)
downloadlinux-dev-cc24fcdcea74844145f0f7683d4626be27dec221.tar.xz
linux-dev-cc24fcdcea74844145f0f7683d4626be27dec221.zip
drm/i915: don't use HPD_PORT_A as an alias for HPD_NONE
Currently HPD_PORT_A is used as an alias for HPD_NONE to mean that the given port doesn't support long/short HPD pulse detection. SDVO and CRT ports are like this and for these ports we only want to know whether an hot plug event was detected on the corresponding pin. Since at least on BXT we need long/short pulse detection on PORT A as well (added by the next patch) remove this aliasing of HPD_PORT_A/HPD_NONE and let the return value of intel_hpd_pin_to_port() show whether long/short pulse detection is supported on the passed in pin. No functional change. v2: - rebase on top of -nightly (Daniel) - make the check for intel_hpd_pin_to_port() return value more readable (Sivakumar) Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Sonika Jindal <sonika.jindal@intel.com> Reviewed-by: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to '')
-rw-r--r--drivers/gpu/drm/i915/intel_hotplug.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
index 3c9171f11531..032a0bf75f3b 100644
--- a/drivers/gpu/drm/i915/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/intel_hotplug.c
@@ -76,17 +76,23 @@
* it will use i915_hotplug_work_func where this logic is handled.
*/
-enum port intel_hpd_pin_to_port(enum hpd_pin pin)
+bool intel_hpd_pin_to_port(enum hpd_pin pin, enum port *port)
{
switch (pin) {
+ case HPD_PORT_A:
+ *port = PORT_A;
+ return true;
case HPD_PORT_B:
- return PORT_B;
+ *port = PORT_B;
+ return true;
case HPD_PORT_C:
- return PORT_C;
+ *port = PORT_C;
+ return true;
case HPD_PORT_D:
- return PORT_D;
+ *port = PORT_D;
+ return true;
default:
- return PORT_A; /* no hpd */
+ return false; /* no hpd */
}
}
@@ -369,8 +375,8 @@ void intel_hpd_irq_handler(struct drm_device *dev,
if (!(BIT(i) & pin_mask))
continue;
- port = intel_hpd_pin_to_port(i);
- is_dig_port = port && dev_priv->hotplug.irq_port[port];
+ is_dig_port = intel_hpd_pin_to_port(i, &port) &&
+ dev_priv->hotplug.irq_port[port];
if (is_dig_port) {
bool long_hpd = long_mask & BIT(i);