Now that we have the HDMI colorimetry fill the corresponding
AVI infoframe info. Also signal "mode_changed" if colorimetry
changed.

Signed-off-by: Harry Wentland <harry.wentl...@amd.com>
Cc: Pekka Paalanen <ppaala...@gmail.com>
Cc: Sebastian Wick <sebastian.w...@redhat.com>
Cc: vitaly.pros...@amd.com
Cc: Uma Shankar <uma.shan...@intel.com>
Cc: Ville Syrjälä <ville.syrj...@linux.intel.com>
Cc: Joshua Ashton <jos...@froggi.es>
Cc: dri-devel@lists.freedesktop.org
Cc: amd-...@lists.freedesktop.org
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 67def042e9b4..310388219f8c 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -5282,6 +5282,7 @@ static void fill_stream_properties_from_drm_display_mode(
        if (stream->signal == SIGNAL_TYPE_HDMI_TYPE_A) {
                drm_hdmi_avi_infoframe_from_display_mode(&avi_frame, (struct 
drm_connector *)connector, mode_in);
                timing_out->vic = avi_frame.video_code;
+               drm_hdmi_avi_infoframe_colorimetry(&avi_frame, connector_state);
                drm_hdmi_vendor_infoframe_from_display_mode(&hv_frame, (struct 
drm_connector *)connector, mode_in);
                timing_out->hdmi_vic = hv_frame.vic;
        }
@@ -6476,6 +6477,14 @@ amdgpu_dm_connector_atomic_check(struct drm_connector 
*conn,
        if (!crtc)
                return 0;
 
+       if (new_con_state->colorspace != old_con_state->colorspace) {
+               new_crtc_state = drm_atomic_get_crtc_state(state, crtc);
+               if (IS_ERR(new_crtc_state))
+                       return PTR_ERR(new_crtc_state);
+
+               new_crtc_state->mode_changed = true;
+       }
+
        if (!drm_connector_atomic_hdr_metadata_equal(old_con_state, 
new_con_state)) {
                struct dc_info_packet hdr_infopacket;
 
@@ -6498,7 +6507,7 @@ amdgpu_dm_connector_atomic_check(struct drm_connector 
*conn,
                 * set is permissible, however. So only force a
                 * modeset if we're entering or exiting HDR.
                 */
-               new_crtc_state->mode_changed =
+               new_crtc_state->mode_changed = new_crtc_state->mode_changed ||
                        !old_con_state->hdr_output_metadata ||
                        !new_con_state->hdr_output_metadata;
        }
-- 
2.38.1

Reply via email to