https://bugzilla.kernel.org/show_bug.cgi?id=94921

As mentioned in the above bug report, switching output color range 
"Automatically" according to current mode does not make sense in computer use 
case.
---
 drivers/gpu/drm/i915/i915_drv.h    |  5 ++---
 drivers/gpu/drm/i915/intel_dp.c    | 23 ++---------------------
 drivers/gpu/drm/i915/intel_hdmi.c  | 20 ++------------------
 drivers/gpu/drm/i915/intel_modes.c |  1 -
 drivers/gpu/drm/i915/intel_sdvo.c  | 29 +++++------------------------
 5 files changed, 11 insertions(+), 67 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 8727086..2385732 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -3287,9 +3287,8 @@ int intel_freq_opcode(struct drm_i915_private *dev_priv, 
int val);
 #define POSTING_READ16(reg)    (void)I915_READ16_NOTRACE(reg)
 
 /* "Broadcast RGB" property */
-#define INTEL_BROADCAST_RGB_AUTO 0
-#define INTEL_BROADCAST_RGB_FULL 1
-#define INTEL_BROADCAST_RGB_LIMITED 2
+#define INTEL_BROADCAST_RGB_FULL 0
+#define INTEL_BROADCAST_RGB_LIMITED 1
 
 static inline uint32_t i915_vgacntrl_reg(struct drm_device *dev)
 {
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index a74aaf9..a9ed631 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1238,18 +1238,6 @@ intel_dp_compute_config(struct intel_encoder *encoder,
        return false;
 
 found:
-       if (intel_dp->color_range_auto) {
-               /*
-                * See:
-                * CEA-861-E - 5.1 Default Encoding Parameters
-                * VESA DisplayPort Ver.1.2a - 5.1.1.1 Video Colorimetry
-                */
-               if (bpp != 18 && drm_match_cea_mode(adjusted_mode) > 1)
-                       intel_dp->color_range = DP_COLOR_RANGE_16_235;
-               else
-                       intel_dp->color_range = 0;
-       }
-
        if (intel_dp->color_range)
                pipe_config->limited_color_range = true;
 
@@ -4220,27 +4208,20 @@ intel_dp_set_property(struct drm_connector *connector,
        }
 
        if (property == dev_priv->broadcast_rgb_property) {
-               bool old_auto = intel_dp->color_range_auto;
                uint32_t old_range = intel_dp->color_range;
 
                switch (val) {
-               case INTEL_BROADCAST_RGB_AUTO:
-                       intel_dp->color_range_auto = true;
-                       break;
                case INTEL_BROADCAST_RGB_FULL:
-                       intel_dp->color_range_auto = false;
                        intel_dp->color_range = 0;
                        break;
                case INTEL_BROADCAST_RGB_LIMITED:
-                       intel_dp->color_range_auto = false;
                        intel_dp->color_range = DP_COLOR_RANGE_16_235;
                        break;
                default:
                        return -EINVAL;
                }
 
-               if (old_auto == intel_dp->color_range_auto &&
-                   old_range == intel_dp->color_range)
+               if (old_range == intel_dp->color_range)
                        return 0;
 
                goto done;
@@ -4548,7 +4529,7 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct 
drm_connector *connect
 
        intel_attach_force_audio_property(connector);
        intel_attach_broadcast_rgb_property(connector);
-       intel_dp->color_range_auto = true;
+       intel_dp->color_range = 0;
 
        if (is_edp(intel_dp)) {
                drm_mode_create_scaling_mode_property(connector->dev);
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c 
b/drivers/gpu/drm/i915/intel_hdmi.c
index 995c5b2..4fff5c6 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -990,15 +990,6 @@ bool intel_hdmi_compute_config(struct intel_encoder 
*encoder,
        if (pipe_config->has_hdmi_sink)
                pipe_config->has_infoframe = true;
 
-       if (intel_hdmi->color_range_auto) {
-               /* See CEA-861-E - 5.1 Default Encoding Parameters */
-               if (pipe_config->has_hdmi_sink &&
-                   drm_match_cea_mode(adjusted_mode) > 1)
-                       intel_hdmi->color_range = HDMI_COLOR_RANGE_16_235;
-               else
-                       intel_hdmi->color_range = 0;
-       }
-
        if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK) {
                pipe_config->pixel_multiplier = 2;
        }
@@ -1196,27 +1187,20 @@ intel_hdmi_set_property(struct drm_connector *connector,
        }
 
        if (property == dev_priv->broadcast_rgb_property) {
-               bool old_auto = intel_hdmi->color_range_auto;
                uint32_t old_range = intel_hdmi->color_range;
 
                switch (val) {
-               case INTEL_BROADCAST_RGB_AUTO:
-                       intel_hdmi->color_range_auto = true;
-                       break;
                case INTEL_BROADCAST_RGB_FULL:
-                       intel_hdmi->color_range_auto = false;
                        intel_hdmi->color_range = 0;
                        break;
                case INTEL_BROADCAST_RGB_LIMITED:
-                       intel_hdmi->color_range_auto = false;
                        intel_hdmi->color_range = HDMI_COLOR_RANGE_16_235;
                        break;
                default:
                        return -EINVAL;
                }
 
-               if (old_auto == intel_hdmi->color_range_auto &&
-                   old_range == intel_hdmi->color_range)
+               if (old_range == intel_hdmi->color_range)
                        return 0;
 
                goto done;
@@ -1644,7 +1628,7 @@ intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, 
struct drm_connector *c
 {
        intel_attach_force_audio_property(connector);
        intel_attach_broadcast_rgb_property(connector);
-       intel_hdmi->color_range_auto = true;
+       intel_hdmi->color_range = 0;
        intel_attach_aspect_ratio_property(connector);
        intel_hdmi->aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
 }
diff --git a/drivers/gpu/drm/i915/intel_modes.c 
b/drivers/gpu/drm/i915/intel_modes.c
index 0e860f3..3bebac9 100644
--- a/drivers/gpu/drm/i915/intel_modes.c
+++ b/drivers/gpu/drm/i915/intel_modes.c
@@ -100,7 +100,6 @@ intel_attach_force_audio_property(struct drm_connector 
*connector)
 }
 
 static const struct drm_prop_enum_list broadcast_rgb_names[] = {
-       { INTEL_BROADCAST_RGB_AUTO, "Automatic" },
        { INTEL_BROADCAST_RGB_FULL, "Full" },
        { INTEL_BROADCAST_RGB_LIMITED, "Limited 16:235" },
 };
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c 
b/drivers/gpu/drm/i915/intel_sdvo.c
index 64ad2b4..329f9c2 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -104,7 +104,6 @@ struct intel_sdvo {
         * It is only valid when using TMDS encoding and 8 bit per color mode.
         */
        uint32_t color_range;
-       bool color_range_auto;
 
        /**
         * This is set if we're going to treat the device as TV-out.
@@ -1156,18 +1155,9 @@ static bool intel_sdvo_compute_config(struct 
intel_encoder *encoder,
 
        pipe_config->has_hdmi_sink = intel_sdvo->has_hdmi_monitor;
 
-       if (intel_sdvo->color_range_auto) {
-               /* See CEA-861-E - 5.1 Default Encoding Parameters */
-               /* FIXME: This bit is only valid when using TMDS encoding and 8
-                * bit per color mode. */
-               if (pipe_config->has_hdmi_sink &&
-                   drm_match_cea_mode(adjusted_mode) > 1)
-                       pipe_config->limited_color_range = true;
-       } else {
-               if (pipe_config->has_hdmi_sink &&
-                   intel_sdvo->color_range == HDMI_COLOR_RANGE_16_235)
-                       pipe_config->limited_color_range = true;
-       }
+       if (pipe_config->has_hdmi_sink &&
+           intel_sdvo->color_range == HDMI_COLOR_RANGE_16_235)
+               pipe_config->limited_color_range = true;
 
        /* Clock computation needs to happen after pixel multiplier. */
        if (intel_sdvo->is_tv)
@@ -2058,29 +2048,20 @@ intel_sdvo_set_property(struct drm_connector *connector,
        }
 
        if (property == dev_priv->broadcast_rgb_property) {
-               bool old_auto = intel_sdvo->color_range_auto;
                uint32_t old_range = intel_sdvo->color_range;
 
                switch (val) {
-               case INTEL_BROADCAST_RGB_AUTO:
-                       intel_sdvo->color_range_auto = true;
-                       break;
                case INTEL_BROADCAST_RGB_FULL:
-                       intel_sdvo->color_range_auto = false;
                        intel_sdvo->color_range = 0;
                        break;
                case INTEL_BROADCAST_RGB_LIMITED:
-                       intel_sdvo->color_range_auto = false;
-                       /* FIXME: this bit is only valid when using TMDS
-                        * encoding and 8 bit per color mode. */
                        intel_sdvo->color_range = HDMI_COLOR_RANGE_16_235;
                        break;
                default:
                        return -EINVAL;
                }
 
-               if (old_auto == intel_sdvo->color_range_auto &&
-                   old_range == intel_sdvo->color_range)
+               if (old_range == intel_sdvo->color_range)
                        return 0;
 
                goto done;
@@ -2421,7 +2402,7 @@ intel_sdvo_add_hdmi_properties(struct intel_sdvo 
*intel_sdvo,
        intel_attach_force_audio_property(&connector->base.base);
        if (INTEL_INFO(dev)->gen >= 4 && IS_MOBILE(dev)) {
                intel_attach_broadcast_rgb_property(&connector->base.base);
-               intel_sdvo->color_range_auto = true;
+               intel_sdvo->color_range = 0;
        }
 }
 
-- 
2.3.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to