From mboxrd@z Thu Jan 1 00:00:00 1970 From: bugzilla-daemon@freedesktop.org Subject: [Bug 73530] Asus U38N: Black screen with Radeon driver in Linux Date: Wed, 22 Oct 2014 21:14:20 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0914493648==" Return-path: Received: from culpepper.freedesktop.org (unknown [131.252.210.165]) by gabe.freedesktop.org (Postfix) with ESMTP id 3B9046E38E for ; Wed, 22 Oct 2014 14:14:20 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org --===============0914493648== Content-Type: multipart/alternative; boundary="1414012460.38d1E1.6653"; charset="UTF-8" --1414012460.38d1E1.6653 Date: Wed, 22 Oct 2014 21:14:20 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable https://bugs.freedesktop.org/show_bug.cgi?id=3D73530 --- Comment #65 from Alex Deucher --- (In reply to Christian A=C3=9Ffalg from comment #63) > I think / guess that I am having the same issues. I've got the same lapto= p, > running Arch Linux. Mostly, I've been using the proprietary catalyst driv= er, > since I never got the free driver working. The proprietary is working fin= e. >=20 > What is the issue here? You've been playing with timings for the physical > link to the internal panel? Is it so frickly? What would you need to fix = the > issue? How can I help? In reply to Christian A=C3=9Ffalg from comment #63) > I think / guess that I am having the same issues. I've got the same lapto= p, > running Arch Linux. Mostly, I've been using the proprietary catalyst driv= er, > since I never got the free driver working. The proprietary is working fin= e. >=20 > What is the issue here? You've been playing with timings for the physical > link to the internal panel? Is it so frickly? What would you need to fix = the > issue? How can I help? I suggested that it might be a timing issue, and as per comment 54. Howeve= r, link training is successful so that monitor accepts the parameters that the driver proposed, it just sometimes chooses not to light up. I would suggest trying to tweak the link training timing as per comment 54, try disabling s= s as per comment 6, and finally, try making some slight changes to the modeset sequence as per the attached patch. The patch adds a delay before enabling= the video stream and additionally calls the enable video stream code again in c= ase the monitor didn't quite get the signal the first time. E.g., diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c index a7f2ddf..256ed7d 100644 --- a/drivers/gpu/drm/radeon/atombios_encoders.c +++ b/drivers/gpu/drm/radeon/atombios_encoders.c @@ -1687,8 +1687,12 @@ radeon_atom_encoder_dpms_dig(struct drm_encoder *encoder, int mode) if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) = && connector) { /* DP_SET_POWER_D0 is set in radeon_dp_link_train */ radeon_dp_link_train(encoder, connector); - if (ASIC_IS_DCE4(rdev)) + if (ASIC_IS_DCE4(rdev)) { + udelay(50); atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_ON, 0); + udelay(50); + atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_ON, 0); + } } if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) atombios_dig_transmitter_setup(encoder, Or move the backlight enable before the link training: diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c index a7f2ddf..3bfbfa4 100644 --- a/drivers/gpu/drm/radeon/atombios_encoders.c +++ b/drivers/gpu/drm/radeon/atombios_encoders.c @@ -1682,6 +1682,9 @@ radeon_atom_encoder_dpms_dig(struct drm_encoder *enco= der, int mode) radeon_dig_connector->edp_on =3D true; } } + if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) + atombios_dig_transmitter_setup(encoder, +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20 ATOM_TRANSMITTER_ACTION_LCD_BLON, 0, 0); /* enable the transmitter */ atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0); if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) = && connector) { @@ -1690,9 +1693,6 @@ radeon_atom_encoder_dpms_dig(struct drm_encoder *enco= der, 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_dig_transmitter_setup(encoder, -=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20 ATOM_TRANSMITTER_ACTION_LCD_BLON, 0, 0); if (ext_encoder) atombios_external_encoder_setup(encoder, ext_encode= r, ATOM_ENABLE); break; Or drop the backlight control altogether to see if that helps: diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c index a7f2ddf..9713078 100644 --- a/drivers/gpu/drm/radeon/atombios_encoders.c +++ b/drivers/gpu/drm/radeon/atombios_encoders.c @@ -1690,9 +1690,6 @@ radeon_atom_encoder_dpms_dig(struct drm_encoder *enco= der, 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_dig_transmitter_setup(encoder, -=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20 ATOM_TRANSMITTER_ACTION_LCD_BLON, 0, 0); if (ext_encoder) atombios_external_encoder_setup(encoder, ext_encode= r, ATOM_ENABLE); break; @@ -1705,10 +1702,6 @@ radeon_atom_encoder_dpms_dig(struct drm_encoder *encoder, int mode) } if (ext_encoder) atombios_external_encoder_setup(encoder, ext_encode= r, ATOM_DISABLE); - if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) - atombios_dig_transmitter_setup(encoder, -=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20 ATOM_TRANSMITTER_ACTION_LCD_BLOFF, 0, 0); - if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) = && connector && !travis_quirk) radeon_dp_set_rx_power_state(connector, DP_SET_POWER_D3); --=20 You are receiving this mail because: You are the assignee for the bug. --1414012460.38d1E1.6653 Date: Wed, 22 Oct 2014 21:14:20 +0000 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Commen= t # 65 on bug 73530<= /a> from Alex Deucher
(In reply to Christian A=C3=9Ffalg from comment #63)
> I think / guess that I am having the same issues=
. I've got the same laptop,
> running Arch Linux. Mostly, I've been using the proprietary catalyst d=
river,
> since I never got the free driver working. The proprietary is working =
fine.
>=20
> What is the issue here? You've been playing with timings for the physi=
cal
> link to the internal panel? Is it so frickly? What would you need to f=
ix the
> issue? How can I help?

In reply to Christian A=C3=9Ffalg from comment #63)
> I think / guess that I am having the same issues=
. I've got the same laptop,
> running Arch Linux. Mostly, I've been using the proprietary catalyst d=
river,
> since I never got the free driver working. The proprietary is working =
fine.
>=20
> What is the issue here? You've been playing with timings for the physi=
cal
> link to the internal panel? Is it so frickly? What would you need to f=
ix the
> issue? How can I help?

I suggested that it might be a timing issue, and as per comment 54.  However,
link training is successful so that monitor accepts the parameters that the
driver proposed, it just sometimes chooses not to light up.  I would suggest
trying to tweak the link training timing as per comment 54, try disabling ss as
per comment 6, and finally, try =
making some slight changes to the modeset
sequence as per the attached patch.  The patch adds a delay before enabling=
 the
video stream and additionally calls the enable video stream code again in c=
ase
the monitor didn't quite get the signal the first time.  E.g.,

diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c
b/drivers/gpu/drm/radeon/atombios_encoders.c
index a7f2ddf..256ed7d 100644
--- a/drivers/gpu/drm/radeon/atombios_encoders.c
+++ b/drivers/gpu/drm/radeon/atombios_encoders.c
@@ -1687,8 +1687,12 @@ radeon_atom_encoder_dpms_dig(struct =
drm_encoder
*encoder, int mode)
                if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) =
&&
connector) {
                        /* DP_SET_POWER_D0 is set in radeon_dp_link_train */
                        radeon_dp_link_train(encoder, connector);
-                       if (ASIC_IS_DCE4(rdev))
+                       if (ASIC_IS_DCE4(rdev)) {
+                               udelay(50);
                                atombios_dig_encoder_setup(encoder,
ATOM_ENCODER_CMD_DP_VIDEO_ON, 0);
+                               udelay(50);
+                               atombios_dig_encoder_setup(encoder,
ATOM_ENCODER_CMD_DP_VIDEO_ON, 0);
+                       }
                }
                if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPO=
RT))
                        atombios_dig_transmitter_setup(encoder,

Or move the backlight enable before the link training:
diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c
b/drivers/gpu/drm/radeon/atombios_encoders.c
index a7f2ddf..3bfbfa4 100644
--- a/drivers/gpu/drm/radeon/atombios_encoders.c
+++ b/drivers/gpu/drm/radeon/atombios_encoders.c
@@ -1682,6 +1682,9 @@ radeon_atom_encoder_dpms_dig(struct d=
rm_encoder *encoder,
int mode)
                                radeon_dig_connector->edp_on =3D true;
                        }
                }
+               if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPO=
RT))
+                       atombios_dig_transmitter_setup(encoder,
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20
ATOM_TRANSMITTER_ACTION_LCD_BLON, 0, 0);
                /* enable the transmitter */
                atombios_dig_transmitter_setup(encoder,
ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0);
                if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) =
&&
connector) {
@@ -1690,9 +1693,6 @@ radeon_atom_encoder_dpms_dig(struct d=
rm_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_SUPPO=
RT))
-                       atombios_dig_transmitter_setup(encoder,
-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20
ATOM_TRANSMITTER_ACTION_LCD_BLON, 0, 0);
                if (ext_encoder)
                        atombios_external_encoder_setup(encoder, ext_encode=
r,
ATOM_ENABLE);
                break;

Or drop the backlight control altogether to see if that helps:
diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c
b/drivers/gpu/drm/radeon/atombios_encoders.c
index a7f2ddf..9713078 100644
--- a/drivers/gpu/drm/radeon/atombios_encoders.c
+++ b/drivers/gpu/drm/radeon/atombios_encoders.c
@@ -1690,9 +1690,6 @@ radeon_atom_encoder_dpms_dig(struct d=
rm_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_SUPPO=
RT))
-                       atombios_dig_transmitter_setup(encoder,
-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20
ATOM_TRANSMITTER_ACTION_LCD_BLON, 0, 0);
                if (ext_encoder)
                        atombios_external_encoder_setup(encoder, ext_encode=
r,
ATOM_ENABLE);
                break;
@@ -1705,10 +1702,6 @@ radeon_atom_encoder_dpms_dig(struct =
drm_encoder
*encoder, int mode)
                }
                if (ext_encoder)
                        atombios_external_encoder_setup(encoder, ext_encode=
r,
ATOM_DISABLE);
-               if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPO=
RT))
-                       atombios_dig_transmitter_setup(encoder,
-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20
ATOM_TRANSMITTER_ACTION_LCD_BLOFF, 0, 0);
-
                if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) =
&&
                    connector && !travis_quirk)
                        radeon_dp_set_rx_power_state(connector,
DP_SET_POWER_D3);


You are receiving this mail because: =20=20=20=20=20=20
  • You are the assignee for the bug.
--1414012460.38d1E1.6653-- --===============0914493648== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel --===============0914493648==--