forked from Minki/linux
9625604ceb
At driver load we need to tell the vblank code about the state of the pipes, so that the logic around reject vblank_get when the pipe is off works correctly. Thus far i915 used drm_vblank_off, but one of the side-effects of it is that it also saves the vblank counter. And for that it calls down into the ->get_vblank_counter hook. Which isn't really a good idea when the pipe is off for a few reasons: - With runtime pm the register might not respond. - If the pipe is off some datastructures might not be around or unitialized. The later is what blew up on gen3: We look at intel_crtc->config to compute the vblank counter, and for a disabled pipe at boot-up that's just not there. Thus far this was papered over by a check for intel_crtc->active, but I want to get rid of that (since it's fairly race, vblank hooks are called from all kinds of places). So prep for that by adding a _reset functions which only does what we really need to be done at driver load: Mark the vblank pipe as off, but don't do any vblank counter saving or event flushing - neither of that is required. v2: Clarify the code flow slightly as suggested by Ville. v3: Fix kerneldoc spelling, spotted by Laurent. Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Imre Deak <imre.deak@intel.com> Reviewed-by: Imre Deak <imre.deak@intel.com> (v2) Acked-by: Dave Airlie <airlied@redhat.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> |
||
---|---|---|
.. | ||
bridge | ||
i2c | ||
ttm | ||
ati_pcigart.h | ||
drm_agpsupport.h | ||
drm_atomic_helper.h | ||
drm_atomic.h | ||
drm_cache.h | ||
drm_core.h | ||
drm_crtc_helper.h | ||
drm_crtc.h | ||
drm_displayid.h | ||
drm_dp_helper.h | ||
drm_dp_mst_helper.h | ||
drm_edid.h | ||
drm_encoder_slave.h | ||
drm_fb_cma_helper.h | ||
drm_fb_helper.h | ||
drm_fixed.h | ||
drm_flip_work.h | ||
drm_gem_cma_helper.h | ||
drm_gem.h | ||
drm_global.h | ||
drm_hashtab.h | ||
drm_legacy.h | ||
drm_mem_util.h | ||
drm_mipi_dsi.h | ||
drm_mm.h | ||
drm_modes.h | ||
drm_modeset_lock.h | ||
drm_of.h | ||
drm_os_linux.h | ||
drm_panel.h | ||
drm_pciids.h | ||
drm_plane_helper.h | ||
drm_rect.h | ||
drm_sysfs.h | ||
drm_vma_manager.h | ||
drmP.h | ||
exynos_drm.h | ||
gma_drm.h | ||
i915_component.h | ||
i915_drm.h | ||
i915_pciids.h | ||
intel-gtt.h |