]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: implement IBX hdmi transcoder select workaround
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 5 Jun 2012 09:03:39 +0000 (11:03 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 6 Jun 2012 07:25:13 +0000 (09:25 +0200)
commitd67edcd0552166e4c3bda48749dbde859647c180
tree6c0c0f55caea41f53283675ea67dede511d1dd73
parentc27cc36153f79c6338f25188ae2d50b9a69b21d5
drm/i915: implement IBX hdmi transcoder select workaround

Bspec Vol 3, Part 3, Section 3.8.1.1, bit 30:

"[DevIBX] Writing to this bit only takes effect when port is enabled.
Due to hardware issue it is required that this bit be cleared when port
is disabled. To clear this bit software must temporarily enable this
port on transcoder A."

Unfortunately the public Bspec misses totally out on the same language
for HDMIB. Internal Bspec also mentions that one of the bad
side-effects is that DPx can fail to light up on transcoder A if HDMIx
is disabled but using transcoder B.

I've found this while reviewing Bsepc. We already implement the same
workaround for the DP ports.

Also replace a magic 1 with PIPE_B I've found while looking through the
code.

v2: Implement suggestions from Chris Wilson:
- add pipe variable to cut down on code noise
- write the reg value twice to w/a hw issues (Bspec is unclear on
  which bit actually require the write twice stuff, but better be
  paranoid about it)
- untangle the if logic

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_hdmi.c