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>
This commit is contained in:
		
							parent
							
								
									108110a3ff
								
							
						
					
					
						commit
						8be17ac95f
					
				| @ -2703,18 +2703,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; | ||||
| 	} | ||||
|  | ||||
| @ -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); | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user