linux_dsm_epyc7002/drivers/gpu/drm/i915
Stefan Brüns cfb926e148 drm/i915: Try EDID bitbanging on HDMI after failed read
The ACK/NACK implementation as found in e.g. the G965 has the falling
clock edge and the release of the data line after the ACK for the received
byte happen at the same time.

This is conformant with the I2C specification, which allows a zero hold
time, see footnote [3]: "A device must internally provide a hold time of
at least 300 ns for the SDA signal (with respect to the V IH(min) of the
SCL signal) to bridge the undefined region of the falling edge of SCL."

Some HDMI-to-VGA converters apparently fail to adhere to this requirement
and latch SDA at the falling clock edge, so instead of an ACK
sometimes a NACK is read and the slave (i.e. the EDID ROM) ends the
transfer.

The bitbanging releases the data line for the ACK only 1/4 bit time after
the falling clock edge, so a slave will see the correct value no matter
if it samples at the rising or the falling clock edge or in the center.

Fallback to bitbanging is already done for the CRT connector.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92685
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
Cc: stable@vger.kernel.org
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/a39f080b-81a5-4c93-b3f7-7cb0a58daca3@rwthex-w2-a.rwth-ad.de
2018-01-09 10:05:35 +01:00
..
gvt drm/i915/gvt: move write protect handler out of mmio emulation function 2017-12-22 16:33:50 +08:00
selftests drm/i915/selftests: Allow random array allocation to fail 2018-01-02 15:30:40 +00:00
dvo_ch7xxx.c drm/i915/dvo: fix debug logging on unknown DID 2017-06-01 15:53:03 +03:00
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
dvo.h
i915_cmd_parser.c drm/i915: Move engine->needs_cmd_parser to engine->flags 2017-11-29 12:29:39 +00:00
i915_debugfs.c drm/i915: Hold rpm wakeref for modifying the global seqno 2018-01-03 11:42:33 +00:00
i915_drv.c drm/i915: Dump device info at once 2017-12-22 09:19:50 +00:00
i915_drv.h drm/i915: Update DRIVER_DATE to 20171222 2017-12-22 11:41:50 -08:00
i915_gem_batch_pool.c drm/i915: Reinstate reservation_object zapping for batch_pool objects 2017-06-14 14:06:22 +01:00
i915_gem_batch_pool.h
i915_gem_clflush.c drm/i915: Allow fence allocations to fail 2017-12-13 13:17:44 +00:00
i915_gem_clflush.h drm/i915: Force CPU synchronisation even if userspace requests ASYNC 2017-07-27 22:07:24 +02:00
i915_gem_context.c drm/i915: Allow fence allocations to fail 2017-12-13 13:17:44 +00:00
i915_gem_context.h drm/i915: Record the default hw state after reset upon load 2017-11-10 17:23:10 +00:00
i915_gem_dmabuf.c drm/i915: s/sg_mask/sg_page_sizes/ 2017-10-09 17:07:29 +01:00
i915_gem_evict.c Linux 4.14-rc7 2017-11-02 12:40:41 +10:00
i915_gem_execbuffer.c drm/i915: make mappable struct resource centric 2017-12-12 12:30:21 +02:00
i915_gem_fence_reg.c drm/i915: Track user GTT faulting per-vma 2017-10-09 17:07:29 +01:00
i915_gem_fence_reg.h
i915_gem_gtt.c drm/i915: Pass DMA_ATTR_NO_WARN to dma_map_sg() 2018-01-04 18:48:53 +00:00
i915_gem_gtt.h drm/i915: prefer resource_size_t for everything stolen 2017-12-12 12:30:22 +02:00
i915_gem_internal.c drm/i915: Allow internal page allocations to fail 2017-12-15 11:35:43 +00:00
i915_gem_object.c drm/i915: Split obj->cache_coherent to track r/w 2017-08-15 15:46:57 +01:00
i915_gem_object.h drm/i915/gvt: Dmabuf support for GVT-g 2017-12-04 11:24:33 +08:00
i915_gem_render_state.c drm/i915: Pull the unconditional GPU cache invalidation into request construction 2017-11-20 15:56:16 +00:00
i915_gem_render_state.h drm/i915: Stop caching the "golden" renderstate 2017-11-10 17:23:22 +00:00
i915_gem_request.c drm/i915: Assert all signalers we depended on did indeed signal 2018-01-03 12:05:41 +00:00
i915_gem_request.h drm/i915: Assert all signalers we depended on did indeed signal 2018-01-03 12:05:41 +00:00
i915_gem_shrinker.c drm/i915: Update shrinker drm_i915_private naming convention 2017-11-27 16:37:15 +00:00
i915_gem_stolen.c drm/i915: prefer resource_size_t for everything stolen 2017-12-12 12:30:22 +02:00
i915_gem_tiling.c drm/i915: Refactor common list iteration over GGTT vma 2017-12-07 23:26:55 +00:00
i915_gem_timeline.c drm/i915: properly init lockdep class 2017-12-14 20:10:01 +02:00
i915_gem_timeline.h drm/i915: Rename i915_gem_timelines_mark_idle 2017-11-27 16:37:15 +00:00
i915_gem_userptr.c previous part 2 tag + ttm regression fix, i915,vc4,core,uapi fixes 2017-11-28 10:01:15 -08:00
i915_gem.c drm/i915: Don't adjust priority on an already signaled fence 2018-01-08 09:16:02 +00:00
i915_gem.h drm/i915: Print the condition causing GEM_BUG_ON 2017-11-16 15:35:47 +02:00
i915_gemfs.c drm/i915: Disable THP until we have a GPU read BW W/A 2017-11-30 10:11:49 +02:00
i915_gemfs.h drm/i915: introduce simple gemfs 2017-10-07 10:11:41 +01:00
i915_gpu_error.c drm/i915: Show if we consider the engine is idle in the GPU error state 2017-12-19 21:55:13 +00:00
i915_ioc32.c
i915_irq.c drm/i915/guc: Introduce USES_GUC_xxx helper macros 2017-12-06 14:41:49 +00:00
i915_memcpy.c drm/i915: Do not enable movntdqa optimization in hypervisor guest 2017-12-22 11:12:15 +00:00
i915_mm.c
i915_oa_bdw.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_bdw.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_bxt.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_bxt.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_cflgt2.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_cflgt2.h drm/i915/perf: add support for Coffeelake GT2 2017-09-18 19:46:36 +01:00
i915_oa_cflgt3.c drm/i915/perf: add support for Coffeelake GT3 2017-11-13 15:59:03 +00:00
i915_oa_cflgt3.h drm/i915/perf: add support for Coffeelake GT3 2017-11-13 15:59:03 +00:00
i915_oa_chv.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_chv.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_cnl.c drm/i915/perf: enable perf support on CNL 2017-11-13 15:59:24 +00:00
i915_oa_cnl.h drm/i915/perf: enable perf support on CNL 2017-11-13 15:59:24 +00:00
i915_oa_glk.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_glk.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_hsw.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_hsw.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_kblgt2.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_kblgt2.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_kblgt3.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_kblgt3.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_sklgt2.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_sklgt2.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_sklgt3.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_sklgt3.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_sklgt4.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_sklgt4.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_params.c drm/i915: Add pretty printer for modparams 2017-12-19 15:07:08 +00:00
i915_params.h drm/i915: Add pretty printer for modparams 2017-12-19 15:07:08 +00:00
i915_pci.c drm/i915/cfl: Adding more Coffee Lake PCI IDs. 2017-12-20 11:24:25 -08:00
i915_perf.c drm/i915: Remove i915.enable_execlists module parameter 2017-11-20 21:53:59 +00:00
i915_pmu.c drm/i915: Remove unsafe i915.enable_rc6 2017-12-01 15:20:02 +00:00
i915_pmu.h drm/i915/pmu: Stop averaging with the previous sample 2017-11-24 13:20:48 +00:00
i915_pvinfo.h drm/i915: enable to read CSB and CSB write pointer from HWSP in GVT-g VM 2017-10-16 13:56:29 +03:00
i915_reg.h drm/i915: Whitelist SLICE_COMMON_ECO_CHICKEN1 on Geminilake. 2018-01-05 09:42:33 -08:00
i915_selftest.h drm/i915/selftests: Reduce the volume of the timeout message 2017-11-10 11:31:58 +00:00
i915_suspend.c drm/i915: Move i915_gem_restore_fences to i915_gem_resume 2017-09-29 12:30:17 +01:00
i915_sw_fence.c drm/i915: Mark up potential allocation paths within i915_sw_fence as might_sleep 2017-12-13 13:17:37 +00:00
i915_sw_fence.h main drm pull for v4.13 2017-07-09 18:48:37 -07:00
i915_syncmap.c
i915_syncmap.h
i915_sysfs.c drm/i915: Remove unsafe i915.enable_rc6 2017-12-01 15:20:02 +00:00
i915_trace_points.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
i915_trace.h drm/i915/trace: add hw_id to gem requests trace points 2017-12-18 16:10:32 +00:00
i915_utils.h drm/i915: Move some utility functions to i915_util.h 2017-12-22 09:13:47 +00:00
i915_vgpu.c drm/i915: Enable guest i915 full ppgtt functionality 2017-08-15 10:12:48 +08:00
i915_vgpu.h drm/i915: enable to read CSB and CSB write pointer from HWSP in GVT-g VM 2017-10-16 13:56:29 +03:00
i915_vma.c drm/i915: make mappable struct resource centric 2017-12-12 12:30:21 +02:00
i915_vma.h drm/i915: Refactor common list iteration over GGTT vma 2017-12-07 23:26:55 +00:00
intel_acpi.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
intel_atomic_plane.c drm/i915: Pass proper old/new states to intel_plane_atomic_check_with_state() 2017-09-01 16:48:24 +03:00
intel_atomic.c drm/i915/cnl: Fix Cannonlake scaler mode programing. 2017-06-12 09:45:55 -07:00
intel_audio.c drm/i915: Fix kerneldocs for intel_audio.c 2017-11-15 17:32:54 +02:00
intel_bios.c Merge airlied/drm-next into drm-intel-next-queued 2017-11-14 07:43:00 -08:00
intel_bios.h
intel_breadcrumbs.c drm/i915: Assert we do not try to wait on an invalid seqno 2018-01-03 17:48:00 +00:00
intel_cdclk.c drm/i915/vlv: Add cdclk workaround for DSI 2017-12-23 19:59:43 +01:00
intel_color.c drm/i915: Pass crtc_state to ips toggle functions, v2 2017-11-17 12:14:25 +01:00
intel_crt.c drm/i915: Eliminate crtc->config usage from CRT code 2017-11-09 20:05:18 +02:00
intel_csr.c drm/i915/dmc: DMC 1.07 for Cannonlake 2018-01-04 16:29:12 -08:00
intel_ddi.c drm/i915: Fix indentation for intel_ddi_clk_select 2017-12-19 12:44:41 +00:00
intel_device_info.c drm/i915: Add pretty printer for runtime part of intel_device_info 2017-12-22 09:19:49 +00:00
intel_device_info.h drm/i915: Add pretty printer for runtime part of intel_device_info 2017-12-22 09:19:49 +00:00
intel_display.c drm/i915: Put all non-blocking modesets onto an ordered wq 2017-12-22 14:29:42 +02:00
intel_display.h drm/i915: Move display related definitions to dedicated header 2017-12-22 09:18:24 +00:00
intel_dp_aux_backlight.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_dp_link_training.c drm/i915: Explicit the connector name for DP link training result 2017-07-19 08:32:42 +02:00
intel_dp_mst.c drm/i915: Nuke intel_digital_port->port 2017-11-09 20:06:14 +02:00
intel_dp.c drm-intel-next-2017-12-01: 2017-12-08 08:41:22 +10:00
intel_dpio_phy.c drm/i915: Nuke intel_digital_port->port 2017-11-09 20:06:14 +02:00
intel_dpll_mgr.c drm/i915/cnl: Simplify dco_fraction calculation. 2017-11-16 09:45:39 -08:00
intel_dpll_mgr.h drm/i915/cnl: Initialize PLLs 2017-06-12 09:42:18 -07:00
intel_drv.h More change sets for 4.16: 2017-12-04 10:56:53 +10:00
intel_dsi_dcs_backlight.c drm/i915: Initialize 'data' in intel_dsi_dcs_backlight.c 2017-08-16 18:02:00 +03:00
intel_dsi_pll.c
intel_dsi_vbt.c drm/i915/bxt: use NULL for GPIO connection ID 2017-08-21 11:52:29 +03:00
intel_dsi.c drm-intel-next-2017-12-01: 2017-12-08 08:41:22 +10:00
intel_dsi.h
intel_dvo.c drm/i915: Populate output_types from .get_config() 2017-10-30 19:53:22 +02:00
intel_engine_cs.c drm/i915: Whitelist SLICE_COMMON_ECO_CHICKEN1 on Geminilake. 2018-01-05 09:42:33 -08:00
intel_fbc.c drm/i915: make dsm struct resource centric 2017-12-12 12:30:19 +02:00
intel_fbdev.c drm/i915: give stolen_usable_size a more suitable home 2017-12-12 12:30:22 +02:00
intel_fifo_underrun.c drm/i915: Don't rmw PIPESTAT enable bits 2017-09-25 16:54:09 +03:00
intel_frontbuffer.c
intel_frontbuffer.h
intel_guc_ads.c drm/i915/guc : Decoupling ADS and logs from submission 2018-01-03 14:02:10 +00:00
intel_guc_ads.h drm/i915/guc : Decoupling ADS and logs from submission 2018-01-03 14:02:10 +00:00
intel_guc_ct.c drm/i915/guc: Assert ctch->vma is allocated 2017-11-06 13:57:37 +00:00
intel_guc_ct.h drm/i915/guc: Introduce buffer based cmd transport 2017-05-26 13:26:53 +01:00
intel_guc_fw.c drm/i915/glk: Disable Guc and HuC on GLK 2018-01-04 14:45:07 -08:00
intel_guc_fw.h drm/i915/guc: Move firmware selection to init_early 2017-12-06 14:41:47 +00:00
intel_guc_fwif.h drm/i915/guc: Add support for reset engine using GuC commands 2017-11-02 08:42:11 +00:00
intel_guc_log.c drm/i915/guc: Move GuC workqueue allocations outside of the mutex 2017-12-14 08:06:54 +00:00
intel_guc_log.h drm/i915: Unify uC variable types to avoid flooding checkpatch.pl 2017-10-06 14:09:40 +03:00
intel_guc_reg.h drm/i915/guc: Use consistent name for scratch register count 2017-11-24 20:47:39 +00:00
intel_guc_submission.c drm/i915/guc : Decoupling ADS and logs from submission 2018-01-03 14:02:10 +00:00
intel_guc_submission.h drm/i915/guc: Move GuC workqueue allocations outside of the mutex 2017-12-14 08:06:54 +00:00
intel_guc.c drm/i915/guc : Decoupling ADS and logs from submission 2018-01-03 14:02:10 +00:00
intel_guc.h drm/i915/guc: Move GuC workqueue allocations outside of the mutex 2017-12-14 08:06:54 +00:00
intel_gvt.c drm/i915/guc: Introduce USES_GUC_xxx helper macros 2017-12-06 14:41:49 +00:00
intel_gvt.h drm/i915/gvt: Add gvt options sanitize function 2017-05-30 15:59:47 +03:00
intel_hangcheck.c drm/i915: Remove pointer indirection for hangcheck_state local 2017-12-19 21:55:13 +00:00
intel_hdmi.c drm/i915: Try EDID bitbanging on HDMI after failed read 2018-01-09 10:05:35 +01:00
intel_hotplug.c drm/i915: Introduce intel_hpd_pin function. 2017-08-11 11:53:47 -07:00
intel_huc.c drm/i915/glk: Disable Guc and HuC on GLK 2018-01-04 14:45:07 -08:00
intel_huc.h drm/i915/huc: Load HuC only if requested 2017-12-06 14:41:54 +00:00
intel_i2c.c drm/i915: Disable GMBUS clock gating around GMBUS transfers on gen9+ 2017-12-22 14:23:14 +02:00
intel_lpe_audio.c drm/i915/lpe: Remove double-encapsulation of info string 2017-12-15 11:36:45 +00:00
intel_lrc.c drm/i915: Don't adjust priority on an already signaled fence 2018-01-08 09:16:02 +00:00
intel_lrc.h drm/i915: Remove i915.enable_execlists module parameter 2017-11-20 21:53:59 +00:00
intel_lspcon.c drm/i915: Add retries for LSPCON detection 2017-10-13 12:15:10 +03:00
intel_lvds.c drm/i915: Populate output_types from .get_config() 2017-10-30 19:53:22 +02:00
intel_mocs.c drm/i915/cnl: Cannonlake has same MOCS table than Skylake. 2017-06-07 07:29:51 -07:00
intel_mocs.h
intel_modes.c Merge airlied/drm-next into drm-misc-next 2017-11-21 14:17:56 +01:00
intel_opregion.c drm/i915: Move opregion definitions to dedicated intel_opregion.h 2017-12-22 09:19:48 +00:00
intel_opregion.h drm/i915: Move opregion definitions to dedicated intel_opregion.h 2017-12-22 09:19:48 +00:00
intel_overlay.c drm/i915: make mappable struct resource centric 2017-12-12 12:30:21 +02:00
intel_panel.c drm/i915: hide unused intel_panel_set_backlight function 2017-11-27 17:27:15 +01:00
intel_pipe_crc.c drm/i915: Make ips_enabled a property depending on whether IPS is enabled, v3. 2017-11-30 16:49:42 +01:00
intel_pm.c drm/i915: Implement WaDisableVFclkgate. 2017-12-19 13:43:21 -08:00
intel_psr.c drm/i915/psr: Fix register name mess up. 2017-12-20 09:25:37 +00:00
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c drm/i915/gen9: Send all components in VF state 2017-08-14 12:15:49 +03:00
intel_renderstate.h
intel_ringbuffer.c drm/i915: Move mi_set_context() into the legacy ringbuffer submission 2017-11-23 16:12:06 +00:00
intel_ringbuffer.h drm/i915: Make engine state pretty-printer header configurable 2017-12-08 18:48:34 +00:00
intel_runtime_pm.c drm/i915: Apply Display WA #1183 on skl, kbl, and cfl 2017-12-22 13:50:18 -08:00
intel_sdvo_regs.h
intel_sdvo.c drm/i915: Eliminate some encoder->crtc usage from SDVO code 2017-11-09 20:04:47 +02:00
intel_sideband.c drm/i915: Move rps.hw_lock to dev_priv and s/hw_lock/pcu_lock 2017-10-11 08:56:56 +01:00
intel_sprite.c drm/i915: s/enum plane/enum i9xx_plane_id/ 2017-11-21 19:44:03 +02:00
intel_tv.c drm/i915: Eliminate some encoder->crtc usage from TV code 2017-11-09 20:04:56 +02:00
intel_uc_fw.c drm/i915/uc: Don't use -EIO to report missing firmware 2017-12-06 14:41:52 +00:00
intel_uc_fw.h drm/i915/guc: Move firmware selection to init_early 2017-12-06 14:41:47 +00:00
intel_uc.c drm/i915/guc: Extract guc_init from guc_init_hw 2017-12-14 08:06:56 +00:00
intel_uc.h drm/i915/guc: Extract guc_init from guc_init_hw 2017-12-14 08:06:56 +00:00
intel_uncore.c drm/i915/guc : GEM_BUG_ON on invoking GuC reset function 2018-01-03 14:02:12 +00:00
intel_uncore.h drm/i915: Re-register PMIC bus access notifier on runtime resume 2017-11-21 11:39:31 +02:00
intel_vbt_defs.h drm/i915: Parse max HDMI TMDS clock from VBT 2017-10-30 19:48:11 +02:00
Kconfig drm/i915/fence: Avoid del_timer_sync() from inside a timer 2017-09-19 13:06:21 +01:00
Kconfig.debug drm/i915: Avoid context dereference inside execlists_submission_tasklet 2017-12-19 23:04:45 +00:00
Makefile drm/i915/guc : Decoupling ADS and logs from submission 2018-01-03 14:02:10 +00:00