linux/include/drm
Ville Syrjälä 4c6bcf4454 drm/edid: Make the detailed timing CEA/HDMI mode fixup accept up to 5kHz clock difference
Rather than using drm_match_cea_mode() to see if the EDID detailed
timings are supposed to represent one of the CEA/HDMI modes, add a
special version of that function that takes in an explicit clock
tolerance value (in kHz). When looking at the detailed timings specify
the tolerance as 5kHz due to the 10kHz clock resolution limit inherent
in detailed timings.

drm_match_cea_mode() uses the normal KHZ2PICOS() matching of clocks,
which only allows smaller errors for lower clocks (eg. for 25200 it
won't allow any error) and a bigger error for higher clocks (eg. for
297000 it actually matches 296913-297000). So it doesn't really match
what we want for the fixup. Using the explicit +-5kHz is much better
for this use case.

Not sure if we should change the normal mode matching to also use
something else besides KHZ2PICOS() since it allows a different
proportion of error depending on the clock. I believe VESA CVT
allows a maximum deviation of .5%, so using that for normal mode
matching might be a good idea?

Cc: Adam Jackson <ajax@redhat.com>
Tested-by: nathan.d.ciobanu@linux.intel.com
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92217
Fixes: fa3a7340ea ("drm/edid: Fix up clock for CEA/HDMI modes specified via detailed timings")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-12-01 07:57:14 +01:00
..
bridge Merge branch 'drm-dwhdmi-devel' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into drm-next 2015-08-27 13:01:57 +10:00
i2c drm/i2c: tda998x: add video and audio input configuration 2013-08-19 09:10:32 +10:00
ttm drm/ttm: device address space != CPU address space 2015-03-05 09:04:39 +10:00
ati_pcigart.h drm: Move legacy buffer structures to <drm/drm_legacy.h> 2014-09-12 15:28:12 +02:00
drm_agpsupport.h drm: Remove dummy agp ioctl wrappers 2015-09-30 10:49:22 +02:00
drm_atomic_helper.h drm/atomic_helper: Add drm_atomic_helper_disable_planes_on_crtc() 2015-11-30 08:38:02 +01:00
drm_atomic.h drm: fix potential dangling else problems in for_each_ macros 2015-11-25 09:29:21 +01:00
drm_cache.h
drm_core.h
drm_crtc_helper.h drm: Pass the user drm_mode_fb_cmd2 as const to .fb_create() 2015-11-24 11:47:38 +01:00
drm_crtc.h drm: fix potential dangling else problems in for_each_ macros 2015-11-25 09:29:21 +01:00
drm_displayid.h drm/displayid: add displayid defines and edid extension (v2) 2014-12-09 09:56:46 +10:00
drm_dp_helper.h drm/dp: add eDP DPCD backlight control bit definitions 2015-11-24 11:41:51 +01:00
drm_dp_mst_helper.h drm/dp/mst: make mst i2c transfer code more robust. 2015-10-15 09:06:20 +10:00
drm_edid.h drm: Make drm_av_sync_delay() 'mode' argument const 2015-09-09 14:53:54 +02:00
drm_encoder_slave.h drm: i2c encoder helper wrappers 2013-02-17 17:55:42 -05:00
drm_fb_cma_helper.h drm: Pass the user drm_mode_fb_cmd2 as const to .fb_create() 2015-11-24 11:47:38 +01:00
drm_fb_helper.h drm/fb-helper: atomic restore_fbdev_mode().. 2015-09-16 11:39:26 -07:00
drm_fixed.h drm: fix 64 bit drm fixed point helpers 2013-07-30 17:24:13 -04:00
drm_flip_work.h drm: flip-work: change drm_flip_work_init prototype 2014-11-15 09:29:14 +10:00
drm_gem_cma_helper.h drm/cma: Introduce drm_gem_cma_dumb_create_internal() 2014-11-13 13:27:17 +01:00
drm_gem.h drm: Update GEM refcounting docs 2015-11-24 11:41:49 +01:00
drm_global.h
drm_hashtab.h drm: Add a hash-tab rcu-safe API 2012-11-28 18:36:05 +10:00
drm_legacy.h drm: move drm_mmap to <drm/drm_legacy.h> 2014-09-24 11:43:07 +10:00
drm_mem_util.h drm: use kvfree() in drm_free_large() 2015-06-30 19:44:59 -07:00
drm_mipi_dsi.h drm/dsi: Do not require .owner field to be set 2014-11-13 13:56:17 +01:00
drm_mm.h drm/mm: use list_next_entry 2015-11-25 16:22:58 +01:00
drm_modes.h drm/edid: Make the detailed timing CEA/HDMI mode fixup accept up to 5kHz clock difference 2015-12-01 07:57:14 +01:00
drm_modeset_lock.h drm/doc: Fixing xml documentation warning 2015-09-08 13:45:48 +02:00
drm_of.h drm: Introduce generic probe function for component based masters. 2015-10-20 12:01:29 +02:00
drm_os_linux.h drm: Kill DRM_SUSER 2013-12-18 11:35:45 +10:00
drm_panel.h drm/panel: Add display timing support 2015-04-02 19:04:12 +02:00
drm_pciids.h drm/radeon: add new OLAND pci id 2015-08-12 12:24:05 -04:00
drm_plane_helper.h drm/atomic: Make prepare_fb/cleanup_fb only take state, v3. 2015-09-08 13:45:54 +02:00
drm_rect.h drm: Add "prefix" parameter to drm_rect_debug_print() 2015-11-24 11:47:46 +01:00
drm_sysfs.h
drm_vma_manager.h drm/gem: Use kref_get_unless_zero for the weak mmap references 2015-10-19 11:00:44 +02:00
drmP.h drm: Serialise multiple event readers 2015-11-26 15:21:27 +01:00
exynos_drm.h drm/exynos: fimd: replace struct fb_videomode with videomode 2013-09-05 13:43:44 +09:00
gma_drm.h drm/gma500: Remove unused ioctls 2014-03-17 20:11:57 +01:00
i915_component.h drm/i915: add kerneldoc for i915_audio_component 2015-10-07 16:05:37 +02:00
i915_drm.h x86/gpu: Add Intel graphics stolen memory quirk for gen2 platforms 2014-02-09 15:11:30 +01:00
i915_pciids.h drm/i915/bxt: Update the Broxton PCI ids 2015-05-20 11:26:06 +02:00
intel-gtt.h drm/i915/gtt: Allow >= 4GB sizes for vm. 2015-06-26 10:41:13 +02:00