drm/ast: Add an crtc_disable callback to the crtc helper funcs
authorEgbert Eich <eich@suse.de>
Tue, 18 Jul 2017 14:47:39 +0000 (16:47 +0200)
committerDave Airlie <airlied@redhat.com>
Wed, 2 Aug 2017 02:12:36 +0000 (12:12 +1000)
Implement the proper CRTC disablement, just like done in mgag200
driver.

Signed-off-by: Egbert Eich <eich@suse.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/ast/ast_mode.c

index aaef0a652f10fdf145b272dc4f28782abfb8701a..3549a3356afe465fd4a9d7f178180e59ed818512 100644 (file)
@@ -613,7 +613,23 @@ static int ast_crtc_mode_set(struct drm_crtc *crtc,
 
 static void ast_crtc_disable(struct drm_crtc *crtc)
 {
+       int ret;
+
+       DRM_DEBUG_KMS("\n");
+       ast_crtc_dpms(crtc, DRM_MODE_DPMS_OFF);
+       if (crtc->primary->fb) {
+               struct ast_framebuffer *ast_fb = to_ast_framebuffer(crtc->primary->fb);
+               struct drm_gem_object *obj = ast_fb->obj;
+               struct ast_bo *bo = gem_to_ast_bo(obj);
+
+               ret = ast_bo_reserve(bo, false);
+               if (ret)
+                       return;
 
+               ast_bo_push_sysram(bo);
+               ast_bo_unreserve(bo);
+       }
+       crtc->primary->fb = NULL;
 }
 
 static void ast_crtc_prepare(struct drm_crtc *crtc)