linux-hardened/drivers/gpu/drm/i915
Takashi Iwai 9dfbffcf4a drm/i915: Fix bogus dig_port_map[] assignment for pre-HSW
The recent commit [0bdf5a0564: drm/i915: Add reverse mapping between
port and intel_encoder] introduced a reverse mapping to retrieve
intel_dig_port object from the port number.  The code assumed that the
port vs intel_dig_port are 1:1 mapping.  But in reality, this was a
too naive assumption.

As Martin reported about the missing HDMI audio on his SNB machine,
pre-HSW chips may have multiple intel_dig_port objects corresponding
to the same port.  Since we assign the mapping statically at the init
time and the multiple objects override the map, it may not match with
the actually enabled output.

This patch tries to address the regression above.  The reverse mapping
is provided basically only for the audio callbacks, so now we set /
clear the mapping dynamically at enabling and disabling HDMI/DP audio,
so that we can always track the latest and correct object
corresponding to the given port.

Fixes: 0bdf5a0564 ('drm/i915: Add reverse mapping between port and intel_encoder')
Reported-and-tested-by: Martin Kepplinger <martink@posteo.de>
Cc: drm-intel-fixes@lists.freedesktop.org
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1456324522-21591-1-git-send-email-tiwai@suse.de
2016-03-07 17:51:28 +02:00
..
dvo.h drm/i915: constify intel_dvo_dev_ops structures 2015-12-09 08:21:10 +01:00
dvo_ch7xxx.c drm/i915: constify intel_dvo_dev_ops structures 2015-12-09 08:21:10 +01:00
dvo_ch7017.c drm/i915: constify intel_dvo_dev_ops structures 2015-12-09 08:21:10 +01:00
dvo_ivch.c drm/i915: constify intel_dvo_dev_ops structures 2015-12-09 08:21:10 +01:00
dvo_ns2501.c drm/i915: constify intel_dvo_dev_ops structures 2015-12-09 08:21:10 +01:00
dvo_sil164.c drm/i915: constify intel_dvo_dev_ops structures 2015-12-09 08:21:10 +01:00
dvo_tfp410.c drm/i915: constify intel_dvo_dev_ops structures 2015-12-09 08:21:10 +01:00
i915_cmd_parser.c drm/i915: Type safe register read/write 2015-11-18 15:39:11 +02:00
i915_debugfs.c drm/i915/hangcheck: Prevent long walks across full-ppgtt 2016-03-04 15:17:14 +02:00
i915_dma.c drm/i915: Avoid snooping with userptr where not supported 2016-03-02 13:46:21 +00:00
i915_drv.c drm/i915: Use atomic helpers for suspend, v2. 2016-02-16 11:23:46 +01:00
i915_drv.h drm/i915: Store rawclk_freq in dev_priv 2016-03-04 14:42:25 +02:00
i915_gem.c drm/i915: Avoid snooping with userptr where not supported 2016-03-02 13:46:21 +00:00
i915_gem_batch_pool.c
i915_gem_batch_pool.h
i915_gem_context.c drm/i915: Rename vma->*_list to *_link for consistency 2016-02-26 13:15:39 +00:00
i915_gem_debug.c
i915_gem_dmabuf.c drm/i915: Use CPU mapping for userspace dma-buf mmap() 2016-02-09 11:21:03 +01:00
i915_gem_evict.c drm/i915: Rename vma->*_list to *_link for consistency 2016-02-26 13:15:39 +00:00
i915_gem_execbuffer.c drm/i915: Reduce the pointer dance of i915_is_ggtt() 2016-02-26 13:15:39 +00:00
i915_gem_fence.c Linux 4.4-rc4 2015-12-08 11:04:26 +10:00
i915_gem_gtt.c drm/i915: Move the NULL sg handling out from rotate_pages() 2016-03-01 12:48:09 +02:00
i915_gem_gtt.h drm/i915: Reorganize intel_rotation_info 2016-03-01 12:48:09 +02:00
i915_gem_render_state.c drm/i915: mark GEM object pages dirty when mapped & written by the CPU 2015-12-11 18:11:53 +01:00
i915_gem_render_state.h drm/i915: Add provision to extend Golden context batch 2015-07-21 09:30:57 +02:00
i915_gem_shrinker.c drm/i915: Rename vma->*_list to *_link for consistency 2016-02-26 13:15:39 +00:00
i915_gem_stolen.c drm/i915: Rename vma->*_list to *_link for consistency 2016-02-26 13:15:39 +00:00
i915_gem_tiling.c drm/i915: get runtime PM reference around GEM set_tiling IOCTL 2015-11-17 18:43:30 +02:00
i915_gem_userptr.c drm/i915: Avoid snooping with userptr where not supported 2016-03-02 13:46:21 +00:00
i915_gpu_error.c drm/i915/hangcheck: Prevent long walks across full-ppgtt 2016-03-04 15:17:14 +02:00
i915_guc_reg.h drm/i915/guc: Add GuC ADS (Addition Data Structure) - allocation 2016-01-05 11:33:34 +01:00
i915_guc_submission.c drm/i915/guc: Decouple GuC engine id from ring id 2016-01-25 10:56:30 +00:00
i915_ioc32.c Merge tag 'drm-intel-fixes-2015-07-15' into drm-intel-next-queued 2015-07-15 16:36:50 +02:00
i915_irq.c drm/i915/hangcheck: Prevent long walks across full-ppgtt 2016-03-04 15:17:14 +02:00
i915_params.c drm/i915: drop unused i915.disable_vtd_wa module parameter 2016-02-19 17:27:15 +02:00
i915_params.h drm/i915: drop unused i915.disable_vtd_wa module parameter 2016-02-19 17:27:15 +02:00
i915_reg.h drm/i915: Read out hrawclk from CCK on vlv/chv 2016-03-04 14:44:09 +02:00
i915_suspend.c drm/i915/bxt: Don't save/restore eDP panel power during suspend (v3) 2016-02-02 20:12:05 +02:00
i915_sysfs.c drm/i915: Hold RPM reference while setting freq limits through sysfs 2016-03-02 18:50:47 +02:00
i915_trace.h drm/i915: Reduce the pointer dance of i915_is_ggtt() 2016-02-26 13:15:39 +00:00
i915_trace_points.c
i915_vgpu.c drm/i915: Turn __raw_i915_read8() & co. in to inline functions 2015-10-26 16:28:04 +02:00
i915_vgpu.h drm/i915: Type safe register read/write 2015-11-18 15:39:11 +02:00
intel_acpi.c drm/i915: Drop unnecessary #include <linux/vga_switcheroo.h> 2015-10-13 10:18:38 +02:00
intel_atomic.c drm/i915: Add two-stage ILK-style watermark programming (v11) 2016-02-29 08:20:53 -08:00
intel_atomic_plane.c drm/i915: Remove commit_plane function pointer. 2016-01-07 13:52:04 +01:00
intel_audio.c drm/i915: Fix bogus dig_port_map[] assignment for pre-HSW 2016-03-07 17:51:28 +02:00
intel_bios.c drm/i915/bios: Fix the sequence size calculations for MIPI seq v3 2016-01-15 11:38:11 +02:00
intel_bios.h drm/i915/bios: add defines for v3 sequence block 2016-01-11 19:16:19 +02:00
intel_crt.c drm/i915: Do not return unknown status when load detection is tested. 2016-03-02 10:43:07 +01:00
intel_csr.c drm/i915/gen9: Fix DMC firmware initialization 2016-03-07 15:15:29 +02:00
intel_ddi.c drm/i915: Fix bogus dig_port_map[] assignment for pre-HSW 2016-03-07 17:51:28 +02:00
intel_display.c drm/i915: Read out hrawclk from CCK on vlv/chv 2016-03-04 14:44:09 +02:00
intel_dp.c drm/i915: Fix bogus dig_port_map[] assignment for pre-HSW 2016-03-07 17:51:28 +02:00
intel_dp_link_training.c drm/i915/dp: reduce missing TPS3 support errors to debug logging 2016-02-05 14:46:27 +02:00
intel_dp_mst.c drm/i915: DisplayPort-MST pixel clock check 2016-02-11 10:15:38 +01:00
intel_drv.h drm/i915/gen9: Fix DMC firmware initialization 2016-03-07 15:15:29 +02:00
intel_dsi.c drm/i915/dsi: Using the bpp value wrt the pixel format 2016-02-19 14:56:05 +02:00
intel_dsi.h drm/i915/dsi: Using the bpp value wrt the pixel format 2016-02-19 14:56:05 +02:00
intel_dsi_panel_vbt.c drm/i915/dsi: Using the bpp value wrt the pixel format 2016-02-19 14:56:05 +02:00
intel_dsi_pll.c drm/i915/bxt: Additional MIPI clock divider form B0 stepping onwards 2016-03-03 15:05:52 +02:00
intel_dvo.c drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
intel_fbc.c drm/i915/fbc: enable FBC by default on HSW and BDW 2016-02-19 18:06:16 -02:00
intel_fbdev.c drm/i915: Don't pass plane+plane_state to intel_pin_and_fence_fb_obj() 2016-03-01 12:48:09 +02:00
intel_fifo_underrun.c drm/i915: Introduce bdw_{update,enable,disable}_pipe_irq() 2015-11-26 18:55:39 +02:00
intel_frontbuffer.c drm/i915: fix FBC frontbuffer tracking flushing code 2015-08-05 09:59:44 +02:00
intel_guc.h drm/i915/guc: Decouple GuC engine id from ring id 2016-01-25 10:56:30 +00:00
intel_guc_fwif.h drm/i915/guc: Decouple GuC engine id from ring id 2016-01-25 10:56:30 +00:00
intel_guc_loader.c drm/i915/guc: Do not wait for firmware load atomically 2016-02-15 16:10:19 +00:00
intel_hdmi.c drm/i915: Fix bogus dig_port_map[] assignment for pre-HSW 2016-03-07 17:51:28 +02:00
intel_hotplug.c drm/i915: intel_hpd_init(): Fix suspend/resume reprobing 2016-01-13 10:49:42 +02:00
intel_i2c.c drm/i915: fix error path in intel_setup_gmbus() 2016-02-10 10:53:29 +02:00
intel_lrc.c drm/i915/lrc: Do not wait atomically when stopping engines 2016-03-03 17:26:51 +00:00
intel_lrc.h drm/i915: Make LRC (un)pinning work on context and engine 2016-01-28 17:23:15 +00:00
intel_lvds.c drm/i915: Move the encoder vs. FDI dotclock check out from encoder .get_config() 2016-03-01 13:04:04 +02:00
intel_mocs.c drm/i915: Type safe register read/write 2015-11-18 15:39:11 +02:00
intel_mocs.h drm/i915: Added Programming of the MOCS 2015-07-14 17:13:14 +02:00
intel_modes.c drm/i915: Add HDMI aspect ratio property for SDVO 2015-09-30 10:20:12 +02:00
intel_opregion.c drm/i915/opregion: handle VBT sizes bigger than 6 KB 2015-12-17 11:40:57 +02:00
intel_overlay.c drm/i915: simplify allocation of driver-internal requests 2016-01-21 09:21:29 +01:00
intel_panel.c drm/i915: Use DIV_ROUND_CLOSEST for PWM calculations 2016-03-04 14:46:52 +02:00
intel_pm.c drm/i915: Only recalculate wm's for planes part of the state, v2. 2016-03-03 09:20:39 +01:00
intel_psr.c drm/i915: Add wait_for_us 2016-03-03 17:24:57 +00:00
intel_renderstate.h
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_ringbuffer.c drm/i915: Don't ERROR for an expected intel_rcs_ctx_init() interruption 2016-02-15 10:48:08 +01:00
intel_ringbuffer.h drm/i915/hangcheck: Prevent long walks across full-ppgtt 2016-03-04 15:17:14 +02:00
intel_runtime_pm.c drm/i915/gen9: Fix DMC firmware initialization 2016-03-07 15:15:29 +02:00
intel_sdvo.c drm/i915: Move the encoder vs. FDI dotclock check out from encoder .get_config() 2016-03-01 13:04:04 +02:00
intel_sdvo_regs.h drm/i915/sdvo: revert bogus kernel-doc comments to normal comments 2016-01-20 10:21:34 +02:00
intel_sideband.c drm/i915: Extend gpio read/write to other cores 2016-02-04 19:11:17 +02:00
intel_sprite.c drm/i915: Pass drm_frambuffer to intel_compute_page_offset() 2016-03-01 12:48:09 +02:00
intel_tv.c drm/i915: remove dead code 2016-02-29 17:58:09 +01:00
intel_uncore.c drm/i915: Generalise common GPU engine reset request/unrequest code 2016-03-04 15:17:05 +02:00
Kconfig drm/i915: Kconfig for extra driver debugging 2016-03-03 17:26:57 +00:00
Kconfig.debug drm/i915: Kconfig for extra driver debugging 2016-03-03 17:26:57 +00:00
Makefile drm/i915: Move generic link training code to a separate file 2015-11-05 15:14:56 +02:00