[Intel][945GM] swap the plane/pipe mappings does not work
clotho67 at gmail.com
Thu May 29 02:56:22 PDT 2008
When I try to use intel video driver with drm git master, I found a bug
with the `swap the plane/pipe mappings' quirk which is trying to get FBC
work with i915 and i945 card. It does not work as expected, and crash X
after doing suspend. After comment out the `swap the plane/pipe
mappings' codes in i830_driver.c and disable FBC, X does not crash after
suspend. Xorg.0.log file shows that DRM actually didn't handle the swap,
and some codes inside intel driver didn't handle this as well.
I find the reference to DSPACNTR and DSPBCNTR register in Intel's doc
for i965 (I think this part should apply to i945 as well). According to
this doc, 'Display A Pipe Select' bits is hardwired to pipe A, and
'Display B Pipe Select' bits is hardwired to pipe B. This means
I915_READ(DSPACNTR) & DISPPLANE_SEL_PIPE_MASK == 0 and
I915_READ(DSPBCNTR) & DISPPLANE_SEL_PIPE_MASK == 1, so plane A is always
map ping to pipe A and plane B is always mapping to pipe B. And you got
i915_get_pipe(dev, 0) == 0, i915_get_pipe(dev, 1) == 1 in DRM, but it
should be i915_get_pipe(dev, 0) == 1, i915_get_pipe(dev, 1) == 0 after
you swap the plane/pipe.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
More information about the xorg