aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2011-01-06 21:19:20 -0500
committerDave Airlie <airlied@redhat.com>2011-01-06 23:11:27 -0500
commitd07f4e83506712f31ad661415ea28d536a70a939 (patch)
tree4fd6cb57b54a4f0f18301812562da9ca76daf60a /drivers/gpu/drm
parent69c74525c26a1b71116d9bd3a136bf1314a3e8cd (diff)
drm/radeon/kms: dvo dpms updates for DCE5
The DVOOutputControl table was removed for DCE5. DVOEncoderControl now handles everything. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/radeon/radeon_encoders.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c
index 2e1d720fca06..3866c648423b 100644
--- a/drivers/gpu/drm/radeon/radeon_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_encoders.c
@@ -1228,6 +1228,7 @@ radeon_atom_encoder_dpms(struct drm_encoder *encoder, int mode)
1228 int index = 0; 1228 int index = 0;
1229 bool is_dig = false; 1229 bool is_dig = false;
1230 bool is_dce5_dac = false; 1230 bool is_dce5_dac = false;
1231 bool is_dce5_dvo = false;
1231 1232
1232 memset(&args, 0, sizeof(args)); 1233 memset(&args, 0, sizeof(args));
1233 1234
@@ -1250,7 +1251,9 @@ radeon_atom_encoder_dpms(struct drm_encoder *encoder, int mode)
1250 index = GetIndexIntoMasterTable(COMMAND, DVOOutputControl); 1251 index = GetIndexIntoMasterTable(COMMAND, DVOOutputControl);
1251 break; 1252 break;
1252 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1: 1253 case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
1253 if (ASIC_IS_DCE3(rdev)) 1254 if (ASIC_IS_DCE5(rdev))
1255 is_dce5_dvo = true;
1256 else if (ASIC_IS_DCE3(rdev))
1254 is_dig = true; 1257 is_dig = true;
1255 else 1258 else
1256 index = GetIndexIntoMasterTable(COMMAND, DVOOutputControl); 1259 index = GetIndexIntoMasterTable(COMMAND, DVOOutputControl);
@@ -1345,6 +1348,17 @@ radeon_atom_encoder_dpms(struct drm_encoder *encoder, int mode)
1345 atombios_dac_setup(encoder, ATOM_DISABLE); 1348 atombios_dac_setup(encoder, ATOM_DISABLE);
1346 break; 1349 break;
1347 } 1350 }
1351 } else if (is_dce5_dvo) {
1352 switch (mode) {
1353 case DRM_MODE_DPMS_ON:
1354 atombios_dvo_setup(encoder, ATOM_ENABLE);
1355 break;
1356 case DRM_MODE_DPMS_STANDBY:
1357 case DRM_MODE_DPMS_SUSPEND:
1358 case DRM_MODE_DPMS_OFF:
1359 atombios_dvo_setup(encoder, ATOM_DISABLE);
1360 break;
1361 }
1348 } else { 1362 } else {
1349 switch (mode) { 1363 switch (mode) {
1350 case DRM_MODE_DPMS_ON: 1364 case DRM_MODE_DPMS_ON: