[PATCH 4/4] drm/radeon/kms/dce4: power up/down eDP panels in dpms function

Alex Deucher alexdeucher at gmail.com
Thu Aug 12 15:58:49 PDT 2010


Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
---
 drivers/gpu/drm/radeon/radeon_encoders.c |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c
index 3d38cba..b497a65 100644
--- a/drivers/gpu/drm/radeon/radeon_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_encoders.c
@@ -1068,6 +1068,9 @@ radeon_atom_encoder_dpms(struct drm_encoder *encoder, int mode)
 			if (atombios_get_encoder_mode(encoder) == ATOM_ENCODER_MODE_DP) {
 				struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
 
+				if (ASIC_IS_DCE4(rdev) &&
+				    (connector->connector_type == DRM_MODE_CONNECTOR_eDP))
+					atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_POWER_ON, 0, 0);
 				dp_link_train(encoder, connector);
 				if (ASIC_IS_DCE4(rdev))
 					atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_ON);
@@ -1078,8 +1081,14 @@ radeon_atom_encoder_dpms(struct drm_encoder *encoder, int mode)
 		case DRM_MODE_DPMS_OFF:
 			atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE_OUTPUT, 0, 0);
 			if (atombios_get_encoder_mode(encoder) == ATOM_ENCODER_MODE_DP) {
-				if (ASIC_IS_DCE4(rdev))
+				if (ASIC_IS_DCE4(rdev)) {
+					struct drm_connector *connector = radeon_get_connector_for_encoder(encoder);
+
 					atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_OFF);
+					if (connector && (connector->connector_type == DRM_MODE_CONNECTOR_eDP))
+						atombios_dig_transmitter_setup(encoder,
+									       ATOM_TRANSMITTER_ACTION_POWER_OFF, 0, 0);
+				}
 			}
 			break;
 		}
-- 
1.7.1.1



More information about the dri-devel mailing list