alistair23-linux/drivers/gpu/drm
Ville Syrjälä fc245f8803 drm: Only merge mode type bits between new probed modes
Currently most drivers request that any mode appearing on both the
old mode list and the new probed_modes list get their type bits ORed
together if the modes are deemed to otherwise match each other.

I don't know why anyone would want to merge in the mode type bits
from any mode left over from a previous probe. For instance, you
could never get rid of ther preferred bit if a matching non-preferred
mode is returned by the new probe. So let's not merge anything from
the stale old modes, and just replace them outright with matching new
modes.

If multiple matching modes are produced by the same probe, merging
the type bits between them would seem like a sensible thing to do.
For a bit of extra finesse if two modes are considered equal we can
pick the actual timings from the one marked as preferrred. And if
multiple preferred modes are produced by the same probe somehow, we
can just favor the first one added to the probed_modes list.

You may be asking yourself why we bother with the merging at all if
nothing from the old list survives in practice. The only answer I have
is "debug output". That is we want to print out a list of pruned modes,
which is why we still want to look for duplicates with the old modes.

There was a previous attempt to get rid of the mode type merging
entirely, but it caused some kind of regression on Daniels's G33
machine. Apparently the sdvo transcoder on said machine started to
die at around the same time and has since rotted away totally, so
it may have been a red herring. So we don't have to worry about
it anymore. The relevant commits are:
commit 3fbd6439e4 ("drm: copy mode type in drm_mode_connector_list_update()")
commit abce1ec9b0 ("Revert "drm: copy mode type in drm_mode_connector_list_update()"")

It was then decided in
commit b87577b7c7 ("drm: try harder to avoid regression when merging mode bits")
that just qxl virtio are excluded from the merging, while everyone
else does it. That is not changed, although now even qxl and virtio
will be subject to the previously mentioned logic to choose which
actual timings are picked for the new mode.

v2: Fix typos in commit message, and clarify the details on
    the G33 regression from the previous attempt (Daniel)

Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Adam Jackson <ajax@redhat.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1449234781-22332-1-git-send-email-ville.syrjala@linux.intel.com
2015-12-11 09:27:07 +01:00
..
amd drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
armada drm: Pass 'name' to drm_universal_plane_init() 2015-12-11 09:13:10 +01:00
ast drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
atmel-hlcdc drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
bochs drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
bridge drm/panel: Changes for v4.4-rc1 2015-11-05 11:07:13 +10:00
cirrus drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
exynos drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
fsl-dcu drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
gma500 drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
i2c drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
i810
i915 drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
imx drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
mga drm/irq: Use unsigned int pipe in public API 2015-10-06 12:57:47 +02:00
mgag200 drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
msm drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
nouveau drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
omapdrm drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
panel spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
qxl drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
r128 drm/irq: Use unsigned int pipe in public API 2015-10-06 12:57:47 +02:00
radeon drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
rcar-du drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
rockchip drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
savage
shmobile drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
sis include/uapi/drm/sis_drm.h: move sis_file_private to drivers/gpu/drm/sis/sis_drv.h 2015-10-16 11:27:46 +10:00
sti drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
tdfx
tegra drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
tilcdc drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
ttm drm/ttm: Fix memory space allocation v2 2015-09-15 00:57:01 -07:00
udl drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
vc4 drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
vgem drm/vgem: Drop vgem_drm_gem_mmap 2015-10-19 11:00:44 +02:00
via via_drm.h: move struct via_file_private definition to drivers/gpu/drm/via/via_drv.h 2015-10-16 11:27:49 +10:00
virtio drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
vmwgfx drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
ati_pcigart.c
drm_agpsupport.c drm: Remove __OS_HAS_AGP 2015-09-30 10:44:48 +02:00
drm_atomic.c drm: Add plane->name and use it in debug prints 2015-12-11 09:13:53 +01:00
drm_atomic_helper.c drm: Add plane->name and use it in debug prints 2015-12-11 09:13:53 +01:00
drm_auth.c
drm_bridge.c drm/bridge: Improve kerneldoc 2015-12-08 16:07:53 +01:00
drm_bufs.c drm: Remove __OS_HAS_AGP 2015-09-30 10:44:48 +02:00
drm_cache.c
drm_context.c
drm_crtc.c drm: Add plane->name and use it in debug prints 2015-12-11 09:13:53 +01:00
drm_crtc_helper.c drm: Add crtc->name and use it in debug messages 2015-12-11 09:13:48 +01:00
drm_crtc_internal.h
drm_debugfs.c
drm_dma.c
drm_dp_helper.c Linux 4.3-rc2 2015-09-24 17:18:41 +02:00
drm_dp_mst_topology.c drm: fix mutex leak in drm_dp_get_mst_branch_device 2015-10-22 08:29:08 +10:00
drm_drv.c drm: Fix an unwanted master inheritance v2 2015-12-04 12:28:14 +10:00
drm_edid.c 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_edid_load.c drm: Constify generic_edid_names[] 2015-09-08 13:45:52 +02:00
drm_encoder_slave.c
drm_fb_cma_helper.c drm: Pass the user drm_mode_fb_cmd2 as const to .fb_create() 2015-11-24 11:47:38 +01:00
drm_fb_helper.c drm/core: Fix old_fb handling in pan_display_atomic. 2015-11-17 13:02:14 +02:00
drm_flip_work.c
drm_fops.c Linux 4.4-rc4 2015-12-08 11:04:26 +10:00
drm_gem.c drm/gem: Update/Polish docs 2015-11-24 11:41:49 +01:00
drm_gem_cma_helper.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-11-10 09:33:06 -08:00
drm_global.c
drm_hashtab.c
drm_info.c
drm_internal.h drm: move drm_class into drm_sysfs.c 2015-09-09 15:05:17 +02:00
drm_ioc32.c drm: Remove __OS_HAS_AGP 2015-09-30 10:44:48 +02:00
drm_ioctl.c drm: Enforce unlocked ioctl operation for kms driver ioctls 2015-10-16 15:50:54 +02:00
drm_irq.c drm/nouveau: Fix pre-nv50 pageflip events (v4) 2015-12-04 13:49:38 +10:00
drm_legacy.h
drm_lock.c signals: kill block_all_signals() and unblock_all_signals() 2015-11-06 17:50:42 -08:00
drm_memory.c drm: Remove __OS_HAS_AGP 2015-09-30 10:44:48 +02:00
drm_mipi_dsi.c
drm_mm.c drm/mm: Do DRM_MM_CREATE_TOP adj_start calculation after color_adjust 2015-09-08 13:45:47 +02:00
drm_modes.c drm: Only merge mode type bits between new probed modes 2015-12-11 09:27:07 +01:00
drm_modeset_lock.c drm: Implement drm_modeset_lock_all_ctx() 2015-12-02 23:10:59 +01:00
drm_of.c drm: Introduce generic probe function for component based masters. 2015-10-20 12:01:29 +02:00
drm_panel.c
drm_pci.c drm/doc: Update docs about device instance setup 2015-09-30 10:06:06 +02:00
drm_plane_helper.c drm: Pass 'name' to drm_universal_plane_init() 2015-12-11 09:13:10 +01:00
drm_platform.c drm/doc: Update docs about device instance setup 2015-09-30 10:06:06 +02:00
drm_prime.c
drm_probe_helper.c drm: Rename MODE_UNVERIFIED to MODE_STALE 2015-12-11 09:26:47 +01:00
drm_rect.c drm: Add "prefix" parameter to drm_rect_debug_print() 2015-11-24 11:47:46 +01:00
drm_scatter.c
drm_sysfs.c drm/sysfs: Send out uevent when connector->force changes 2015-11-24 11:49:34 +01:00
drm_trace.h
drm_trace_points.c
drm_vm.c drm: Remove __OS_HAS_AGP 2015-09-30 10:44:48 +02:00
drm_vma_manager.c drm/gem: Use kref_get_unless_zero for the weak mmap references 2015-10-19 11:00:44 +02:00
Kconfig drm/vc4: Add KMS support for Raspberry Pi. 2015-10-21 10:33:12 +01:00
Makefile Merge tag 'drm-vc4-next-2015-10-21' of http://github.com/anholt/linux into drm-next 2015-10-22 10:31:17 +10:00