Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/radeon: Restore LCD backlight level on resume (>= R5xx)

Instead of only enabling the backlight (which seems to set it to max
brightness), just re-set the current backlight level, which also takes
care of enabling the backlight if necessary.

Only the radeon_atom_encoder_dpms_dig part tested on a Kaveri laptop,
the radeon_atom_encoder_dpms_avivo part is only compile tested.

Cc: stable@vger.kernel.org
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Michel Dänzer and committed by
Alex Deucher
4281f46e 54313503

+4 -4
+4 -4
drivers/gpu/drm/radeon/atombios_encoders.c
··· 1624 1624 } else 1625 1625 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); 1626 1626 if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { 1627 - args.ucAction = ATOM_LCD_BLON; 1628 - atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); 1627 + struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; 1628 + 1629 + atombios_set_backlight_level(radeon_encoder, dig->backlight_level); 1629 1630 } 1630 1631 break; 1631 1632 case DRM_MODE_DPMS_STANDBY: ··· 1707 1706 atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_ON, 0); 1708 1707 } 1709 1708 if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) 1710 - atombios_dig_transmitter_setup(encoder, 1711 - ATOM_TRANSMITTER_ACTION_LCD_BLON, 0, 0); 1709 + atombios_set_backlight_level(radeon_encoder, dig->backlight_level); 1712 1710 if (ext_encoder) 1713 1711 atombios_external_encoder_setup(encoder, ext_encoder, ATOM_ENABLE); 1714 1712 break;