diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0775-drm-amd-display-Cleanup-MST-non-atomic-code-workarou.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/0775-drm-amd-display-Cleanup-MST-non-atomic-code-workarou.patch | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0775-drm-amd-display-Cleanup-MST-non-atomic-code-workarou.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0775-drm-amd-display-Cleanup-MST-non-atomic-code-workarou.patch new file mode 100644 index 00000000..cfdf508d --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0775-drm-amd-display-Cleanup-MST-non-atomic-code-workarou.patch @@ -0,0 +1,108 @@ +From 400a2feb19cb99c7641f57e7adb5d0d4fc36bd24 Mon Sep 17 00:00:00 2001 +From: "Jerry (Fangzhi) Zuo" <Jerry.Zuo@amd.com> +Date: Tue, 30 Oct 2018 14:28:49 -0400 +Subject: [PATCH 0775/2940] 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> +--- + .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 15 +++----- + .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 34 ------------------- + .../display/amdgpu_dm/amdgpu_dm_mst_types.h | 1 - + 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 fe169553e884..8cfb90110dd6 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -2782,18 +2782,11 @@ create_stream_for_sink(struct amdgpu_dm_connector *aconnector, + drm_connector = &aconnector->base; + + if (!aconnector->dc_sink) { +- /* +- * Create dc_sink when necessary to MST +- * Don't apply fake_sink to MST +- */ +- if (aconnector->mst_port) { +- dm_dp_mst_dc_sink_create(drm_connector); +- return stream; ++ if (!aconnector->mst_port) { ++ sink = create_fake_sink(aconnector); ++ if (!sink) ++ return stream; + } +- +- sink = create_fake_sink(aconnector); +- if (!sink) +- return stream; + } else { + sink = aconnector->dc_sink; + } +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 a4bc29f83c4b..0cca1809fdcd 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 = { + .atomic_get_property = amdgpu_dm_connector_atomic_get_property + }; + +-void dm_dp_mst_dc_sink_create(struct drm_connector *connector) +-{ +- struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector); +- struct dc_sink *dc_sink; +- struct dc_sink_init_data init_params = { +- .link = aconnector->dc_link, +- .sink_signal = SIGNAL_TYPE_DISPLAY_PORT_MST }; +- +- /* FIXME none of this is safe. we shouldn't touch aconnector here in +- * atomic_check +- */ +- +- /* +- * TODO: Need to further figure out why ddc.algo is NULL while MST port exists +- */ +- if (!aconnector->port || !aconnector->port->aux.ddc.algo) +- return; +- +- ASSERT(aconnector->edid); +- +- dc_sink = dc_link_add_remote_sink( +- aconnector->dc_link, +- (uint8_t *)aconnector->edid, +- (aconnector->edid->extensions + 1) * EDID_LENGTH, +- &init_params); +- +- dc_sink->priv = aconnector; +- aconnector->dc_sink = dc_sink; +- +- if (aconnector->dc_sink) +- amdgpu_dm_update_freesync_caps( +- connector, aconnector->edid); +-} +- + static int dm_dp_mst_get_modes(struct drm_connector *connector) + { + 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; + + void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm, + struct amdgpu_dm_connector *aconnector); +-void dm_dp_mst_dc_sink_create(struct drm_connector *connector); + + #endif +-- +2.17.1 + |