aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2010-11-16 12:09:39 -0500
committerDave Airlie <airlied@redhat.com>2010-11-17 23:56:14 -0500
commitba251bde9ab8bdce8fbd3f60dbb71b36cc4c9adf (patch)
tree08927d0b3df2960e30331db408ab3b2f3657577c /drivers/gpu/drm/radeon
parentd33ef52d9db8a36900dd53f2e32db9a521ace259 (diff)
drm/radeon/kms: turn the backlight off explicitly for dpms
Seems some newer systems require this explicitly. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon')
-rw-r--r--drivers/gpu/drm/radeon/radeon_encoders.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c
index f678257c42e6..d55cb58283a9 100644
--- a/drivers/gpu/drm/radeon/radeon_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_encoders.c
@@ -1086,6 +1086,8 @@ radeon_atom_encoder_dpms(struct drm_encoder *encoder, int mode)
1086 if (ASIC_IS_DCE4(rdev)) 1086 if (ASIC_IS_DCE4(rdev))
1087 atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_ON); 1087 atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_ON);
1088 } 1088 }
1089 if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT))
1090 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_LCD_BLON, 0, 0);
1089 break; 1091 break;
1090 case DRM_MODE_DPMS_STANDBY: 1092 case DRM_MODE_DPMS_STANDBY:
1091 case DRM_MODE_DPMS_SUSPEND: 1093 case DRM_MODE_DPMS_SUSPEND:
@@ -1095,20 +1097,31 @@ radeon_atom_encoder_dpms(struct drm_encoder *encoder, int mode)
1095 if (ASIC_IS_DCE4(rdev)) 1097 if (ASIC_IS_DCE4(rdev))
1096 atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_OFF); 1098 atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_OFF);
1097 } 1099 }
1100 if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT))
1101 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_LCD_BLOFF, 0, 0);
1098 break; 1102 break;
1099 } 1103 }
1100 } else { 1104 } else {
1101 switch (mode) { 1105 switch (mode) {
1102 case DRM_MODE_DPMS_ON: 1106 case DRM_MODE_DPMS_ON:
1103 args.ucAction = ATOM_ENABLE; 1107 args.ucAction = ATOM_ENABLE;
1108 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
1109 if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) {
1110 args.ucAction = ATOM_LCD_BLON;
1111 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
1112 }
1104 break; 1113 break;
1105 case DRM_MODE_DPMS_STANDBY: 1114 case DRM_MODE_DPMS_STANDBY:
1106 case DRM_MODE_DPMS_SUSPEND: 1115 case DRM_MODE_DPMS_SUSPEND:
1107 case DRM_MODE_DPMS_OFF: 1116 case DRM_MODE_DPMS_OFF:
1108 args.ucAction = ATOM_DISABLE; 1117 args.ucAction = ATOM_DISABLE;
1118 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
1119 if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) {
1120 args.ucAction = ATOM_LCD_BLOFF;
1121 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
1122 }
1109 break; 1123 break;
1110 } 1124 }
1111 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
1112 } 1125 }
1113 radeon_atombios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false); 1126 radeon_atombios_encoder_dpms_scratch_regs(encoder, (mode == DRM_MODE_DPMS_ON) ? true : false);
1114 1127