Human readable name for each output type to correspond with names
used in the ACPI property tables.

Signed-off-by: Bob Paauwe <bob.j.paa...@intel.com>
---
 drivers/gpu/drm/i915/intel_display.c | 57 ++++++++++++++++++++++++++++++++++++
 drivers/gpu/drm/i915/intel_drv.h     |  1 +
 2 files changed, 58 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index 3b0fe9f..de6de83 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -12440,6 +12440,63 @@ static bool intel_crt_present(struct drm_device *dev)
        return true;
 }
 
+/*
+ * Provide a name for the various outputs.
+ */
+const char *intel_output_name(struct intel_connector *connector)
+{
+       int output;
+       static const char *names[] = {
+               [INTEL_OUTPUT_UNUSED] = "Unused",
+               [INTEL_OUTPUT_ANALOG] = "Analog",
+               [INTEL_OUTPUT_DVO] = "DVO",
+               [INTEL_OUTPUT_SDVO] = "SDVO",
+               [INTEL_OUTPUT_LVDS] = "LVDS",
+               [INTEL_OUTPUT_TVOUT] = "TV",
+               [INTEL_OUTPUT_HDMI] = "HDMI",
+               [INTEL_OUTPUT_DISPLAYPORT] = "DisplayPort",
+               [INTEL_OUTPUT_EDP] = "eDP",
+               [INTEL_OUTPUT_DSI] = "DSI",
+               [INTEL_OUTPUT_UNKNOWN] = "Unknown",
+       };
+       static const char *name_ex[] = {
+               [0] = "HDMI_A",
+               [1] = "HDMI_B",
+               [2] = "HDMI_C",
+               [3] = "HDMI_D",
+               [4] = "DisplayPort_A",
+               [5] = "DisplayPort_B",
+               [6] = "DisplayPort_C",
+               [7] = "DisplayPort_D",
+               [8] = "eDP_A",
+               [9] = "eDP_B",
+               [10] = "eDP_C",
+               [11] = "eDP_D",
+       };
+
+       if (!connector || !connector->encoder)
+               return "Unknown";
+
+       switch (connector->encoder->type) {
+       case INTEL_OUTPUT_HDMI:
+       case INTEL_OUTPUT_DISPLAYPORT:
+       case INTEL_OUTPUT_EDP:
+               output = ((connector->encoder->type - INTEL_OUTPUT_HDMI) * 4) +
+                       enc_to_dig_port(&connector->encoder->base)->port;
+
+               if (output < 0 || output >= ARRAY_SIZE(name_ex))
+                       return "Invalid";
+
+               return name_ex[output];
+       default:
+               if (output < 0 || output >= ARRAY_SIZE(names) || !names[output])
+                       return "Invalid";
+
+               return names[output];
+       }
+}
+
+
 static void intel_setup_outputs(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index aefd95e..4c81ee9 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -893,6 +893,7 @@ void i915_audio_component_cleanup(struct drm_i915_private 
*dev_priv);
 
 /* intel_display.c */
 extern const struct drm_plane_funcs intel_plane_funcs;
+const char *intel_output_name(struct intel_connector *intel_connector);
 bool intel_has_pending_fb_unpin(struct drm_device *dev);
 int intel_pch_rawclk(struct drm_device *dev);
 void intel_mark_busy(struct drm_device *dev);
-- 
2.1.0

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

Reply via email to