OSDN Git Service

drm/amd/display: Call update_stream_signal directly from amdgpu_dm
authorHarry Wentland <harry.wentland@amd.com>
Mon, 18 Dec 2017 17:01:30 +0000 (12:01 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 19 Feb 2018 19:18:35 +0000 (14:18 -0500)
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 <harry.wentland@amd.com>
Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/amd/display/dc/core/dc_stream.c
drivers/gpu/drm/amd/display/dc/dc_stream.h

index 63df977..741ca9e 100644 (file)
@@ -2448,6 +2448,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);
@@ -2457,6 +2458,8 @@ create_stream_for_sink(struct amdgpu_dm_connector *aconnector,
                drm_connector,
                aconnector->dc_sink);
 
+       update_stream_signal(stream);
+
        return stream;
 }
 
@@ -2835,13 +2838,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)
index 3cbdd8c..c3b1988 100644 (file)
@@ -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;
index e23620b..2d2472b 100644 (file)
@@ -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);