linux_dsm_epyc7002/drivers/gpu/drm/i915
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
..
display drm/i915/ehl: Allow combo PHY A to drive a third external display 2019-06-19 11:28:02 -07:00
gem drm/i915: Stop passing I915_WAIT_LOCKED to i915_request_wait() 2019-06-19 12:58:38 +01:00
gt drm/i915: Stop passing I915_WAIT_LOCKED to i915_request_wait() 2019-06-19 12:58:38 +01:00
gvt drm/i915/gtt: Use a common type for page directories 2019-06-17 16:30:54 +03:00
selftests drm/i915: Stop passing I915_WAIT_LOCKED to i915_request_wait() 2019-06-19 12:58:38 +01:00
.gitignore
i915_active_types.h drm/i915: Keep contexts pinned until after the next kernel context switch 2019-06-14 19:03:32 +01:00
i915_active.c drm/i915: Keep engine alive as we retire the context 2019-06-18 15:14:22 +01:00
i915_active.h drm/i915: Stop passing I915_WAIT_LOCKED to i915_request_wait() 2019-06-19 12:58:38 +01:00
i915_cmd_parser.c drm/i915: Move GEM object domain management from struct_mutex to local 2019-05-28 12:45:29 +01:00
i915_debugfs.c drm/i915: no need to check return value of debugfs_create functions 2019-06-17 15:53:08 +03:00
i915_debugfs.h drm/i915: extract i915_debugfs.h from i915_drv.h 2019-05-03 10:06:40 +03:00
i915_drv.c drm/i915/ehl: Introduce Mule Creek Canyon PCH 2019-06-17 13:40:20 -07:00
i915_drv.h drm/i915: Update DRIVER_DATE to 20190619 2019-06-19 15:32:25 +03:00
i915_fixed.h drm/i915: Use mul_u32_u32() more 2019-05-03 20:09:51 +03:00
i915_gem_batch_pool.c drm/i915: Use drm_gem_object.resv 2019-06-18 15:30:32 +01:00
i915_gem_batch_pool.h drm/i915: Split GEM object type definition to its own header 2019-05-28 12:45:29 +01:00
i915_gem_evict.c drm/i915: Move more GEM objects under gem/ 2019-05-28 12:45:29 +01:00
i915_gem_fence_reg.c drm/i915: make intel_wakeref work on the rpm struct 2019-06-14 15:58:33 +01:00
i915_gem_fence_reg.h drm/i915: Move fence register tracking from i915->mm to ggtt 2019-06-13 09:37:39 +01:00
i915_gem_gtt.c drm/i915/gtt: Serialise both updates to PDE and our shadow 2019-06-17 20:53:03 +01:00
i915_gem_gtt.h drm/i915/gtt: Use a common type for page directories 2019-06-17 16:30:54 +03:00
i915_gem_render_state.c drm/i915: Drop the deferred active reference 2019-05-28 12:45:29 +01:00
i915_gem_render_state.h
i915_gem.c drm/i915: move modesetting core code under display/ 2019-06-17 11:48:32 +03:00
i915_gem.h drm/i915: Load balancing across a virtual engine 2019-05-22 08:40:38 +01:00
i915_globals.c drm/i915: Move more GEM objects under gem/ 2019-05-28 12:45:29 +01:00
i915_globals.h
i915_gpu_error.c drm/i915: move modesetting core code under display/ 2019-06-17 11:48:32 +03:00
i915_gpu_error.h
i915_ioc32.c
i915_irq.c drm/i915/ehl: Introduce Mule Creek Canyon PCH 2019-06-17 13:40:20 -07:00
i915_irq.h drm/i915/guc: Correctly handle GuC interrupts on Gen11 2019-05-28 10:07:17 +01:00
i915_memcpy.c
i915_mm.c
i915_oa_bdw.c
i915_oa_bdw.h
i915_oa_bxt.c
i915_oa_bxt.h
i915_oa_cflgt2.c
i915_oa_cflgt2.h
i915_oa_cflgt3.c
i915_oa_cflgt3.h
i915_oa_chv.c
i915_oa_chv.h
i915_oa_cnl.c
i915_oa_cnl.h
i915_oa_glk.c
i915_oa_glk.h
i915_oa_hsw.c
i915_oa_hsw.h
i915_oa_icl.c
i915_oa_icl.h
i915_oa_kblgt2.c
i915_oa_kblgt2.h
i915_oa_kblgt3.c
i915_oa_kblgt3.h
i915_oa_sklgt2.c
i915_oa_sklgt2.h
i915_oa_sklgt3.c
i915_oa_sklgt3.h
i915_oa_sklgt4.c
i915_oa_sklgt4.h
i915_params.c drm/i915: add force_probe module parameter to replace alpha_support 2019-05-31 16:20:30 +03:00
i915_params.h drm/i915: add force_probe module parameter to replace alpha_support 2019-05-31 16:20:30 +03:00
i915_pci.c drm/i915: move modesetting core code under display/ 2019-06-17 11:48:32 +03:00
i915_perf.c drm/i915: update rpm_get/put to use the rpm structure 2019-06-14 15:58:33 +01:00
i915_pmu.c drm/i915: update with_intel_runtime_pm to use the rpm structure 2019-06-14 15:58:33 +01:00
i915_pmu.h
i915_priolist_types.h drm/i915: Downgrade NEWCLIENT to non-preemptive 2019-05-20 18:28:22 +03:00
i915_pvinfo.h
i915_query.c Revert "drm/i915: Expand subslice mask" 2019-05-29 17:18:18 +03:00
i915_query.h
i915_reg.h drm/i915/ehl: Allow combo PHY A to drive a third external display 2019-06-19 11:28:02 -07:00
i915_request.c drm/i915: Flush the execution-callbacks on retiring 2019-06-19 17:09:25 +01:00
i915_request.h drm/i915: Replace engine->timeline with a plain list 2019-06-14 19:03:40 +01:00
i915_scatterlist.c drm/i915: Pull scatterlist utils out of i915_gem.h 2019-05-28 12:45:29 +01:00
i915_scatterlist.h drm/i915: Pull scatterlist utils out of i915_gem.h 2019-05-28 12:45:29 +01:00
i915_scheduler_types.h drm/i915: Bump signaler priority on adding a waiter 2019-05-20 18:28:04 +03:00
i915_scheduler.c drm/i915: Replace engine->timeline with a plain list 2019-06-14 19:03:40 +01:00
i915_scheduler.h drm/i915: Only reschedule the submission tasklet if preemption is possible 2019-05-07 17:40:20 +01:00
i915_selftest.h
i915_suspend.c drm/i915: move modesetting core code under display/ 2019-06-17 11:48:32 +03:00
i915_sw_fence.c
i915_sw_fence.h
i915_syncmap.c
i915_syncmap.h
i915_sysfs.c drm/i915: update with_intel_runtime_pm to use the rpm structure 2019-06-14 15:58:33 +01:00
i915_timeline_types.h drm/i915: Replace engine->timeline with a plain list 2019-06-14 19:03:40 +01:00
i915_timeline.c drm/i915: Replace engine->timeline with a plain list 2019-06-14 19:03:40 +01:00
i915_timeline.h drm/i915: Replace engine->timeline with a plain list 2019-06-14 19:03:40 +01:00
i915_trace_points.c
i915_trace.h drm/i915: Stop passing I915_WAIT_LOCKED to i915_request_wait() 2019-06-19 12:58:38 +01:00
i915_user_extensions.c
i915_user_extensions.h
i915_utils.h drm/i915: Move GEM object waiting to its own file 2019-05-28 12:45:29 +01:00
i915_vgpu.c
i915_vgpu.h
i915_vma.c drm/i915: Use drm_gem_object.resv 2019-06-18 15:30:32 +01:00
i915_vma.h drm/i915: Move fence register tracking from i915->mm to ggtt 2019-06-13 09:37:39 +01:00
intel_csr.c drm/i915/dmc: protect against loading wrong firmware 2019-06-17 12:32:34 -07:00
intel_csr.h drm/i915/csr: move CSR version macros to intel_csr.h 2019-05-03 10:06:25 +03:00
intel_device_info.c drm/i915: Kill INTEL_SUBPLATFORM_AML 2019-06-12 14:51:26 +03:00
intel_device_info.h drm/i915: move modesetting core code under display/ 2019-06-17 11:48:32 +03:00
intel_drv.h drm/i915: move and rename i915_runtime_pm 2019-06-14 15:58:33 +01:00
intel_guc_ads.c drm/i915/guc: Reset GuC ADS during sanitize 2019-05-28 10:07:05 +01:00
intel_guc_ads.h drm/i915/guc: Reset GuC ADS during sanitize 2019-05-28 10:07:05 +01:00
intel_guc_ct.c drm/i915/guc: always use Command Transport Buffers 2019-06-09 11:21:33 +01:00
intel_guc_ct.h drm/i915/uc: Stop talking with GuC when resetting 2019-05-23 21:58:36 +01:00
intel_guc_fw.c drm/i915/guc: Define GuC firmware version for Icelake 2019-05-28 10:07:22 +01:00
intel_guc_fw.h
intel_guc_fwif.h drm/i915: fix documentation build warnings 2019-06-06 11:13:20 +03:00
intel_guc_log.c drm/i915/guc: Reduce verbosity on log overflows 2019-06-18 11:35:19 +01:00
intel_guc_log.h
intel_guc_reg.h drm/i915/guc: Correctly handle GuC interrupts on Gen11 2019-05-28 10:07:17 +01:00
intel_guc_submission.c drm/i915: Replace engine->timeline with a plain list 2019-06-14 19:03:40 +01:00
intel_guc_submission.h
intel_guc.c drm/i915: Make GuC GGTT reservation work on ggtt 2019-06-11 14:40:15 +01:00
intel_guc.h drm/i915: Make GuC GGTT reservation work on ggtt 2019-06-11 14:40:15 +01:00
intel_gvt.c
intel_gvt.h
intel_huc_fw.c drm/i915/huc: Define HuC firmware version for Icelake 2019-05-28 10:07:23 +01:00
intel_huc_fw.h
intel_huc.c drm/i915: update with_intel_runtime_pm to use the rpm structure 2019-06-14 15:58:33 +01:00
intel_huc.h drm/i915/huc: New HuC status register for Gen11 2019-05-28 10:07:13 +01:00
intel_pm.c drm/i915: move modesetting core code under display/ 2019-06-17 11:48:32 +03:00
intel_pm.h drm/i915: move pm related declarations to intel_pm.h 2019-06-10 10:29:17 +03:00
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_renderstate.h
intel_runtime_pm.c drm/i915: update rpm_get/put to use the rpm structure 2019-06-14 15:58:33 +01:00
intel_runtime_pm.h drm/i915: move modesetting core code under display/ 2019-06-17 11:48:32 +03:00
intel_sideband.c drm/i915: Make sandybridge_pcode_read() deal with the second data register 2019-05-27 20:51:48 +03:00
intel_sideband.h drm/i915: Make sandybridge_pcode_read() deal with the second data register 2019-05-27 20:51:48 +03:00
intel_uc_fw.c drm/i915: Move GEM object domain management from struct_mutex to local 2019-05-28 12:45:29 +01:00
intel_uc_fw.h
intel_uc.c drm/i915: update with_intel_runtime_pm to use the rpm structure 2019-06-14 15:58:33 +01:00
intel_uc.h drm/i915/guc: Fix runtime suspend 2019-05-03 08:38:37 +01:00
intel_uncore.c drm/i915: update with_intel_runtime_pm to use the rpm structure 2019-06-14 15:58:33 +01:00
intel_uncore.h drm/i915: move and rename i915_runtime_pm 2019-06-14 15:58:33 +01:00
intel_wakeref.c drm/i915: make intel_wakeref work on the rpm struct 2019-06-14 15:58:33 +01:00
intel_wakeref.h drm/i915: make intel_wakeref work on the rpm struct 2019-06-14 15:58:33 +01:00
intel_wopcm.c drm/i915/wopcm: update default size for gen11+ 2019-06-09 11:28:32 +01:00
intel_wopcm.h drm/i915/guc: Move intel_guc_reserved_gtt_size to intel_wopcm_guc_size 2019-06-11 14:40:14 +01:00
Kconfig drm/i915: add force_probe module parameter to replace alpha_support 2019-05-31 16:20:30 +03:00
Kconfig.debug drm/i915: Enable refcount debugging for default debug levels 2019-06-14 12:16:08 +01:00
Kconfig.profile drm/i915: Add a label for config DRM_I915_SPIN_REQUEST 2019-06-12 11:18:55 +01:00
Makefile drm/i915: move modesetting core code under display/ 2019-06-17 11:48:32 +03:00
Makefile.header-test drm/i915: move modesetting core code under display/ 2019-06-17 11:48:32 +03:00