linux-stable/drivers/gpu/drm/i915
Ville Syrjälä 095163bad5 drm/i915: Add a kludge for DSL incrementing too late and ISR not working
On pre-PCH platforms ISR doesn't seem to be an actual ISR, at least as
far as display interrupts are concerned. Instead it sort of looks like
some ISR bits just directly reflect the corresponding bit from PIPESTAT.
The bit appears in the ISR only if the PIPESTAT interrupt is enabled. So
in that sense it sort of looks a bit like the south interrupt scheme on
PCH platforms. So it goes something a bit like this:
PIPESTAT.status & PIPESTAT.enable -> ISR -> IMR -> IIR -> IER -> actual
interrupt

In any case that means the intel_pipe_in_vblank_locked() doesn't actually
work for pre-PCH platforms. As a last resort, add a similar kludge as radeon
has that fixes things up if we got called from the vblank interrupt,
but the scanline counter value indicates that we're not quite there yet.
We know that the scanline counter increments at hsync but is otherwise
accurate, so we can limit the kludge to the line just prior to vblank
start, instead of the relative distance that radeon uses.

Reviewed-by: mario.kleiner.de@gmail.com
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2014-01-20 12:21:36 +02:00
..
Kconfig i915, fbdev: Fix Kconfig typo 2013-11-21 21:59:02 +01:00
Makefile drm/i915: only build i915_debugfs.c when CONFIG_DEBUG_FS is enabled 2013-12-16 16:53:32 +01:00
dvo.h drm/i915: Remove unused mode_fixup() vfunc of struct intel_dvo_dev_ops 2013-09-05 21:39:59 +02:00
dvo_ch7xxx.c drm/i915: dvo_ch7xxx: fix vsync polarity setting 2013-07-25 16:10:22 +02:00
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c drm/i915/ns2501: Rip out the reenable hack 2013-11-04 16:32:31 +01:00
dvo_sil164.c
dvo_tfp410.c
i915_debugfs.c drm/i915/vlv: Add drpc debugfs support for valleyview 2014-01-10 18:00:14 +01:00
i915_dma.c Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2014-01-20 10:21:54 +10:00
i915_drv.c Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2014-01-20 10:21:54 +10:00
i915_drv.h Merge commit origin/master into drm-intel-next 2014-01-16 22:06:30 +01:00
i915_gem.c Merge commit origin/master into drm-intel-next 2014-01-16 22:06:30 +01:00
i915_gem_context.c Merge commit origin/master into drm-intel-next 2014-01-16 22:06:30 +01:00
i915_gem_debug.c drm/i915: Fix #endif comment 2013-08-09 10:45:52 +02:00
i915_gem_dmabuf.c drm/i915: Pin pages whilst allocating for dma-buf vmap() 2013-11-29 15:51:20 +01:00
i915_gem_evict.c drm/i915: Repeat eviction search after idling the GPU 2013-12-10 08:13:58 +01:00
i915_gem_execbuffer.c Merge commit origin/master into drm-intel-next 2014-01-16 22:06:30 +01:00
i915_gem_gtt.c Merge commit origin/master into drm-intel-next 2014-01-16 22:06:30 +01:00
i915_gem_stolen.c drm/i915: grab a pages pin count for preallocate stolen 2013-12-18 13:25:29 +01:00
i915_gem_tiling.c drm/i915: prevent tiling changes on framebuffer backing storage 2013-10-16 22:04:52 +02:00
i915_gpu_error.c drm/i915: Record BB_ADDR for every ring 2013-12-11 23:52:12 +01:00
i915_ioc32.c
i915_irq.c drm/i915: Add a kludge for DSL incrementing too late and ISR not working 2014-01-20 12:21:36 +02:00
i915_reg.h drm/i915/vlv: Add drpc debugfs support for valleyview 2014-01-10 18:00:14 +01:00
i915_suspend.c drm/i915: Drop I915_ prefix from HAS_FBC 2014-01-10 10:28:28 +01:00
i915_sysfs.c drm/i915: add some runtime PM get/put calls 2013-12-10 22:50:17 +01:00
i915_trace.h drm/i915: Add a tracepoint for using a semaphore 2013-10-01 07:45:24 +02:00
i915_trace_points.c
i915_ums.c drm/i915: do not save/restore backlight registers in KMS 2013-11-14 12:22:32 +01:00
intel_acpi.c ACPI: Eliminate the DEVICE_ACPI_HANDLE() macro 2013-11-14 23:17:21 +01:00
intel_bios.c drm/i915: parse backlight modulation frequency from the BIOS VBT 2013-12-16 10:02:48 +01:00
intel_bios.h drm/i915: parse backlight modulation frequency from the BIOS VBT 2013-12-16 10:02:48 +01:00
intel_crt.c drm/i915: Return a drm_mode_status enum in the mode_valid vfuncs 2013-11-28 16:49:33 +01:00
intel_ddi.c Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2014-01-20 10:21:54 +10:00
intel_display.c drm/i915: Call drm_calc_timestamping_constants() earlier 2014-01-20 11:05:41 +02:00
intel_dp.c Merge commit origin/master into drm-intel-next 2014-01-16 22:06:30 +01:00
intel_drv.h Merge commit origin/master into drm-intel-next 2014-01-16 22:06:30 +01:00
intel_dsi.c drm/i915: Parametrize the dphy and other spec specific parameters 2013-12-11 23:52:20 +01:00
intel_dsi.h drm/i915: Parametrize the dphy and other spec specific parameters 2013-12-11 23:52:20 +01:00
intel_dsi_cmd.c drm/i915/dsi: s/size_t/int/ 2013-09-04 17:34:51 +02:00
intel_dsi_cmd.h drm/i915/dsi: s/size_t/int/ 2013-09-04 17:34:51 +02:00
intel_dsi_pll.c drm/i915: Try harder to get best m, n, p values with minimal error 2013-12-11 23:52:18 +01:00
intel_dvo.c drm/i915: Return a drm_mode_status enum in the mode_valid vfuncs 2013-11-28 16:49:33 +01:00
intel_fbdev.c drm/i915: remove duplicate MODULE_LICENSE definition 2014-01-07 10:20:47 +01:00
intel_hdmi.c drm/i915: Don't cast away const from infoframe buffer 2013-12-10 14:49:04 +01:00
intel_i2c.c drm/i915/vlv: split CCK and DDR freq usage 2013-11-05 19:28:47 +01:00
intel_lvds.c drm/i915: Make downclock deduction common for all panels 2013-12-10 13:26:15 +01:00
intel_modes.c
intel_opregion.c Merge tag 'drm-intel-next-2013-11-29' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2013-12-18 10:39:56 +10:00
intel_overlay.c drm/i915: No panel fitter on 830M or non-mobile gen2/3 platforms 2014-01-10 18:03:17 +01:00
intel_panel.c drm/i915: add some runtime PM get/put calls 2013-12-10 22:50:17 +01:00
intel_pm.c Merge commit origin/master into drm-intel-next 2014-01-16 22:06:30 +01:00
intel_ringbuffer.c drm/i915: Flush outstanding requests before allocating new seqno 2014-01-07 12:33:41 +01:00
intel_ringbuffer.h drm/i915: Write RING_TAIL once per-request 2013-09-10 15:35:58 +02:00
intel_sdvo.c drm/i915: Don't cast away const from infoframe buffer 2013-12-10 14:49:04 +01:00
intel_sdvo_regs.h drm/i915: use __packed instead of __attribute__((packed)) 2013-12-03 18:19:49 +01:00
intel_sideband.c drm/i915: Use FLISDSI interface for band gap reset 2013-12-11 23:52:17 +01:00
intel_sprite.c Revert "drm/i915/sprite: Always enable the scaler on IronLake" 2013-12-17 13:17:59 +01:00
intel_tv.c drm/i915/tv: add ->get_config callback 2013-11-18 22:24:33 +01:00
intel_uncore.c Merge tag 'drm-intel-next-2013-11-29' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2013-12-18 10:39:56 +10:00