diff options
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_encoders.c | 15 |
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 | ||