diff options
author | Jerry (Fangzhi) Zuo <Jerry.Zuo@amd.com> | 2018-10-30 14:28:49 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-11-07 17:05:54 -0500 |
commit | 1b32d6e040272e7a722910f6ba10cbc6099dd238 (patch) | |
tree | 171e110288fe8b05b98544671ce418d7ebdad821 | |
parent | db0049129359eca348e5cc2782a90e78fda5bc85 (diff) |
drm/amd/display: Cleanup MST non-atomic code workaround
[why]
It is not correct to touch aconnector within atomic_check.
[How]
It was added as workaround before, and no longer needed.
Signed-off-by: Jerry (Fangzhi) Zuo <Jerry.Zuo@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
3 files changed, 4 insertions, 46 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 8c647ec1572f..f75d4fc3a42f 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | |||
@@ -2764,18 +2764,11 @@ create_stream_for_sink(struct amdgpu_dm_connector *aconnector, | |||
2764 | drm_connector = &aconnector->base; | 2764 | drm_connector = &aconnector->base; |
2765 | 2765 | ||
2766 | if (!aconnector->dc_sink) { | 2766 | if (!aconnector->dc_sink) { |
2767 | /* | 2767 | if (!aconnector->mst_port) { |
2768 | * Create dc_sink when necessary to MST | 2768 | sink = create_fake_sink(aconnector); |
2769 | * Don't apply fake_sink to MST | 2769 | if (!sink) |
2770 | */ | 2770 | return stream; |
2771 | if (aconnector->mst_port) { | ||
2772 | dm_dp_mst_dc_sink_create(drm_connector); | ||
2773 | return stream; | ||
2774 | } | 2771 | } |
2775 | |||
2776 | sink = create_fake_sink(aconnector); | ||
2777 | if (!sink) | ||
2778 | return stream; | ||
2779 | } else { | 2772 | } else { |
2780 | sink = aconnector->dc_sink; | 2773 | sink = aconnector->dc_sink; |
2781 | } | 2774 | } |
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c index 03601d717fed..03e98967d6c2 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | |||
@@ -205,40 +205,6 @@ static const struct drm_connector_funcs dm_dp_mst_connector_funcs = { | |||
205 | .atomic_get_property = amdgpu_dm_connector_atomic_get_property | 205 | .atomic_get_property = amdgpu_dm_connector_atomic_get_property |
206 | }; | 206 | }; |
207 | 207 | ||
208 | void dm_dp_mst_dc_sink_create(struct drm_connector *connector) | ||
209 | { | ||
210 | struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector); | ||
211 | struct dc_sink *dc_sink; | ||
212 | struct dc_sink_init_data init_params = { | ||
213 | .link = aconnector->dc_link, | ||
214 | .sink_signal = SIGNAL_TYPE_DISPLAY_PORT_MST }; | ||
215 | |||
216 | /* FIXME none of this is safe. we shouldn't touch aconnector here in | ||
217 | * atomic_check | ||
218 | */ | ||
219 | |||
220 | /* | ||
221 | * TODO: Need to further figure out why ddc.algo is NULL while MST port exists | ||
222 | */ | ||
223 | if (!aconnector->port || !aconnector->port->aux.ddc.algo) | ||
224 | return; | ||
225 | |||
226 | ASSERT(aconnector->edid); | ||
227 | |||
228 | dc_sink = dc_link_add_remote_sink( | ||
229 | aconnector->dc_link, | ||
230 | (uint8_t *)aconnector->edid, | ||
231 | (aconnector->edid->extensions + 1) * EDID_LENGTH, | ||
232 | &init_params); | ||
233 | |||
234 | dc_sink->priv = aconnector; | ||
235 | aconnector->dc_sink = dc_sink; | ||
236 | |||
237 | if (aconnector->dc_sink) | ||
238 | amdgpu_dm_update_freesync_caps( | ||
239 | connector, aconnector->edid); | ||
240 | } | ||
241 | |||
242 | static int dm_dp_mst_get_modes(struct drm_connector *connector) | 208 | static int dm_dp_mst_get_modes(struct drm_connector *connector) |
243 | { | 209 | { |
244 | struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector); | 210 | struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector); |
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.h index 8cf51da26657..2da851b40042 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.h +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.h | |||
@@ -31,6 +31,5 @@ struct amdgpu_dm_connector; | |||
31 | 31 | ||
32 | void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm, | 32 | void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm, |
33 | struct amdgpu_dm_connector *aconnector); | 33 | struct amdgpu_dm_connector *aconnector); |
34 | void dm_dp_mst_dc_sink_create(struct drm_connector *connector); | ||
35 | 34 | ||
36 | #endif | 35 | #endif |