Ver Fonte

drm/kms: add crtc disable function

More explicit than dpms. Same as the encoder disable function.

Need this to explicity disconnect plls from crtcs for reuse when you
plls:crtcs ratio isn't 1:1.

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Alex Deucher há 15 anos atrás
pai
commit
5c8d7171cc
2 ficheiros alterados com 7 adições e 1 exclusões
  1. 4 1
      drivers/gpu/drm/drm_crtc_helper.c
  2. 3 0
      include/drm/drm_crtc_helper.h

+ 4 - 1
drivers/gpu/drm/drm_crtc_helper.c

@@ -241,7 +241,10 @@ void drm_helper_disable_unused_functions(struct drm_device *dev)
 		struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
 		crtc->enabled = drm_helper_crtc_in_use(crtc);
 		if (!crtc->enabled) {
-			crtc_funcs->dpms(crtc, DRM_MODE_DPMS_OFF);
+			if (crtc_funcs->disable)
+				(*crtc_funcs->disable)(crtc);
+			else
+				(*crtc_funcs->dpms)(crtc, DRM_MODE_DPMS_OFF);
 			crtc->fb = NULL;
 		}
 	}

+ 3 - 0
include/drm/drm_crtc_helper.h

@@ -63,6 +63,9 @@ struct drm_crtc_helper_funcs {
 
 	/* reload the current crtc LUT */
 	void (*load_lut)(struct drm_crtc *crtc);
+
+	/* disable crtc when not in use - more explicit than dpms off */
+	void (*disable)(struct drm_crtc *crtc);
 };
 
 struct drm_encoder_helper_funcs {