From patchwork Tue Oct 27 15:10:14 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Alex Deucher X-Patchwork-Id: 7497481 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 6EB1B9F327 for ; Tue, 27 Oct 2015 15:10:24 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 57485206CD for ; Tue, 27 Oct 2015 15:10:23 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id A250E2069F for ; Tue, 27 Oct 2015 15:10:19 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 26E1F6E51B; Tue, 27 Oct 2015 08:10:17 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-yk0-f171.google.com (mail-yk0-f171.google.com [209.85.160.171]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5D8486E51B for ; Tue, 27 Oct 2015 08:10:15 -0700 (PDT) Received: by ykba4 with SMTP id a4so215222150ykb.3 for ; Tue, 27 Oct 2015 08:10:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=tk39wkx750UVQGDC/1UmRWbe/HHSv7FkphazZTc8TWU=; b=VfxIKDAczXRcLfJsUrCCwN3hsH+iIlvSD7pyY/bdZlfyxHHS09iaLeDrAuF/BIPHSW YleHHQnvcVNTBoJ15YQ2s8dJku2h/fK15XZpCbR4gA+G0kYUVM4kvoGUpmQqLef25kDW Yt5ENULJnjXVfq8UPyOh03YTF8DICKKgmWWNNdsJDOq0zW32ScrhmHaCikH4av+KfDGO 3+dFeDGi29SK4YXRZvf7TJdDKuLwAhc8QWdKFZAzRCRdxOgBB6XyUp/I/KLQslxAa93e JEeMsjxYmd0scJzoogAolKOkMj7wjfTtPBQAuj3Jg9Yk+FOXSaHuigloQlUU7kJo2RcI mr7A== MIME-Version: 1.0 X-Received: by 10.129.38.214 with SMTP id m205mr29896063ywm.86.1445958614277; Tue, 27 Oct 2015 08:10:14 -0700 (PDT) Received: by 10.37.32.4 with HTTP; Tue, 27 Oct 2015 08:10:14 -0700 (PDT) In-Reply-To: <562F4CAF.1050505@sbg.at> References: <562BDB47.5000301@sbg.at> <562DF333.3070708@daenzer.net> <562E0473.5060404@sbg.at> <562EE34A.9070100@daenzer.net> <562F395C.2080109@sbg.at> <562F411A.60906@daenzer.net> <562F4CAF.1050505@sbg.at> Date: Tue, 27 Oct 2015 11:10:14 -0400 Message-ID: Subject: Re: No backlight since linux-4.2.4 - drivers/gpu/drm/radeon/atombios_encoders.c From: Alex Deucher To: Michael Burian Cc: =?UTF-8?Q?Michel_D=C3=A4nzer?= , "dri-devel@lists.freedesktop.org" X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On Tue, Oct 27, 2015 at 6:06 AM, Michael Burian wrote: > On 10/27/15 10:17, Michel Dänzer wrote: >> >> I'm not familiar with the ATOM bytecode, but since the number of >> bytecode instructions executed seems the same in both cases, I suspect >> that dig->backlight_level == 0 => ATOM_LCD_BLOFF is executed. (The >> debugging output in my patch would have provided all of this information >> and more, but there wasn't any of it in the dmesg you provided) >> >> I guess the question then becomes how dig->backlight_level is (supposed >> to be) initialized. >> >> What values do the following files contain in the broken and working cases? >> >> /sys/class/backlight/radeon_bl0/bl_power >> /sys/class/backlight/radeon_bl0/brightness >> /sys/class/backlight/radeon_bl0/actual_brightness >> /sys/class/backlight/radeon_bl0/max_brightness >> >> > > These files do not exist on my system, > I can offer /sys/class/backlight/acpi_video0/ > > content is identical in both cases > > bl_power 0 > brightness 10 > actual_brightness 10 > max_brightness 10 > > It would appear that your system does not use the gpu backlight controller. Either it's lying or messing with the GPU backlight controller causes some bad interaction with whatever does control it. Does the attached radeon patch help? I'm also attaching an amdgpu patch for reference in case the same problem appears on amdgpu. Alex From e464cc8304fae331537b86f53f49c26854cdff59 Mon Sep 17 00:00:00 2001 From: Alex Deucher Date: Tue, 27 Oct 2015 10:56:44 -0400 Subject: [PATCH 1/2] drm/radeon: fix backlight handling when not controlled by GPU Some systems claim the backlight is not controlled by the GPU but it seems to either actually be controlled by the GPU, or messing with the GPU backlight controls causes some other problem. If the system indicates the GPU does not control the backlight, revert back to the old behavior. Fixes a regression in commit: 4281f46ef839050d2ef60348f661eb463c21cc2e 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 65adb9c..8ce32f9 100644 --- a/drivers/gpu/drm/radeon/atombios_encoders.c +++ b/drivers/gpu/drm/radeon/atombios_encoders.c @@ -1624,9 +1624,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.firmware_flags & ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU) { + 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: @@ -1706,8 +1711,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.firmware_flags & ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU) + 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; -- 1.8.3.1