From: Greg Kroah-Hartman Date: Fri, 27 Sep 2013 22:48:03 +0000 (-0700) Subject: 3.4-stable patches X-Git-Tag: v3.0.98~19 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1684cd7473e0c357ee45c4410ee2adcf2ec964d2;p=thirdparty%2Fkernel%2Fstable-queue.git 3.4-stable patches added patches: drm-radeon-atom-workaround-vbios-bug-in-transmitter-table-on-rs880-v2.patch --- diff --git a/queue-3.4/drm-radeon-atom-workaround-vbios-bug-in-transmitter-table-on-rs880-v2.patch b/queue-3.4/drm-radeon-atom-workaround-vbios-bug-in-transmitter-table-on-rs880-v2.patch new file mode 100644 index 00000000000..df6b82b37a3 --- /dev/null +++ b/queue-3.4/drm-radeon-atom-workaround-vbios-bug-in-transmitter-table-on-rs880-v2.patch @@ -0,0 +1,51 @@ +From 91f3a6aaf280294b07c05dfe606e6c27b7ba3c72 Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Mon, 9 Sep 2013 10:54:22 -0400 +Subject: drm/radeon/atom: workaround vbios bug in transmitter table on rs880 (v2) + +From: Alex Deucher + +commit 91f3a6aaf280294b07c05dfe606e6c27b7ba3c72 upstream. + +The OUTPUT_ENABLE action jumps past the point in the coder where +the data_offset is set on certain rs780 cards. This worked +previously because the OUTPUT_ENABLE action is always called +immediately after the ENABLE action so the data_offset remained +set. In 6f8bbaf568c7f2c497558bfd04654c0b9841ad57 +(drm/radeon/atom: initialize more atom interpretor elements to 0), +we explictly reset data_offset to 0 between atom calls which then +caused this to fail. The fix is to just skip calling the +OUTPUT_ENABLE action on the problematic chipsets. The ENABLE +action does the same thing and more. Ultimately, we could +probably drop the OUTPUT_ENABLE action all together on DCE3 +asics. + +fixes: +https://bugzilla.kernel.org/show_bug.cgi?id=60791 + +v2: only rs880 seems to be affected + +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/atombios_encoders.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +--- a/drivers/gpu/drm/radeon/atombios_encoders.c ++++ b/drivers/gpu/drm/radeon/atombios_encoders.c +@@ -1425,8 +1425,12 @@ radeon_atom_encoder_dpms_dig(struct drm_ + atombios_dig_encoder_setup(encoder, ATOM_ENABLE, 0); + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_SETUP, 0, 0); + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0); +- /* some early dce3.2 boards have a bug in their transmitter control table */ +- if ((rdev->family != CHIP_RV710) && (rdev->family != CHIP_RV730)) ++ /* some dce3.x boards have a bug in their transmitter control table. ++ * ACTION_ENABLE_OUTPUT can probably be dropped since ACTION_ENABLE ++ * does the same thing and more. ++ */ ++ if ((rdev->family != CHIP_RV710) && (rdev->family != CHIP_RV730) && ++ (rdev->family != CHIP_RS880)) + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE_OUTPUT, 0, 0); + } + if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) { diff --git a/queue-3.4/series b/queue-3.4/series index 5cc2f6214f0..a43cfb18184 100644 --- a/queue-3.4/series +++ b/queue-3.4/series @@ -12,3 +12,4 @@ drm-radeon-update-line-buffer-allocation-for-dce4.1-5.patch drm-radeon-update-line-buffer-allocation-for-dce6.patch drm-radeon-fix-resume-on-some-rs4xx-boards-v2.patch drm-radeon-fix-handling-of-variable-sized-arrays-for-router-objects.patch +drm-radeon-atom-workaround-vbios-bug-in-transmitter-table-on-rs880-v2.patch