linux/drivers/gpu/drm
Matt Roper bdeb18dbcf drm/i915/ehl: Allow combo PHY A to drive a third external display
EHL has a mux on combo PHY A that allows it to be driven either by an
internal display (DDI-A or DSI DPHY) or by an external display (DDI-D).
This is a motherboard design decision that can not be changed on the
fly.  Unfortunately there are no strap registers that allow us to detect
the board configuration directly, so let's use the VBT to try to figure
it out and program the mux accordingly.

For now if we run across a broken VBT that tries to claim that PHY A
is attached to both internal and external displays at the same time,
we'll resolve the conflict in favor of the internal display.  To help
debug these kind of bad VBT's, let's also add a quick DRM_DEBUG message
during child device parsing so that it's easier to understand these
cases if they show up in bug reports.

v2:
 - Confirmed that VBT's dvo port refers to the DDI and not the PHY.
   Thus we can check more explicitly for (ddi_d && !(ddi_a || dsi)).  If
   a bad VBT contradicts itself, let internal display win.  (Ville)

v3:
 - Switch condition from !IS_ICELAKE to IS_ELKHARTLAKE.  Although the
   convention is usually to assume that future platforms will inherit
   all current platform behavior, this feels more like a one-platform
   quirk.  (Ville)
 - Update commit message to describe what we do if/when we encounter
   broken VBT's, and note that the new debug print during child device
   parsing is intentional.

Cc: Clint Taylor <Clinton.A.Taylor@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190618175131.9139-1-matthew.d.roper@intel.com
2019-06-19 11:28:02 -07:00
..
amd drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
arc treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
arm drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
armada drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
aspeed treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
ast drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
atmel-hlcdc drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
bochs drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
bridge Features: 2019-05-28 09:26:52 +10:00
cirrus drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
etnaviv drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
exynos treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
fsl-dcu treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
gma500 drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
hisilicon drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
i2c treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
i810 treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
i915 drm/i915/ehl: Allow combo PHY A to drive a third external display 2019-06-19 11:28:02 -07:00
imx drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
lib
lima drm/lima: add timeout to drm scheduler init 2019-05-21 20:47:36 +08:00
mediatek drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
meson drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
mga treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
mgag200 drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
msm drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
mxsfb treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
nouveau drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
omapdrm drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
panel drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
panfrost drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
pl111 treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
qxl treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
r128 treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
radeon drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
rcar-du
rockchip drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
savage treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
scheduler Merge drm/drm-next into drm-misc-next 2019-05-22 16:08:21 -04:00
selftests treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
shmobile
sis treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
sti treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
stm drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
sun4i drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
tdfx treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
tegra drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
tilcdc treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
tinydrm treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
ttm drm pull request for 5.2 2019-05-08 21:35:19 -07:00
tve200 treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
udl treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 13 2019-05-21 11:28:45 +02:00
v3d drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
vboxvideo Merge drm/drm-next into drm-misc-next 2019-05-22 16:08:21 -04:00
vc4 drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
vgem treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
via treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
virtio drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
vkms drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
vmwgfx drm/vmwgfx: integer underflow in vmw_cmd_dx_set_shader() leading to an invalid read 2019-05-21 10:23:10 +02:00
xen treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
zte drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic_helper.c Merge remote-tracking branch 'drm/drm-next' into drm-misc-next 2019-05-09 10:19:03 +02:00
drm_atomic_state_helper.c drm: Add reference counting on HDR metadata blob 2019-05-22 22:46:35 +03:00
drm_atomic_uapi.c Features: 2019-05-28 09:26:52 +10:00
drm_atomic.c drm: Add drm_atomic_get_old/new_private_obj_state 2019-04-29 12:35:56 +01:00
drm_auth.c drm/fb-helper: Avoid race with DRM userspace 2019-05-14 16:11:28 +02:00
drm_blend.c
drm_bridge.c
drm_bufs.c drm/legacy: move map cleanups into drm_bufs.c 2019-04-24 12:32:13 +10:00
drm_cache.c
drm_client.c drm: Remove users of drm_format_info_plane_cpp 2019-05-20 13:35:56 +02:00
drm_color_mgmt.c
drm_connector.c Features: 2019-05-28 09:26:52 +10:00
drm_context.c
drm_crtc_helper_internal.h
drm_crtc_helper.c
drm_crtc_internal.h drm/atomic: Wire file_priv through for property changes 2019-04-24 11:30:52 +02:00
drm_crtc.c drm/lease: Make sure implicit planes are leased 2019-04-24 11:30:32 +02:00
drm_damage_helper.c
drm_debugfs_crc.c
drm_debugfs.c
drm_dma.c
drm_dp_aux_dev.c drm/dp: drmP.h include removal 2019-05-06 16:00:48 +03:00
drm_dp_cec.c
drm_dp_dual_mode_helper.c drm/dp: drmP.h include removal 2019-05-06 16:00:48 +03:00
drm_dp_helper.c drm/dp: drmP.h include removal 2019-05-06 16:00:48 +03:00
drm_dp_mst_topology.c drm/dp: drmP.h include removal 2019-05-06 16:00:48 +03:00
drm_drv.c drm/legacy: move init/destroy of struct members into legacy file 2019-04-24 12:32:18 +10:00
drm_dsc.c
drm_dumb_buffers.c
drm_edid_load.c drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
drm_edid.c drm/edid: Fix docbook in drm_hdmi_infoframe_set_hdr_metadata() 2019-05-23 12:58:35 -04:00
drm_encoder_slave.c
drm_encoder.c
drm_fb_cma_helper.c
drm_fb_helper.c drm: Remove users of drm_format_info_plane_cpp 2019-05-20 13:35:56 +02:00
drm_file.c drm: Some ocd in drm_file.c 2019-05-09 11:40:20 +02:00
drm_flip_work.c
drm_format_helper.c drm: Remove users of drm_format_info_plane_cpp 2019-05-20 13:35:56 +02:00
drm_fourcc.c drm/fourcc: Pass the format_info pointer to drm_format_plane_width/height 2019-05-20 13:35:24 +02:00
drm_framebuffer.c
drm_gem_cma_helper.c drm/cma-helper: Fix drm_gem_cma_free_object() 2019-05-08 16:01:40 +02:00
drm_gem_framebuffer_helper.c
drm_gem_shmem_helper.c
drm_gem_vram_helper.c drm: Assert that BO is locked in drm_gem_vram_{pin, unpin}_locked() 2019-05-22 12:43:30 +02:00
drm_gem.c drm/gem: Fix sphinx warnings 2019-04-25 10:02:10 -04:00
drm_hashtab.c
drm_hdcp.c drm/hdcp: drm_hdcp_request_srm() as static 2019-05-13 22:05:54 +02:00
drm_internal.h Features: 2019-05-28 09:26:52 +10:00
drm_ioc32.c drm: allow removal of legacy codepaths (v4.1) 2019-04-24 12:33:15 +10:00
drm_ioctl.c drm: introduce a capability flag for syncobj timeline support 2019-05-02 12:36:47 +10:00
drm_irq.c drm: allow removal of legacy codepaths (v4.1) 2019-04-24 12:33:15 +10:00
drm_kms_helper_common.c
drm_lease.c drm/lease: Check for lessor outside of locks 2019-04-24 11:29:32 +02:00
drm_legacy_misc.c drm: Some ocd in drm_file.c 2019-05-09 11:40:20 +02:00
drm_legacy.h drm: Some ocd in drm_file.c 2019-05-09 11:40:20 +02:00
drm_lock.c drm/legacy: move lock cleanup for master into lock file (v2) 2019-04-24 12:32:15 +10:00
drm_memory.c
drm_mipi_dsi.c
drm_mm.c drm: Simplify stacktrace handling 2019-04-29 12:37:53 +02:00
drm_mode_config.c drm: Expose "FB_DAMAGE_CLIPS" property to atomic aware user-space only 2019-04-16 15:13:23 -07:00
drm_mode_object.c drm/atomic: Wire file_priv through for property changes 2019-04-24 11:30:52 +02:00
drm_modes.c
drm_modeset_helper.c
drm_modeset_lock.c
drm_of.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
drm_panel_orientation_quirks.c
drm_panel.c
drm_pci.c
drm_plane_helper.c
drm_plane.c drm/lease: Make sure implicit planes are leased 2019-04-24 11:30:32 +02:00
drm_prime.c drm: remove prime sg_table caching 2019-05-22 15:34:55 +02:00
drm_print.c
drm_probe_helper.c
drm_property.c
drm_rect.c
drm_scatter.c
drm_scdc_helper.c
drm_simple_kms_helper.c
drm_syncobj.c drm pull request for 5.2 2019-05-08 21:35:19 -07:00
drm_sysfs.c drm: revocation check at drm subsystem 2019-05-09 09:44:41 +02:00
drm_trace_points.c
drm_trace.h
drm_vblank.c
drm_vm.c drm: allow removal of legacy codepaths (v4.1) 2019-04-24 12:33:15 +10:00
drm_vma_manager.c
drm_vram_helper_common.c drm: Replace drm_gem_vram_push_to_system() with kunmap + unpin 2019-05-22 12:43:29 +02:00
drm_vram_mm_helper.c drm: Integrate VRAM MM into struct drm_device 2019-05-15 16:17:06 +02:00
drm_writeback.c
Kconfig drm-misc-next for v5.3, try #2: 2019-05-28 08:59:11 +10:00
Makefile Features: 2019-05-28 09:26:52 +10:00