There's no good place in DC to cover all place where stream signal should
be updated. update_stream_signal depends on timing which comes from DM.

Signed-off-by: Harry Wentland <[email protected]>
Reviewed-by: Tony Cheng <[email protected]>
Acked-by: Harry Wentland <[email protected]>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 +++-------
 drivers/gpu/drm/amd/display/dc/core/dc_stream.c   |  2 +-
 drivers/gpu/drm/amd/display/dc/dc_stream.h        |  2 ++
 3 files changed, 6 insertions(+), 8 deletions(-)

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 ebcad3078d14..c01ec8aacfb2 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -2452,6 +2452,7 @@ create_stream_for_sink(struct amdgpu_dm_connector 
*aconnector,
                                dm_state ? (dm_state->scaling != RMX_OFF) : 
false);
        }
 
+       drm_mode_set_crtcinfo(&mode, 0);
        fill_stream_properties_from_drm_display_mode(stream,
                        &mode, &aconnector->base);
        update_stream_scaling_settings(&mode, dm_state, stream);
@@ -2461,6 +2462,8 @@ create_stream_for_sink(struct amdgpu_dm_connector 
*aconnector,
                drm_connector,
                aconnector->dc_sink);
 
+       update_stream_signal(stream);
+
        return stream;
 }
 
@@ -2865,13 +2868,6 @@ int amdgpu_dm_connector_mode_valid(struct drm_connector 
*connector,
                goto fail;
        }
 
-       drm_mode_set_crtcinfo(mode, 0);
-       fill_stream_properties_from_drm_display_mode(stream, mode, connector);
-
-       stream->src.width = mode->hdisplay;
-       stream->src.height = mode->vdisplay;
-       stream->dst = stream->src;
-
        dc_result = dc_validate_stream(adev->dm.dc, stream);
 
        if (dc_result == DC_OK)
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c 
b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
index 3cbdd8cacd37..c3b198836d1d 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
@@ -33,7 +33,7 @@
 
/*******************************************************************************
  * Private functions
  
******************************************************************************/
-static void update_stream_signal(struct dc_stream_state *stream)
+void update_stream_signal(struct dc_stream_state *stream)
 {
 
        struct dc_sink *dc_sink = stream->sink;
diff --git a/drivers/gpu/drm/amd/display/dc/dc_stream.h 
b/drivers/gpu/drm/amd/display/dc/dc_stream.h
index 7df75f8ae2b1..275215096f51 100644
--- a/drivers/gpu/drm/amd/display/dc/dc_stream.h
+++ b/drivers/gpu/drm/amd/display/dc/dc_stream.h
@@ -239,6 +239,8 @@ enum surface_update_type 
dc_check_update_surfaces_for_stream(
  */
 struct dc_stream_state *dc_create_stream_for_sink(struct dc_sink *dc_sink);
 
+void update_stream_signal(struct dc_stream_state *stream);
+
 void dc_stream_retain(struct dc_stream_state *dc_stream);
 void dc_stream_release(struct dc_stream_state *dc_stream);
 
-- 
2.14.1

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to