linux/drivers/gpu/drm/i915
Paulo Zanoni 6441ab5f8f drm/i915: completely rewrite the Haswell PLL handling code
Problems with the previous code:
  - HDMI just uses WRPLL1 for everything, so dual head cases might not
    work sometimes.
  - At encoder->mode_set we just write the PLL register without doing
    any kind of check (e.g., check if the PLL is already being used).
  - There is no way to fail and return error codes at
    encoder->mode_set.
  - We write to PORT_CLK_SEL at mode_set and we never disable it.
  - Machines hang due to wrong clock enable/disable sequence.

So here we rewrite the code, making it a little more like the
pre-Haswell PLL mode set code:
  - Check PLL availability at ironlake_crtc_mode_set.
  - Try to use both WRPLLs.
  - Check if PLLs are used before actually trying to use them, and
    properly fail with error messages.
  - Enable/disable PORT_CLK_SEL at the right place.
  - Add some WARNs to check for bugs.

The next improvement will be to try to reuse PLLs if the timings
match, but this is content for another patch and it's already
documented with a TODO comment.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Reviewed-by: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2012-10-10 16:53:02 +02:00
..
dvo_ch7xxx.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_ch7017.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_ivch.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_ns2501.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_sil164.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_tfp410.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo.h drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
i915_debugfs.c drm/i915: #define gpu freq multipler 2012-09-20 14:23:00 +02:00
i915_dma.c Linux 3.6-rc7 2012-09-24 18:17:12 +02:00
i915_drv.c Merge the modeset-rework, basic conversion into drm-intel-next 2012-09-06 22:52:43 +02:00
i915_drv.h drm/i915: completely rewrite the Haswell PLL handling code 2012-10-10 16:53:02 +02:00
i915_gem_context.c drm/i915: Only pwrite through the GTT if there is space in the aperture 2012-08-24 02:03:33 +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: Convert the dmabuf object to use the new i915_gem_object_ops 2012-09-20 14:23:10 +02:00
i915_gem_evict.c drm/i915: Only pwrite through the GTT if there is space in the aperture 2012-08-24 02:03:33 +02:00
i915_gem_execbuffer.c drm/i915: Assert that the exec object lookup table is a power-of-two 2012-09-20 14:23:11 +02:00
i915_gem_gtt.c Linux 3.6-rc7 2012-09-24 18:17:12 +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: Replace the array of pages with a scatterlist 2012-09-20 14:22:57 +02:00
i915_gem.c drm/i915: Align the retire_requests worker to the nearest second 2012-10-08 18:45:21 +02:00
i915_ioc32.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
i915_irq.c drm/i915: Align the hangcheck wakeup to the nearest second 2012-10-08 18:44:36 +02:00
i915_reg.h drm/i915: completely rewrite the Haswell PLL handling code 2012-10-10 16:53:02 +02:00
i915_suspend.c Linux 3.5-rc7 2012-07-20 00:53:28 -04:00
i915_sysfs.c drm/i915: Fix !CONFIG_PM sysfs for real this time 2012-09-20 14:23:11 +02:00
i915_trace_points.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
i915_trace.h drm/i915: add a tracepoint for gpu frequency changes 2012-09-03 10:09:27 +02:00
intel_acpi.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
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 Merge the modeset-rework, basic conversion into drm-intel-next 2012-09-06 22:52:43 +02:00
intel_ddi.c drm/i915: completely rewrite the Haswell PLL handling code 2012-10-10 16:53:02 +02:00
intel_display.c drm/i915: completely rewrite the Haswell PLL handling code 2012-10-10 16:53:02 +02:00
intel_dp.c drm/i915: Add eDP support for Valleyview 2012-09-28 17:04:38 +02:00
intel_drv.h drm/i915: completely rewrite the Haswell PLL handling code 2012-10-10 16:53:02 +02:00
intel_dvo.c drm/i915: improve modeset state checking after dpms calls 2012-09-06 08:21:31 +02:00
intel_fb.c drm/i915: Zero initialize mode_cmd 2012-07-05 13:27:58 +02:00
intel_hdmi.c drm/i915: completely rewrite the Haswell PLL handling code 2012-10-10 16:53:02 +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 Linux 3.6-rc7 2012-09-24 18:17:12 +02:00
intel_modes.c drm/i915: remove duplicated include from intel_modes.c 2012-10-07 22:49:03 +02:00
intel_opregion.c drm/i915: add debug logging to ASLE backlight set requests 2012-10-01 16:23:12 +02:00
intel_overlay.c drm/i915: Only pwrite through the GTT if there is space in the aperture 2012-08-24 02:03:33 +02:00
intel_panel.c drm/i915: do not expose a dysfunctional backlight interface to userspace 2012-09-03 20:42:10 +02:00
intel_pm.c drm/i915: Remove the WaDisableBackToBackFlipFix w/a for Haswell 2012-10-08 11:18:14 +02:00
intel_ringbuffer.c drm/i915: Replace the array of pages with a scatterlist 2012-09-20 14:22:57 +02:00
intel_ringbuffer.h drm/i915: Lazily apply the SNB+ seqno w/a 2012-08-10 11:11:32 +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_sdvo.c Merge the modeset-rework, basic conversion into drm-intel-next 2012-09-06 22:52:43 +02:00
intel_sprite.c drm/i915: fix color order for BGR formats on IVB 2012-08-23 11:44:53 +02:00
intel_tv.c drm/i915: s/intel_encoder_disable/intel_encoder_noop 2012-09-06 08:21:27 +02:00
Makefile drm/i915: Support for ns2501-DVO 2012-07-25 18:23:48 +02:00