linux/drivers/gpu/drm/i915
Daniel Vetter b2cabb0e1d drm/i915: convert dpms functions of dvo/sdvo/crt
Yeah, big patch but I couldn't come up with a neat idea of how to
split it up further, that wouldn't break dpms on cloned configs
somehow. But the changes in dvo/sdvo/crt are all pretty much
orthonogal, so it's not too bad a patch.

These are the only encoders that support cloning, which requires a few
special changes compared to the previous patches.
- Compute the desired state of the display pipe by walking all
  connected encoders and checking whether any has active connectors.
  To make this clearer, drop the old mode parameter to the crtc dpms
  function and rename it to intel_crtc_update_dpms.
- There's the curious case of intel_crtc->dpms_mode. With the previous
  patches to remove the overlay pipe A code and to rework the load
  detect pipe code, the big users are gone. We still keep it to avoid
  enabling the pipe twice, but we duplicate this logic with
  crtc->active, too. Still, leave this for now and just push a fake
  dpms mode into it that reflects the state of the display pipe.

Changes in the encoder dpms functions:
- We clamp the dpms state to the supported range right away. This is
  escpecially important for the VGA outputs, where only older hw
  supports the intermediate states. This (and the crt->adpa_reg patch)
  allows us to unify the crt dpms code again between all variants
  (gmch, vlv and pch).
- We only enable/disable the output for dvo/sdvo and leave the encoder
  running. The encoder will be disabled/enabled when we switch the
  state of the entire output pipeline (which will happen right away
  for non-cloned setups). This way the duplication is reduced and
  strange interaction when disabling output ports at the wrong time
  avoided.

The dpms code for all three types of connectors contains a bit of
duplicated logic, but I think keeping these special cases separate is
simpler: CRT is the only one that hanldes intermediate dpms state
(which requires extra logic to enable/disable things in the right
order), and introducing some abstraction just to share the code
between dvo and sdvo smells like overkill. We can do that once someone
bothers to implement cloning for the more modern outputs. But I doubt
that this will ever happen.

v2: s/crtc/crt/_set_dpms, noticed by Paulo Zanoni.

Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2012-09-06 07:55:17 +02:00
..
dvo.h drm/i915: simplify dvo dpms interface 2012-08-17 10:10:02 +02:00
dvo_ch7xxx.c drm/i915: simplify dvo dpms interface 2012-08-17 10:10:02 +02:00
dvo_ch7017.c drm/i915: simplify dvo dpms interface 2012-08-17 10:10:02 +02:00
dvo_ivch.c drm/i915: simplify dvo dpms interface 2012-08-17 10:10:02 +02:00
dvo_ns2501.c drm/i915: simplify dvo dpms interface 2012-08-17 10:10:02 +02:00
dvo_sil164.c drm/i915: simplify dvo dpms interface 2012-08-17 10:10:02 +02:00
dvo_tfp410.c drm/i915: simplify dvo dpms interface 2012-08-17 10:10:02 +02:00
i915_debugfs.c drm/i915: don't grab dev->struct_mutex for userspace forcewak 2012-08-12 11:28:49 +02:00
i915_dma.c drm/i915: implement dma buf begin_cpu_access (v2) 2012-08-17 10:10:06 +02:00
i915_drv.c Linux 3.6-rc2 2012-08-17 09:01:08 +02:00
i915_drv.h drm/i915: add crtc->enable/disable vfuncs insted of dpms 2012-09-06 07:52:00 +02:00
i915_gem.c drm/i915: Lazily apply the SNB+ seqno w/a 2012-08-10 11:11:32 +02:00
i915_gem_context.c drm/i915: remove unused variable 2012-08-05 22:39:53 +02:00
i915_gem_debug.c drm/i915: stop using dev->agp->base 2012-06-12 22:18:06 +02:00
i915_gem_dmabuf.c drm/i915: implement dma buf begin_cpu_access (v2) 2012-08-17 10:10:06 +02:00
i915_gem_evict.c drm/i915: Segregate memory domains in the GTT using coloring 2012-07-26 12:56:25 +02:00
i915_gem_execbuffer.c Linux 3.6-rc2 2012-08-17 09:01:08 +02:00
i915_gem_gtt.c Linux 3.6-rc2 2012-08-17 09:01:08 +02:00
i915_gem_stolen.c drm/i915: Split the stolen handling for GEM out of i915_dma.c 2012-05-03 11:18:11 +02:00
i915_gem_tiling.c drm/i915: Only the zap the VMA after updating the tiling parameters 2012-05-03 11:18:07 +02:00
i915_ioc32.c
i915_irq.c Linux 3.6-rc2 2012-08-17 09:01:08 +02:00
i915_reg.h drm/i915: ironlake_write_eld code cleanup 2012-08-17 10:10:04 +02:00
i915_suspend.c Linux 3.5-rc7 2012-07-20 00:53:28 -04:00
i915_sysfs.c Linux 3.6-rc2 2012-08-17 09:01:08 +02:00
i915_trace.h drm/i915: improve i915_wait_request_begin trace 2012-05-25 09:55:15 +02:00
i915_trace_points.c
intel_acpi.c
intel_bios.c drm/i915/bios: cleanup return type of intel_parse_bios() 2012-06-27 10:17:51 +01:00
intel_bios.h drm/i915/bios: cleanup return type of intel_parse_bios() 2012-06-27 10:17:51 +01:00
intel_crt.c drm/i915: convert dpms functions of dvo/sdvo/crt 2012-09-06 07:55:17 +02:00
intel_ddi.c drm/i915/hdmi: convert to encoder->disable/enable 2012-09-06 07:53:37 +02:00
intel_display.c drm/i915: convert dpms functions of dvo/sdvo/crt 2012-09-06 07:55:17 +02:00
intel_dp.c drm/i915/dp: convert to encoder disable/enable 2012-09-06 07:54:21 +02:00
intel_drv.h drm/i915: convert dpms functions of dvo/sdvo/crt 2012-09-06 07:55:17 +02:00
intel_dvo.c drm/i915: convert dpms functions of dvo/sdvo/crt 2012-09-06 07:55:17 +02:00
intel_fb.c drm/i915: Zero initialize mode_cmd 2012-07-05 13:27:58 +02:00
intel_hdmi.c drm/i915/hdmi: convert to encoder->disable/enable 2012-09-06 07:53:37 +02:00
intel_i2c.c drm/i915: ensure i2c adapter is all set before adding it 2012-08-13 19:04:24 +02:00
intel_lvds.c drm/i915/lvds: convert to encoder disable/enable 2012-09-06 07:54:15 +02:00
intel_modes.c drm/i915: kill intel_ddc_probe 2012-07-20 12:21:39 +02:00
intel_opregion.c drm/i915: [sparse] __iomem fixes for opregion 2012-05-03 11:18:00 +02:00
intel_overlay.c drm/i915: rip out the overlay pipe A workaround 2012-08-17 10:10:01 +02:00
intel_panel.c drm/i915: Fix blank panel at reopening lid 2012-08-11 21:15:16 +02:00
intel_pm.c Linux 3.6-rc2 2012-08-17 09:01:08 +02:00
intel_ringbuffer.c Linux 3.6-rc2 2012-08-17 09:01:08 +02:00
intel_ringbuffer.h drm/i915: Lazily apply the SNB+ seqno w/a 2012-08-10 11:11:32 +02:00
intel_sdvo.c drm/i915: convert dpms functions of dvo/sdvo/crt 2012-09-06 07:55:17 +02:00
intel_sdvo_regs.h drm/i915: properly handle interlaced bit for sdvo dtd conversion 2012-05-24 17:53:52 +02:00
intel_sprite.c drm/i915: mask tiled bit when updating ILK sprites 2012-07-20 12:21:40 +02:00
intel_tv.c drm/i915/tv: convert to encoder enable/disable 2012-09-06 07:54:10 +02:00
Makefile drm/i915: Support for ns2501-DVO 2012-07-25 18:23:48 +02:00