]> git.karo-electronics.de Git - linux-beck.git/commit
drm/i915: pipe config quirk infrastructure plus sdvo mode.flags fix
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 6 Jun 2013 12:55:52 +0000 (14:55 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 6 Jun 2013 20:35:44 +0000 (22:35 +0200)
commitbb760063790fbbc3c956f23aff4dbdfdd3c03818
tree98eb28033453c59d178793c3fb4d37189fd010cd
parenta38911a3fede294e2adfd2deea8104dfbbd760c5
drm/i915: pipe config quirk infrastructure plus sdvo mode.flags fix

For various reasons the hw state readout might not be able to
faithfully match the hw state:
- broken hw (like the case which motivated this patch here where the
  sdvo encoder does not implemented mandatory functionality
  correctly).
- platforms which are not supported fully with the pipe config
  infrastructure
- if our code doesn't support a given hw configuration natively, e.g.
  special restrictions on the per-pipe panel fitters when they're used
  in high-quality scaling modes.

In all these cases both fastboot and the hw state cross checker need
to be aware of these cases and act accordingly. To be able to do this
add a new quirk flag to the pipe config structure.

The specific case at hand is an sdvo encoder which doesn't implement
the get_timings function, so adjusted_mode flags will be wrong. The
strange thing though is that the encoder _does_ work, even though it
doesn't implement any of the timings functions (so neither get nor
set, neither for input nor output timings).

Not that non-compliant sdvo encoder are any surprise at all ...

v2:
- Don't read random garbage from the dtd if the get_timings call
  failed (suggested by Chris).
- Still check the interlaced flag, that's read out from someplace
  else. We want maximal paranoia, after all.

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