From ab175c9e168040f4d54ebc459ead71ec7440e59c Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Nov 05 2015 13:37:25 +0000 Subject: Fix backlight regression on older radeon devices (rhbz 1278407) --- diff --git a/drm-radeon-fix-dpms-when-driver-backlight-control-is.patch b/drm-radeon-fix-dpms-when-driver-backlight-control-is.patch new file mode 100644 index 0000000..ab75971 --- /dev/null +++ b/drm-radeon-fix-dpms-when-driver-backlight-control-is.patch @@ -0,0 +1,62 @@ +From ae93580ee59c02395c1711d3e6b90546b8137b86 Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Tue, 27 Oct 2015 10:56:44 -0400 +Subject: [PATCH 2/2] drm/radeon: fix dpms when driver backlight control is + disabled +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If driver backlight control is disabled, either by driver +parameter or default per-asic setting, revert to the old behavior. + +Fixes a regression in commit: +4281f46ef839050d2ef60348f661eb463c21cc2e + +Reviewed-by: Michel Dänzer +Signed-off-by: Alex Deucher +Cc: stable@vger.kernel.org +--- + drivers/gpu/drm/radeon/atombios_encoders.c | 18 ++++++++++++++---- + 1 file changed, 14 insertions(+), 4 deletions(-) + +diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c +index 933fd1bc849b..bb292143997e 100644 +--- a/drivers/gpu/drm/radeon/atombios_encoders.c ++++ b/drivers/gpu/drm/radeon/atombios_encoders.c +@@ -1625,9 +1625,14 @@ radeon_atom_encoder_dpms_avivo(struct drm_encoder *encoder, int mode) + } else + atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); + if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { +- struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; ++ if (rdev->mode_info.bl_encoder) { ++ struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; + +- atombios_set_backlight_level(radeon_encoder, dig->backlight_level); ++ atombios_set_backlight_level(radeon_encoder, dig->backlight_level); ++ } else { ++ args.ucAction = ATOM_LCD_BLON; ++ atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); ++ } + } + break; + case DRM_MODE_DPMS_STANDBY: +@@ -1707,8 +1712,13 @@ radeon_atom_encoder_dpms_dig(struct drm_encoder *encoder, int mode) + if (ASIC_IS_DCE4(rdev)) + atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_ON, 0); + } +- if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) +- atombios_set_backlight_level(radeon_encoder, dig->backlight_level); ++ if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { ++ if (rdev->mode_info.bl_encoder) ++ atombios_set_backlight_level(radeon_encoder, dig->backlight_level); ++ else ++ atombios_dig_transmitter_setup(encoder, ++ ATOM_TRANSMITTER_ACTION_LCD_BLON, 0, 0); ++ } + if (ext_encoder) + atombios_external_encoder_setup(encoder, ext_encoder, ATOM_ENABLE); + break; +-- +2.4.3 + diff --git a/drm-radeon-move-bl-encoder-assignment-into-bl-init.patch b/drm-radeon-move-bl-encoder-assignment-into-bl-init.patch new file mode 100644 index 0000000..b6cc574 --- /dev/null +++ b/drm-radeon-move-bl-encoder-assignment-into-bl-init.patch @@ -0,0 +1,59 @@ +From 4cee6a9057d5e13911f0cb6e143d11dc1a3245dd Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Wed, 28 Oct 2015 14:26:32 -0400 +Subject: [PATCH 1/2] drm/radeon: move bl encoder assignment into bl init +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +So that the bl encoder will be null if the GPU does not +control the backlight. + +Reviewed-by: Michel Dänzer +Signed-off-by: Alex Deucher +Cc: stable@vger.kernel.org +--- + drivers/gpu/drm/radeon/atombios_encoders.c | 1 + + drivers/gpu/drm/radeon/radeon_encoders.c | 1 - + drivers/gpu/drm/radeon/radeon_legacy_encoders.c | 1 + + 3 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c +index 65adb9c72377..933fd1bc849b 100644 +--- a/drivers/gpu/drm/radeon/atombios_encoders.c ++++ b/drivers/gpu/drm/radeon/atombios_encoders.c +@@ -237,6 +237,7 @@ void radeon_atom_backlight_init(struct radeon_encoder *radeon_encoder, + backlight_update_status(bd); + + DRM_INFO("radeon atom DIG backlight initialized\n"); ++ rdev->mode_info.bl_encoder = radeon_encoder; + + return; + +diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c +index ef99917f000d..c6ee80216cf4 100644 +--- a/drivers/gpu/drm/radeon/radeon_encoders.c ++++ b/drivers/gpu/drm/radeon/radeon_encoders.c +@@ -194,7 +194,6 @@ static void radeon_encoder_add_backlight(struct radeon_encoder *radeon_encoder, + radeon_atom_backlight_init(radeon_encoder, connector); + else + radeon_legacy_backlight_init(radeon_encoder, connector); +- rdev->mode_info.bl_encoder = radeon_encoder; + } + } + +diff --git a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c +index 45715307db71..30de43366eae 100644 +--- a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c ++++ b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c +@@ -441,6 +441,7 @@ void radeon_legacy_backlight_init(struct radeon_encoder *radeon_encoder, + backlight_update_status(bd); + + DRM_INFO("radeon legacy LVDS backlight initialized\n"); ++ rdev->mode_info.bl_encoder = radeon_encoder; + + return; + +-- +2.4.3 + diff --git a/kernel.spec b/kernel.spec index 54d193f..5313a71 100644 --- a/kernel.spec +++ b/kernel.spec @@ -628,6 +628,10 @@ Patch542: 0001-xhci-Add-spurious-wakeup-quirk-for-LynxPoint-LP-cont.patch Patch543: isdn_ppp-Add-checks-for-allocation-failure-in-isdn_p.patch Patch544: ppp-slip-Validate-VJ-compression-slot-parameters-com.patch +#rhbz 1278407 +Patch545: drm-radeon-move-bl-encoder-assignment-into-bl-init.patch +Patch546: drm-radeon-fix-dpms-when-driver-backlight-control-is.patch + # END OF PATCH DEFINITIONS %endif @@ -2072,6 +2076,9 @@ fi # # %changelog +* Thu Nov 05 2015 Josh Boyer +- Fix backlight regression on older radeon devices (rhbz 1278407) + * Wed Nov 4 2015 Peter Robinson - Enable some IIO sensors (temp/humidity) on ARMv7