]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/3.5.1/drm-radeon-fix-dpms-on-off-on-trinity-aruba-v2.patch
4.9-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 3.5.1 / drm-radeon-fix-dpms-on-off-on-trinity-aruba-v2.patch
CommitLineData
1019bcad
GKH
1From fcedac670c3da0d17aaa5db1708694971e8024a9 Mon Sep 17 00:00:00 2001
2From: Jerome Glisse <jglisse@redhat.com>
3Date: Tue, 24 Jul 2012 17:06:11 -0400
4Subject: drm/radeon: fix dpms on/off on trinity/aruba v2
5
6From: Jerome Glisse <jglisse@redhat.com>
7
8commit fcedac670c3da0d17aaa5db1708694971e8024a9 upstream.
9
10The external encoder need to be setup again before enabling the
11transmiter. This seems to be only needed on some trinity/aruba
12to fix dpms on.
13
14v2: Add comment, only setup again on dce6 ie aruba or newer.
15
16Signed-off-by: Jerome Glisse <jglisse@redhat.com>
17Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
18Signed-off-by: Dave Airlie <airlied@redhat.com>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20
21---
22 drivers/gpu/drm/radeon/atombios_encoders.c | 12 ++++++++++--
23 1 file changed, 10 insertions(+), 2 deletions(-)
24
25--- a/drivers/gpu/drm/radeon/atombios_encoders.c
26+++ b/drivers/gpu/drm/radeon/atombios_encoders.c
27@@ -1392,10 +1392,18 @@ radeon_atom_encoder_dpms_dig(struct drm_
28 case DRM_MODE_DPMS_ON:
29 /* some early dce3.2 boards have a bug in their transmitter control table */
30 if ((rdev->family == CHIP_RV710) || (rdev->family == CHIP_RV730) ||
31- ASIC_IS_DCE41(rdev) || ASIC_IS_DCE5(rdev))
32+ ASIC_IS_DCE41(rdev) || ASIC_IS_DCE5(rdev)) {
33+ if (ASIC_IS_DCE6(rdev)) {
34+ /* It seems we need to call ATOM_ENCODER_CMD_SETUP again
35+ * before reenabling encoder on DPMS ON, otherwise we never
36+ * get picture
37+ */
38+ atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_SETUP, 0);
39+ }
40 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0);
41- else
42+ } else {
43 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE_OUTPUT, 0, 0);
44+ }
45 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) {
46 if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) {
47 atombios_set_edp_panel_power(connector,