Jesse Keating 3494df0
From 0b91f360956aa7a5aa8900d358d1bff3020182e0 Mon Sep 17 00:00:00 2001
Jesse Keating 3494df0
From: Ben Skeggs <bskeggs@redhat.com>
Jesse Keating 3494df0
Date: Thu, 1 Jul 2010 12:34:56 +1000
Jesse Keating 3494df0
Subject: [PATCH 1/2] drm: disable encoder rather than dpms off in drm_crtc_prepare_encoders()
Jesse Keating 3494df0
Jesse Keating 3494df0
Original behaviour will be preserved for drivers that don't implement
Jesse Keating 3494df0
disable() hooks for an encoder.
Jesse Keating 3494df0
Jesse Keating 3494df0
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Jesse Keating 3494df0
---
Jesse Keating 3494df0
 drivers/gpu/drm/drm_crtc_helper.c |   22 ++++++++++++++--------
Jesse Keating 3494df0
 1 files changed, 14 insertions(+), 8 deletions(-)
Jesse Keating 3494df0
Jesse Keating 3494df0
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
Jesse Keating 3494df0
index b142ac2..32dae0e 100644
Jesse Keating 3494df0
--- a/drivers/gpu/drm/drm_crtc_helper.c
Jesse Keating 3494df0
+++ b/drivers/gpu/drm/drm_crtc_helper.c
Jesse Keating 3494df0
@@ -201,6 +201,17 @@ bool drm_helper_crtc_in_use(struct drm_crtc *crtc)
Jesse Keating 3494df0
 }
Jesse Keating 3494df0
 EXPORT_SYMBOL(drm_helper_crtc_in_use);
Jesse Keating 3494df0
 
Jesse Keating 3494df0
+static void
Jesse Keating 3494df0
+drm_encoder_disable(struct drm_encoder *encoder)
Jesse Keating 3494df0
+{
Jesse Keating 3494df0
+	struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private;
Jesse Keating 3494df0
+
Jesse Keating 3494df0
+	if (encoder_funcs->disable)
Jesse Keating 3494df0
+		(*encoder_funcs->disable)(encoder);
Jesse Keating 3494df0
+	else
Jesse Keating 3494df0
+		(*encoder_funcs->dpms)(encoder, DRM_MODE_DPMS_OFF);
Jesse Keating 3494df0
+}
Jesse Keating 3494df0
+
Jesse Keating 3494df0
 /**
Jesse Keating 3494df0
  * drm_helper_disable_unused_functions - disable unused objects
Jesse Keating 3494df0
  * @dev: DRM device
Jesse Keating 3494df0
@@ -215,7 +226,6 @@ void drm_helper_disable_unused_functions(struct drm_device *dev)
Jesse Keating 3494df0
 {
Jesse Keating 3494df0
 	struct drm_encoder *encoder;
Jesse Keating 3494df0
 	struct drm_connector *connector;
Jesse Keating 3494df0
-	struct drm_encoder_helper_funcs *encoder_funcs;
Jesse Keating 3494df0
 	struct drm_crtc *crtc;
Jesse Keating 3494df0
 
Jesse Keating 3494df0
 	list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
Jesse Keating 3494df0
@@ -226,12 +236,8 @@ void drm_helper_disable_unused_functions(struct drm_device *dev)
Jesse Keating 3494df0
 	}
Jesse Keating 3494df0
 
Jesse Keating 3494df0
 	list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
Jesse Keating 3494df0
-		encoder_funcs = encoder->helper_private;
Jesse Keating 3494df0
 		if (!drm_helper_encoder_in_use(encoder)) {
Jesse Keating 3494df0
-			if (encoder_funcs->disable)
Jesse Keating 3494df0
-				(*encoder_funcs->disable)(encoder);
Jesse Keating 3494df0
-			else
Jesse Keating 3494df0
-				(*encoder_funcs->dpms)(encoder, DRM_MODE_DPMS_OFF);
Jesse Keating 3494df0
+			drm_encoder_disable(encoder);
Jesse Keating 3494df0
 			/* disconnector encoder from any connector */
Jesse Keating 3494df0
 			encoder->crtc = NULL;
Jesse Keating 3494df0
 		}
Jesse Keating 3494df0
@@ -292,11 +298,11 @@ drm_crtc_prepare_encoders(struct drm_device *dev)
Jesse Keating 3494df0
 		encoder_funcs = encoder->helper_private;
Jesse Keating 3494df0
 		/* Disable unused encoders */
Jesse Keating 3494df0
 		if (encoder->crtc == NULL)
Jesse Keating 3494df0
-			(*encoder_funcs->dpms)(encoder, DRM_MODE_DPMS_OFF);
Jesse Keating 3494df0
+			drm_encoder_disable(encoder);
Jesse Keating 3494df0
 		/* Disable encoders whose CRTC is about to change */
Jesse Keating 3494df0
 		if (encoder_funcs->get_crtc &&
Jesse Keating 3494df0
 		    encoder->crtc != (*encoder_funcs->get_crtc)(encoder))
Jesse Keating 3494df0
-			(*encoder_funcs->dpms)(encoder, DRM_MODE_DPMS_OFF);
Jesse Keating 3494df0
+			drm_encoder_disable(encoder);
Jesse Keating 3494df0
 	}
Jesse Keating 3494df0
 }
Jesse Keating 3494df0
 
Jesse Keating 3494df0
-- 
Jesse Keating 3494df0
1.7.1.1
Jesse Keating 3494df0