[Intel-gfx] [RFC 02/12] drm/i915/config: Introduce intel_output_name
Bob Paauwe
bob.j.paauwe at intel.com
Thu Feb 12 15:41:28 PST 2015
Human readable name for each output type to correspond with names
used in the ACPI property tables.
Signed-off-by: Bob Paauwe <bob.j.paauwe at 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
More information about the Intel-gfx
mailing list