diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2011-01-06 21:19:20 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-01-06 23:11:27 -0500 |
commit | d07f4e83506712f31ad661415ea28d536a70a939 (patch) | |
tree | 4fd6cb57b54a4f0f18301812562da9ca76daf60a /drivers/gpu/drm | |
parent | 69c74525c26a1b71116d9bd3a136bf1314a3e8cd (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.c | 16 |
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: |