From: Ville Syrj?l? <ville.syrj...@linux.intel.com>

intel_hdmi.has_hdmi_sink is tied into the force audio property, so it
doesn't seem like the correct way to detect HDMI monitors. Instead add
a new has_hdmi_monitor member which simply tells whether a HDMI monitor
was detected.

Not sure if this is the best way, or if we should just use has_hdmi_sink
for the CEA-861 automatic color range property... At least the infoframe
stuff already depends on has_hdmi_sink.

Signed-off-by: Ville Syrj?l? <ville.syrjala at linux.intel.com>
---
 drivers/gpu/drm/i915/intel_drv.h  |    1 +
 drivers/gpu/drm/i915/intel_hdmi.c |    6 ++++--
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 4df47be..aed7478 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -344,6 +344,7 @@ struct intel_hdmi {
        int ddc_bus;
        uint32_t color_range;
        bool has_hdmi_sink;
+       bool has_hdmi_monitor;
        bool has_audio;
        enum hdmi_force_audio force_audio;
        void (*write_infoframe)(struct drm_encoder *encoder,
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c 
b/drivers/gpu/drm/i915/intel_hdmi.c
index f194d75..e663dec 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -815,6 +815,7 @@ intel_hdmi_detect(struct drm_connector *connector, bool 
force)
                 return status;

        intel_hdmi->has_hdmi_sink = false;
+       intel_hdmi->has_hdmi_monitor = false;
        intel_hdmi->has_audio = false;
        edid = drm_get_edid(connector,
                            intel_gmbus_get_adapter(dev_priv,
@@ -823,9 +824,10 @@ intel_hdmi_detect(struct drm_connector *connector, bool 
force)
        if (edid) {
                if (edid->input & DRM_EDID_INPUT_DIGITAL) {
                        status = connector_status_connected;
+                       intel_hdmi->has_hdmi_monitor =
+                               drm_detect_hdmi_monitor(edid);
                        if (intel_hdmi->force_audio != HDMI_AUDIO_OFF_DVI)
-                               intel_hdmi->has_hdmi_sink =
-                                               drm_detect_hdmi_monitor(edid);
+                               intel_hdmi->has_hdmi_sink = 
intel_hdmi->has_hdmi_monitor;
                        intel_hdmi->has_audio = drm_detect_monitor_audio(edid);
                }
                kfree(edid);
-- 
1.7.8.6

Reply via email to