[PATCH 1/2] drm/amd/display: Cleanup MST non-atomic code workaround
Lyude Paul
lyude at redhat.com
Fri Nov 2 01:44:13 UTC 2018
This patch is
Reviewed-by: Lyude Paul <lyude at redhat.com>
On Tue, 2018-10-30 at 18:09 -0400, Jerry (Fangzhi) Zuo wrote:
> [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 at amd.com>
> ---
> drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 15 +++-------
> .../amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 34 -----------------
> -----
> .../amd/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 f8ec8a146663..6c2441bfce90 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -2760,18 +2760,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 67683645ce2c..744d97cc0d39 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
--
Cheers,
Lyude Paul
More information about the amd-gfx
mailing list