linux/drivers/gpu/drm/i915
Paulo Zanoni b2b877ffe3 drm/i915: make intel_ddi_get_cdclk_freq return values in KHz
With this, that 338 can finally become the correct 337500.

Due to the change we need to adjust the intel_dp_aux_ch function to
set the correct value, so adjust the division and also use
DIV_ROUND_CLOSEST instead of the old "round down" behavior because the
spec says the value "should be programmed to get as close as possible
to the ideal rate of 2MHz".

Quoting Paulo's follow-up to a question from Chris Wilson to explain
what exactly will change:

I use the 337500 value on the next patch, when setting the
ips_linetime value. The correct frequency is 337500, not 338000.

ips_linetime = DIV_ROUND_CLOSEST(mode->htotal * 1000 * 8,
intel_ddi_get_cdclk_freq);
For a mode with htotal of 2640 [0] we'll have: (i) (2640 * 1000 * 8) /
338000 = 62.48, resulting in 62 and (ii) (2640 * 1000 * 8) / 337500 =
62.57 resulting in 63.

For the case inside intel_dp.c:
Previously we were using 338. So with the old formula we were writing
338/2 = 169 to the register. And 337500 / 169 = 1997.04 (we use 337500
here because it's the real clock value). With the new value of
337500/2000 we'll have 168.75, which is 168 on the round-down case and
169 on the round-closest case. If we write 168 to the register, 337500
/ 168 = 2008.92, and 2008.92 is more distant from 2000 than 1997.04.
So with this patch we're changing the formula but still writing the
same correct value to the DP AUX register.

[0]: That's 1920x1080@50Hz on my DP monitor.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
[danvet: Pimp the commit message with Paulo's follow-up.]
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-05-21 11:54:41 +02:00
..
dvo_ch7xxx.c drm/i915: add support for dvo Chrontel 7010B 2013-05-20 22:02:49 +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: Organize VBT stuff inside drm_i915_private 2013-05-10 21:56:46 +02:00
i915_drv.c drm/i915: Enable FBC at Haswell. 2013-05-10 21:56:49 +02:00
i915_drv.h drm/i915: remove intel_update_linetime_watermarks 2013-05-21 11:19:41 +02:00
i915_gem_context.c drm/i915: Add references to some workaround we implement 2013-05-10 21:56:34 +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 drm/i915: fix dmabuf vmap support 2013-05-01 16:09:31 +10:00
i915_gem_evict.c drm/i915: Create a gtt structure 2013-01-17 22:33:56 +01:00
i915_gem_execbuffer.c Merge tag 'drm-intel-next-2013-03-23' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2013-04-05 10:18:13 +10:00
i915_gem_gtt.c Linux 3.10-rc2 2013-05-21 09:52:16 +02:00
i915_gem_stolen.c drm/i915: allow stolen, pre-allocated objects to avoid GTT allocation v2 2013-05-10 21:56:37 +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 Linux 3.10-rc2 2013-05-21 09:52:16 +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: fix hotplug event bit tracking 2013-05-10 21:56:34 +02:00
i915_reg.h Linux 3.10-rc2 2013-05-21 09:52:16 +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: read current freq from Punit on VLV 2013-05-10 21:56:27 +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: Allow DRM_ROOT_ONLY|DRM_MASTER to submit privileged batchbuffers 2012-10-17 21:06:59 +02:00
i915_ums.c drm/i915: Apply OCD to data/link m/n register #defines 2013-05-06 11:27:57 +02: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: Organize VBT stuff inside drm_i915_private 2013-05-10 21:56:46 +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: add encoder get_config function v5 2013-05-21 09:55:19 +02:00
intel_ddi.c drm/i915: make intel_ddi_get_cdclk_freq return values in KHz 2013-05-21 11:54:41 +02:00
intel_display.c drm/i915: remove intel_update_linetime_watermarks 2013-05-21 11:19:41 +02:00
intel_dp.c drm/i915: make intel_ddi_get_cdclk_freq return values in KHz 2013-05-21 11:54:41 +02:00
intel_drv.h drm/i915: remove intel_update_linetime_watermarks 2013-05-21 11:19:41 +02:00
intel_dvo.c drm/i915: add encoder get_config function v5 2013-05-21 09:55:19 +02:00
intel_fb.c drm/i915: clear the stolen fb before resuming 2013-05-07 22:25:11 +02:00
intel_hdmi.c drm/i915: add encoder get_config function v5 2013-05-21 09:55:19 +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: add encoder get_config function v5 2013-05-21 09:55:19 +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 Linux 3.10-rc2 2013-05-21 09:52:16 +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: rip out indirection for pfit pipe_config assignment 2013-04-30 16:16:32 +02:00
intel_pm.c drm/i915: fix haswell linetime watermarks calculation 2013-05-21 11:26:52 +02:00
intel_ringbuffer.c drm/i915: Add references to some workaround we implement 2013-05-10 21:56:34 +02:00
intel_ringbuffer.h drm/i915: put context upon switching 2013-05-06 11:20:48 +02: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: add encoder get_config function v5 2013-05-21 09:55:19 +02:00
intel_sprite.c drm/i915: Relax the sprite scaling limits checks 2013-04-30 22:20:10 +02:00
intel_tv.c drm/i915: Organize VBT stuff inside drm_i915_private 2013-05-10 21:56:46 +02:00
Makefile drm/i915: extract ums suspend/resume into i915_ums.c 2013-01-31 11:50:03 +01:00