From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Michel_D=c3=a4nzer?= Subject: Re: No backlight since linux-4.2.4 - drivers/gpu/drm/radeon/atombios_encoders.c Date: Mon, 26 Oct 2015 18:32:35 +0900 Message-ID: <562DF333.3070708@daenzer.net> References: <562BDB47.5000301@sbg.at> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------030505040709090405040802" Return-path: Received: from mail.gna.ch (darkcity.gna.ch [195.226.6.51]) by gabe.freedesktop.org (Postfix) with ESMTP id B78556E8AF for ; Mon, 26 Oct 2015 02:32:39 -0700 (PDT) In-Reply-To: <562BDB47.5000301@sbg.at> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Michael Burian , Alex Deucher Cc: "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org This is a multi-part message in MIME format. --------------030505040709090405040802 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 25.10.2015 04:25, Michael Burian wrote: > hi, >=20 > after updating the kernel from linux-stable[0] v4.2.3 to v4.2.4 on my > hp compaq nx9420 laptop (Debian Jessie, amd64), the backlight is turned= off > within the first couple of seconds during boot. >=20 > The situation persists (Xorg seems to be running fine, icons can be rec= ognized > by illuminating the screen with a flashlight) until reboot using an ear= lier > kernel. >=20 > current mainline[1] as of now (4.3.0-rc6-00277-g01815536) is also affec= ted >=20 > Workaround: use earlier kernel (v4.2.3) or (see below) >=20 > Hardware: >=20 > lspci | grep adeo > 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/AT= I] RV530/M56-P [Mobility Radeon X1600] >=20 > git bisect log > # bad: [190bd21bba09ed476d9359d3e8be20e8d9dcd8a4] Linux 4.2.4 > # good: [fcba09f2b0bf27eeaa1d4d439edb649585f35040] Linux 4.2.3 > git bisect start 'v4.2.4' 'v4.2.3' 'drivers/gpu/' > # good: [885838eef785ff810dac945be8132856f2113cf1] drm/amdgpu: make UVD= handle checking more strict > git bisect good 885838eef785ff810dac945be8132856f2113cf1 > # good: [230f6fd628c83fcb44ea364d69a9ad88826ef8c4] drm/i915/bios: handl= e MIPI Sequence Block v3+ gracefully > git bisect good 230f6fd628c83fcb44ea364d69a9ad88826ef8c4 > # bad: [5a633828b4b2bef343826afcb0a70770c4911c55] drm/radeon: Restore L= CD backlight level on resume (>=3D R5xx) > git bisect bad 5a633828b4b2bef343826afcb0a70770c4911c55 > # good: [60a09aef456ef590762d47da9c25650e230e2f85] drm: Reject DRI1 hw = lock ioctl functions for kms drivers > git bisect good 60a09aef456ef590762d47da9c25650e230e2f85 > # first bad commit: [5a633828b4b2bef343826afcb0a70770c4911c55] drm/rade= on: Restore LCD backlight level on resume (>=3D R5xx) >=20 > Workaround 2: >=20 > reverting this single commit 5a633828b4b2bef343826afcb0a70770c4911c55 f= ixes the problem in linux-stable[0] > as well as mainline[1] 4.3.0-rc6-00277-g01815536 Please provide the dmesg output from running with the attached debugging patch. Alex, any other ideas what might go wrong? --=20 Earthling Michel D=C3=A4nzer | http://www.amd= .com Libre software enthusiast | Mesa and X developer --------------030505040709090405040802 Content-Type: text/x-patch; name="radeon-bl-debug.diff" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="radeon-bl-debug.diff" diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm= /radeon/atombios_encoders.c index 65adb9c..31be81e 100644 --- a/drivers/gpu/drm/radeon/atombios_encoders.c +++ b/drivers/gpu/drm/radeon/atombios_encoders.c @@ -77,9 +77,12 @@ atombios_get_backlight_level(struct radeon_encoder *ra= deon_encoder) struct drm_device *dev =3D radeon_encoder->base.dev; struct radeon_device *rdev =3D dev->dev_private; =20 - if (!(rdev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTROLLED_BY_= GPU)) + if (WARN_ON(!(rdev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTRO= LLED_BY_GPU))) return 0; =20 + DRM_INFO("Backlight controlled by GPU, current level %u\n", + radeon_atom_get_backlight_level_from_reg(rdev)); + return radeon_atom_get_backlight_level_from_reg(rdev); } =20 @@ -93,7 +96,7 @@ atombios_set_backlight_level(struct radeon_encoder *rad= eon_encoder, u8 level) DISPLAY_DEVICE_OUTPUT_CONTROL_PS_ALLOCATION args; int index; =20 - if (!(rdev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTROLLED_BY_= GPU)) + if (WARN_ON(!(rdev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTRO= LLED_BY_GPU))) return; =20 if ((radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) && @@ -105,6 +108,7 @@ atombios_set_backlight_level(struct radeon_encoder *r= adeon_encoder, u8 level) switch (radeon_encoder->encoder_id) { case ENCODER_OBJECT_ID_INTERNAL_LVDS: case ENCODER_OBJECT_ID_INTERNAL_LVTM1: + DRM_INFO("Setting LVDS backlight level to %u\n", level); index =3D GetIndexIntoMasterTable(COMMAND, LCD1OutputControl); if (dig->backlight_level =3D=3D 0) { args.ucAction =3D ATOM_LCD_BLOFF; @@ -120,6 +124,7 @@ atombios_set_backlight_level(struct radeon_encoder *r= adeon_encoder, u8 level) case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA: case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: + DRM_INFO("Setting UNIPHY backlight level to %u\n", level); if (dig->backlight_level =3D=3D 0) atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_LCD_= BLOFF, 0, 0); else { @@ -199,7 +204,7 @@ void radeon_atom_backlight_init(struct radeon_encoder= *radeon_encoder, if (!rdev->is_atom_bios) return; =20 - if (!(rdev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTROLLED_BY_= GPU)) + if (WARN_ON(!(rdev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTRO= LLED_BY_GPU))) return; =20 pdata =3D kmalloc(sizeof(struct radeon_backlight_privdata), GFP_KERNEL)= ; --------------030505040709090405040802 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK --------------030505040709090405040802--