This is a note to let you know that I've just added the patch titled drm/radeon/dce8: workaround for atom BlankCrtc table to the 3.12-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: drm-radeon-dce8-workaround-for-atom-blankcrtc-table.patch and it can be found in the queue-3.12 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 78fe9e545ce6d510b979dc2d8e14096a279fc519 Mon Sep 17 00:00:00 2001 From: Alex Deucher <alexander.deucher@xxxxxxx> Date: Tue, 28 Jan 2014 23:49:37 -0500 Subject: drm/radeon/dce8: workaround for atom BlankCrtc table From: Alex Deucher <alexander.deucher@xxxxxxx> commit 78fe9e545ce6d510b979dc2d8e14096a279fc519 upstream. Some DCE8 boards have a funky BlankCrtc table that results in a timeout when trying to blank the display. The timeout is harmless (all operations needed from the table are complete), but wastes time and is confusing to users so work around it. bug: https://bugs.freedesktop.org/show_bug.cgi?id=73420 Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/gpu/drm/radeon/atombios_crtc.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) --- a/drivers/gpu/drm/radeon/atombios_crtc.c +++ b/drivers/gpu/drm/radeon/atombios_crtc.c @@ -209,6 +209,16 @@ static void atombios_enable_crtc_memreq( atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); } +static const u32 vga_control_regs[6] = +{ + AVIVO_D1VGA_CONTROL, + AVIVO_D2VGA_CONTROL, + EVERGREEN_D3VGA_CONTROL, + EVERGREEN_D4VGA_CONTROL, + EVERGREEN_D5VGA_CONTROL, + EVERGREEN_D6VGA_CONTROL, +}; + static void atombios_blank_crtc(struct drm_crtc *crtc, int state) { struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); @@ -216,13 +226,23 @@ static void atombios_blank_crtc(struct d struct radeon_device *rdev = dev->dev_private; int index = GetIndexIntoMasterTable(COMMAND, BlankCRTC); BLANK_CRTC_PS_ALLOCATION args; + u32 vga_control = 0; memset(&args, 0, sizeof(args)); + if (ASIC_IS_DCE8(rdev)) { + vga_control = RREG32(vga_control_regs[radeon_crtc->crtc_id]); + WREG32(vga_control_regs[radeon_crtc->crtc_id], vga_control | 1); + } + args.ucCRTC = radeon_crtc->crtc_id; args.ucBlanking = state; atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); + + if (ASIC_IS_DCE8(rdev)) { + WREG32(vga_control_regs[radeon_crtc->crtc_id], vga_control); + } } static void atombios_powergate_crtc(struct drm_crtc *crtc, int state) Patches currently in stable-queue which might be from alexander.deucher@xxxxxxx are queue-3.12/drm-radeon-skip-colorbuffer-checking-if-color_info.format-is-set-to-invalid.patch queue-3.12/drm-radeon-dce4-clear-bios-scratch-dpms-bit-v2.patch queue-3.12/drm-radeon-warn-users-when-hw_i2c-is-enabled-v2.patch queue-3.12/drm-radeon-add-uvd-support-for-oland.patch queue-3.12/drm-radeon-dce8-workaround-for-atom-blankcrtc-table.patch queue-3.12/radeon-pm-guard-access-to-rdev-pm.power_state-array.patch queue-3.12/drm-radeon-fix-surface-sync-in-fence-on-cayman-v2.patch queue-3.12/drm-radeon-set-the-full-cache-bit-for-fences-on-r7xx.patch queue-3.12/drm-radeon-fix-dac-interrupt-handling-on-dce5.patch queue-3.12/drm-radeon-disable-ss-on-dp-for-dce3.x.patch queue-3.12/drm-radeon-dpm-disable-mclk-switching-on-desktop-rv770.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html