From patchwork Wed Oct 28 19:03:44 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Alex Deucher X-Patchwork-Id: 7513721 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 5EC019F399 for ; Wed, 28 Oct 2015 19:03:55 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id AB807206AC for ; Wed, 28 Oct 2015 19:03:49 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 39776206A7 for ; Wed, 28 Oct 2015 19:03:48 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 423736E340; Wed, 28 Oct 2015 12:03:47 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-yk0-f177.google.com (mail-yk0-f177.google.com [209.85.160.177]) by gabe.freedesktop.org (Postfix) with ESMTPS id 122FF6E340 for ; Wed, 28 Oct 2015 12:03:45 -0700 (PDT) Received: by ykek133 with SMTP id k133so18510927yke.2 for ; Wed, 28 Oct 2015 12:03:44 -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=28IHTbkHlfG/YOsAlZd69MUGRLTMeXfWIQgx2J4uWTc=; b=qPZck9cUJL9WbA2JHFEKpcNV736Dml+KjNbHXBKmDQ08husauRvLEBm0lOY0knCnwf hfii5I2j4xoFndVxQIuFW6XFymL1DTUvFQKQgP5H58hpSZMedZYWmgQk/fzGtWLWL1/E 2vXnqFudnhloxPPJKoJe0CHovl9BTLIVYM6ctO09ch55ZSMKUzPkeMMJTh0wfN4ClGUd oeXmXk8DyoyDQwji6QExOJVr57ZhfjtkQOxdpWdCb6KhpQv2oNQgm/q9m3GyzkCZFkRR 6JAwhz9DBxluxoJiTP2rqNWdPhbV1AEGfKf7AbTtODmoXGe5wwftLH4ClNw56EbeX+Ld GGpg== MIME-Version: 1.0 X-Received: by 10.129.152.145 with SMTP id p139mr36425055ywg.31.1446059024229; Wed, 28 Oct 2015 12:03:44 -0700 (PDT) Received: by 10.37.32.4 with HTTP; Wed, 28 Oct 2015 12:03:44 -0700 (PDT) In-Reply-To: <5630752F.1040101@daenzer.net> 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> <562FA519.602@sbg.at> <5630752F.1040101@daenzer.net> Date: Wed, 28 Oct 2015 15:03:44 -0400 Message-ID: Subject: Re: No backlight since linux-4.2.4 - drivers/gpu/drm/radeon/atombios_encoders.c From: Alex Deucher To: =?UTF-8?Q?Michel_D=C3=A4nzer?= Cc: Michael Burian , "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 Wed, Oct 28, 2015 at 3:11 AM, Michel Dänzer wrote: > On 28.10.2015 01:43, Alex Deucher wrote: >> On Tue, Oct 27, 2015 at 12:23 PM, Michael Burian wrote: >>> On 10/27/15 16:10, Alex Deucher wrote: >>> >>>> >>>> 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. >>>> >>> >>> no, still no backlight when applied against current current mainline >>> >>> 858e904bd71dd0057a548d6785d94ce5ec4aeabd (Merge tag 'iommu-fixes-v4.3-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu) >>> >> >> I see the problem. We don't enable native backlight control on older >> asics like yours by default. Does the attached patch help? > > My only doubt about this patch is: Should we also fall back to the old > beahviour in the !(rdev->mode_info.firmware_flags & > ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU) case? Theoretically, it's not necessary, but I guess better safe than sorry. Updated patches attached. Alex Reviewed-by: Michel Dänzer From 618bc51b0931376786d5da8a0c600b4c73416b1c 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 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 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 933fd1b..bb29214 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; -- 1.8.3.1