Bug 38585 - [SNB LVDS] Random line appears on screen during driver initialization on specific panel
Summary: [SNB LVDS] Random line appears on screen during driver initialization on spec...
Status: CLOSED NOTOURBUG
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/Intel (show other bugs)
Version: unspecified
Hardware: x86 (IA32) Linux (All)
: low critical
Assignee: Chris Wilson
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-06-22 20:08 UTC by Rick Bramley
Modified: 2017-07-24 23:04 UTC (History)
3 users (show)

See Also:
i915 platform:
i915 features:


Attachments
Signal abnormalities (701.91 KB, application/vnd.openxmlformats-officedocument.wordprocessingml.document)
2011-06-22 20:08 UTC, Rick Bramley
no flags Details
intel_reg_dump with driver (11.06 KB, text/plain)
2011-07-01 09:38 UTC, Rick Bramley
no flags Details
intel_reg_dump without the driver (11.08 KB, text/plain)
2011-07-01 09:38 UTC, Rick Bramley
no flags Details

Description Rick Bramley 2011-06-22 20:08:12 UTC
Created attachment 48315 [details]
Signal abnormalities

On a specific panel we have seen a random line drawn consistently on the screen during driver initialization.   The panel team has analysed the problem and found abnormalities in the way some of the signals are being driven to the panel (see attachment for specifics).

They indicate that if VCC is high then DE should not be off.

They also indicate that there should be a 200ms window between DE and BL_EN according to the power on spec.
Comment 1 Rick Bramley 2011-06-22 20:17:19 UTC
We have also seen screen corruption on this panel when using sequences like

   xset dpms force off
   xset dpms force on

figured I'd mention it in case it was related (using suspend instead of off seems to prevent the corruption).
Comment 2 Chris Wilson 2011-06-23 05:47:45 UTC
From the presentation of this bug, I presume this to be a hardware issue manifest in the signalling. When you say a specific panel do you mean one and only panel shows this issue during boot, or is it a class of panels? Is the bug visible only during initialisation or does it persist for the lifetime of the driver and for all modes?

We should verify that the modesetting registers appear sane. Can you please run intel_reg_dumper with and without (or using nomodeset) the i915.ko driver loaded?
Comment 3 Rick Bramley 2011-06-23 06:26:36 UTC
Currently it is one specific model of panel that demonstrates the symptom.  The random line is only visible during initialization (although I wonder if the screen corruption during the xset sequences is just a different symptom).

I'll request the data and upload it as soon as I get it.
Comment 4 Rick Bramley 2011-07-01 09:38:05 UTC
Created attachment 48655 [details]
intel_reg_dump with driver
Comment 5 Rick Bramley 2011-07-01 09:38:33 UTC
Created attachment 48656 [details]
intel_reg_dump without the driver
Comment 6 Rick Bramley 2011-07-01 09:39:21 UTC
Sorry for the delay - I've attached the register dumps
Comment 7 Chris Wilson 2011-07-08 03:10:01 UTC
There are two important differences between the BIOS and our driver.

1. The BIOS uses a high-power 4x FDI link mode (we use just 1 channel).
2. The BIOS disables non-spread source (which we enable).

We can override the number of lanes to use with:

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_d
index e375500..df95b4b 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5166,6 +5166,7 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
                lane = bps / (link_bw * 8) + 1;
        }
 
+       lane = 4;
        intel_crtc->fdi_lanes = lane;
 
        if (pixel_multiplier > 1)

and disable the non-spread source with:

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_d
index e375500..434b78f 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5181,7 +5181,7 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
        temp = I915_READ(PCH_DREF_CONTROL);
        /* Always enable nonspread source */
        temp &= ~DREF_NONSPREAD_SOURCE_MASK;
-       temp |= DREF_NONSPREAD_SOURCE_ENABLE;
+       //temp |= DREF_NONSPREAD_SOURCE_ENABLE;
        temp &= ~DREF_SSC_SOURCE_MASK;
        temp |= DREF_SSC_SOURCE_ENABLE;
        I915_WRITE(PCH_DREF_CONTROL, temp);

Rick, can you please test both of those separately and together on the off-chance they explain the discrepancy?
Comment 8 Rick Bramley 2011-07-08 06:15:15 UTC
Thanks Chris - will do.
Comment 9 Chris Wilson 2011-07-18 07:55:23 UTC
Dropping priority whilst investigations continue (not going to be fixed by tomorrow!)
Comment 10 Rick Bramley 2011-07-18 10:21:37 UTC
Thanks - sorry it's taking so long - I don't have these machines that exhibit the problem and getting someone else to run the test it taking longer than expected.
Comment 11 Rick Bramley 2011-09-21 08:07:56 UTC
Hi Guys, unfortunately I've been unsuccessfully at getting these tests run on the system that exhibits the problem.   At this point I'd suggest the bug just get closed with the appropriate state.
Comment 12 Chris Wilson 2011-09-21 08:53:39 UTC
I can't think of a reason why we would trick the hardware into behaving outside of its spec, so I'm voting that this is someone else's bug. (Feel free to reopen if we can identify the [root] cause.)


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.