Message ID | 1350854789-10535-1-git-send-email-daniel.vetter@ffwll.ch (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sun, Oct 21, 2012 at 11:26:29PM +0200, Daniel Vetter wrote: > The bit doesn't stick, and the output is always cloned from pipe A, > even when it's supposed to scan out from pipe B. > > Shuts up annoying warnings from the modeset-rework, too. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=51265 > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Note that this also fixes spurious VGA detection, since load-detect tried to use pipe B (since pipe A was already occupied by the lvds output), but in reality used pipe A and so wrongfully concluded that something is connected to the VGA port. Now we simply get an unknown state since we can't find any load detect pipe. But if we manually move the LVDS to pipe B it works correctly. -Daniel > --- > drivers/gpu/drm/i915/intel_crt.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c > index c42b980..b3e20aa 100644 > --- a/drivers/gpu/drm/i915/intel_crt.c > +++ b/drivers/gpu/drm/i915/intel_crt.c > @@ -743,7 +743,7 @@ void intel_crt_init(struct drm_device *dev) > > crt->base.type = INTEL_OUTPUT_ANALOG; > crt->base.cloneable = true; > - if (IS_HASWELL(dev)) > + if (IS_HASWELL(dev) || IS_I830(dev)) > crt->base.crtc_mask = (1 << 0); > else > crt->base.crtc_mask = (1 << 0) | (1 << 1) | (1 << 2); > -- > 1.7.11.4 >
On Sun, 21 Oct 2012 23:26:29 +0200, Daniel Vetter <daniel.vetter@ffwll.ch> wrote: > The bit doesn't stick, and the output is always cloned from pipe A, > even when it's supposed to scan out from pipe B. > > Shuts up annoying warnings from the modeset-rework, too. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=51265 > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Tbh this doesn't surprise me that much, it wasn't until 855gm that attaching a second display and using an extended desktop became a selling point. I haven't spotted any such limitations form the docs yet, but xxtensive error reporting ftw, Acked-by: Chris Wilson <chris@chris-wilson.co.uk> -Chris
On Tue, Oct 23, 2012 at 10:49:23AM +0100, Chris Wilson wrote: > On Sun, 21 Oct 2012 23:26:29 +0200, Daniel Vetter <daniel.vetter@ffwll.ch> wrote: > > The bit doesn't stick, and the output is always cloned from pipe A, > > even when it's supposed to scan out from pipe B. > > > > Shuts up annoying warnings from the modeset-rework, too. > > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=51265 > > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> > > Tbh this doesn't surprise me that much, it wasn't until 855gm that > attaching a second display and using an extended desktop became a > selling point. I haven't spotted any such limitations form the docs yet, > but xxtensive error reporting ftw, > > Acked-by: Chris Wilson <chris@chris-wilson.co.uk> I've noticed that with this patch we know get and unknown connection state since the code can't find a suitable pipe for load detection. But that beats the previous state of affairs, where it tried to use pipe B, actually used pipe A and concluded that something is connected (although it's the LVDS on pipe A and nothing on the VGA connector on pipe B). I've tried to make load detect work by remapping the pipe->planes stuff, so that crtc 0 will use pipe B and hence we still have something left for load-detect on pipe A. But alas, that upset the hw a bit. So there's still some things to figure out, but this here will at least paper over some of the problems. I'll add these more recent observations to the commit. -Daniel
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c index c42b980..b3e20aa 100644 --- a/drivers/gpu/drm/i915/intel_crt.c +++ b/drivers/gpu/drm/i915/intel_crt.c @@ -743,7 +743,7 @@ void intel_crt_init(struct drm_device *dev) crt->base.type = INTEL_OUTPUT_ANALOG; crt->base.cloneable = true; - if (IS_HASWELL(dev)) + if (IS_HASWELL(dev) || IS_I830(dev)) crt->base.crtc_mask = (1 << 0); else crt->base.crtc_mask = (1 << 0) | (1 << 1) | (1 << 2);
The bit doesn't stick, and the output is always cloned from pipe A, even when it's supposed to scan out from pipe B. Shuts up annoying warnings from the modeset-rework, too. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=51265 Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/i915/intel_crt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)