linux/drivers/gpu/drm/i915
Daniel Vetter ff9ce46ed6 drm/i915: implement high-bpc + pipeconf-dither support for g4x/vlv
The current code is rather ... ugly. The only thing it managed to pull
off is getting 6bpc on DP working on g4x. Then someone added another
custom hack for 6bpc eDP on vlv. Fix up this entire mess by properly
implementing the PIPECONF-based dither/bpc controls on g4x/vlv.

Note that compared to pch based platforms g4x/vlv don't support 12bpc
modes. g4x is already caught, extend the check for vlv.

The other fixup is to restrict the lvds-specific dithering to early
gen4 devices - g4x should use the pipeconf dither controls. Note that
on gen2/3 the dither control is in the panel fitter even.

v2: Don't enable dithering when the pipe is in 10 bpc mode. Quoting
from Bspec "PIPEACONF - Pipe A Configuration Register, bit 4":

"Programming note: Dithering should only be enabled for 8 bpc or 6
bpc."

v3: Actually drop the old ugly dither code.

v4: Explain in a short comment why g4x/vlv shouldn't dither for 30 bpp
pipes (Jesse).

v5: Also clear the dither type correctly as spotted by Ville.

v6: As Ville pointed out we need to indeed set the dithering both in
the pipeconf register (for DP outputs) and in the LVDS port register
(for LVDS ouputs). Otherwise LVDS panel will not get properly
dithered. The old patch got away with this since it forgot to clear
the LVDS dither bit ...

v7: Remove redundant BPC_MASK clearing, spotted by Ville.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-04-29 21:51:12 +02:00
..
dvo_ch7xxx.c drm/i915/dvo-ch7xxx: fix get_hw_state 2012-10-12 10:59:11 +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 Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
i915_debugfs.c drm/i915: Turn DEV_INFO_FLAGS into a foreach style macro 2013-04-23 17:44:21 +02:00
i915_dma.c drm/i915: protect backlight registers and data with a spinlock 2013-04-25 14:10:10 +02:00
i915_drv.c drm/i915: Turn HAS_FPGA_DBG_UNCLAIMED into a device_info flag 2013-04-23 17:47:37 +02:00
i915_drv.h drm/i915: move PCH pfit controls into pipe_config 2013-04-25 22:17:59 +02:00
i915_gem_context.c drm/i915: Use MLC (l3$) for context objects 2013-04-18 09:43:11 +02:00
i915_gem_debug.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
i915_gem_dmabuf.c lib/scatterlist: sg_page_iter: support sg lists w/o backing pages 2013-03-27 17:13:44 +01:00
i915_gem_evict.c drm/i915: Create a gtt structure 2013-01-17 22:33:56 +01:00
i915_gem_execbuffer.c Linux 3.9-rc5 2013-04-03 11:28:48 +02:00
i915_gem_gtt.c drm/i915: Split out Haswell code from gen6_pte_encode. 2013-04-22 11:44:21 +02:00
i915_gem_stolen.c drm/i915: Only print the info message about incresing stolen size for FBC once 2013-04-27 14:06:39 +02:00
i915_gem_tiling.c drm/i915: Increase max fence pitch limit to 256KB on IVB+ 2013-04-18 09:43:20 +02:00
i915_gem.c drm/i915: IVB/HSW have 32 fence register 2013-04-18 09:43:21 +02:00
i915_ioc32.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
i915_irq.c drm/i915: remove VLV MSI IRQ hack 2013-04-26 23:40:32 +02:00
i915_reg.h drm/i915: hsw backlight registers need transcoder instead of pipe 2013-04-25 16:12:43 +02:00
i915_suspend.c drm/i915: protect backlight registers and data with a spinlock 2013-04-25 14:10:10 +02:00
i915_sysfs.c drm/i915: turbo & RC6 support for VLV v7 2013-04-18 10:15:43 +02:00
i915_trace_points.c
i915_trace.h drm/i915: Allow DRM_ROOT_ONLY|DRM_MASTER to submit privileged batchbuffers 2012-10-17 21:06:59 +02:00
i915_ums.c drm/i915: move DP save/restore into i915_ums.c 2013-01-31 11:50:04 +01:00
intel_acpi.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
intel_bios.c drm/i915: set CPT FDI RX polarity bits based on VBT 2013-04-18 09:43:31 +02:00
intel_bios.h drm/i915: set CPT FDI RX polarity bits based on VBT 2013-04-18 09:43:31 +02:00
intel_crt.c drm/i915: Fixup non-24bpp support for VGA screens on Haswell 2013-04-24 14:46:30 +02:00
intel_ddi.c drm/i915: move PCH pfit controls into pipe_config 2013-04-25 22:17:59 +02:00
intel_display.c drm/i915: implement high-bpc + pipeconf-dither support for g4x/vlv 2013-04-29 21:51:12 +02:00
intel_dp.c drm/i915: force bpp for eDP panels 2013-04-29 21:50:39 +02:00
intel_drv.h drm/i915: move PCH pfit controls into pipe_config 2013-04-25 22:17:59 +02:00
intel_dvo.c drm/i915: rip out helper->disable noop functions 2013-02-14 00:07:54 +01:00
intel_fb.c drm/i915: Support PCH no display 2013-04-06 19:33:29 +02:00
intel_hdmi.c drm/i915: update VLV PLL and DPIO code v11 2013-04-19 09:10:33 +02:00
intel_i2c.c drm/i915: Don't touch South Display when PCH_NOP 2013-04-08 20:53:00 +02:00
intel_lvds.c drm/i915: move PCH pfit controls into pipe_config 2013-04-25 22:17:59 +02:00
intel_modes.c drm/i915: Add "Automatic" mode for the "Broadcast RGB" property 2013-01-20 13:09:44 +01:00
intel_opregion.c drm/i915: drop code duplication in favor of asle interrupt handler 2013-04-25 15:44:35 +02:00
intel_overlay.c Merge tag 'drm-intel-next-2013-02-01' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2013-02-08 11:08:10 +10:00
intel_panel.c drm/i915: warn about invalid pfit modes 2013-04-25 22:18:22 +02:00
intel_pm.c drm/i915: Only print the info message about incresing stolen size for FBC once 2013-04-27 14:06:39 +02:00
intel_ringbuffer.c drm/i915: Fix PIPE_CONTROL DW/QW write through global GTT on IVB+ 2013-02-20 00:21:47 +01:00
intel_ringbuffer.h Merge tag 'drm-intel-next-2012-12-21' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2013-01-17 20:34:08 +10:00
intel_sdvo_regs.h drm/i915: clear the entire sdvo infoframe buffer 2012-10-24 15:12:48 +02:00
intel_sdvo.c drm/i915: (re)init HPD interrupt storm statistics 2013-04-18 09:43:29 +02:00
intel_sprite.c drm/i915: Ivybridge is the odd one when it comes to pipe scalers 2013-04-25 16:32:47 +02:00
intel_tv.c drm/i915: (re)init HPD interrupt storm statistics 2013-04-18 09:43:29 +02:00
Makefile drm/i915: extract ums suspend/resume into i915_ums.c 2013-01-31 11:50:03 +01:00