aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJerry (Fangzhi) Zuo <Jerry.Zuo@amd.com>2017-11-03 14:19:06 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-11-14 11:32:45 -0500
commit4fc6f65965481bd2cdb8827a6fd991ed076b1006 (patch)
tree77f8215a25caf2c2c99b876e769f530ca2547617
parentfcb4019e090b959dbcbfc7bbbc1ebd99c924fa11 (diff)
drm/amd/display: Miss register MST encoder cbs
It is to fix: MST display failed to resume from S3 Need to properly setup MST encoder cbs. Otherwise drm_device encoder doesn't register its own cbs, leading to NULL encoder->funcs in drm_atomic_helper_resume(). Signed-off-by: Jerry (Fangzhi) Zuo <Jerry.Zuo@amd.com> Reviewed-by: Roman Li <Roman.Li@amd.com> Acked-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c12
1 files changed, 11 insertions, 1 deletions
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 3b05da7a90e8..f8efb98b1fa7 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
@@ -245,6 +245,16 @@ static const struct drm_connector_helper_funcs dm_dp_mst_connector_helper_funcs
245 .best_encoder = dm_mst_best_encoder, 245 .best_encoder = dm_mst_best_encoder,
246}; 246};
247 247
248static void amdgpu_dm_encoder_destroy(struct drm_encoder *encoder)
249{
250 drm_encoder_cleanup(encoder);
251 kfree(encoder);
252}
253
254static const struct drm_encoder_funcs amdgpu_dm_encoder_funcs = {
255 .destroy = amdgpu_dm_encoder_destroy,
256};
257
248static struct amdgpu_encoder * 258static struct amdgpu_encoder *
249dm_dp_create_fake_mst_encoder(struct amdgpu_dm_connector *connector) 259dm_dp_create_fake_mst_encoder(struct amdgpu_dm_connector *connector)
250{ 260{
@@ -268,7 +278,7 @@ dm_dp_create_fake_mst_encoder(struct amdgpu_dm_connector *connector)
268 drm_encoder_init( 278 drm_encoder_init(
269 dev, 279 dev,
270 &amdgpu_encoder->base, 280 &amdgpu_encoder->base,
271 NULL, 281 &amdgpu_dm_encoder_funcs,
272 DRM_MODE_ENCODER_DPMST, 282 DRM_MODE_ENCODER_DPMST,
273 NULL); 283 NULL);
274 284