Commit 7d23e593 authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915: Initialize drm_driver vblank funcs at compile time

Move the .get_vblank_timestamp() and .get_scanout_position()
initialization to happen at compile time. No point in delaying
it since we always assign the same functions.
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20190619170842.20579-5-ville.syrjala@linux.intel.com
parent b318b824
...@@ -3232,6 +3232,9 @@ static struct drm_driver driver = { ...@@ -3232,6 +3232,9 @@ static struct drm_driver driver = {
.gem_prime_export = i915_gem_prime_export, .gem_prime_export = i915_gem_prime_export,
.gem_prime_import = i915_gem_prime_import, .gem_prime_import = i915_gem_prime_import,
.get_vblank_timestamp = drm_calc_vbltimestamp_from_scanoutpos,
.get_scanout_position = i915_get_crtc_scanoutpos,
.dumb_create = i915_gem_dumb_create, .dumb_create = i915_gem_dumb_create,
.dumb_map_offset = i915_gem_mmap_gtt, .dumb_map_offset = i915_gem_mmap_gtt,
.ioctls = i915_ioctls, .ioctls = i915_ioctls,
......
...@@ -1109,10 +1109,10 @@ static int __intel_get_crtc_scanline(struct intel_crtc *crtc) ...@@ -1109,10 +1109,10 @@ static int __intel_get_crtc_scanline(struct intel_crtc *crtc)
return (position + crtc->scanline_offset) % vtotal; return (position + crtc->scanline_offset) % vtotal;
} }
static bool i915_get_crtc_scanoutpos(struct drm_device *dev, unsigned int pipe, bool i915_get_crtc_scanoutpos(struct drm_device *dev, unsigned int pipe,
bool in_vblank_irq, int *vpos, int *hpos, bool in_vblank_irq, int *vpos, int *hpos,
ktime_t *stime, ktime_t *etime, ktime_t *stime, ktime_t *etime,
const struct drm_display_mode *mode) const struct drm_display_mode *mode)
{ {
struct drm_i915_private *dev_priv = to_i915(dev); struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_crtc *intel_crtc = intel_get_crtc_for_pipe(dev_priv, struct intel_crtc *intel_crtc = intel_get_crtc_for_pipe(dev_priv,
...@@ -4789,9 +4789,6 @@ void intel_irq_init(struct drm_i915_private *dev_priv) ...@@ -4789,9 +4789,6 @@ void intel_irq_init(struct drm_i915_private *dev_priv)
*/ */
dev_priv->hotplug.hpd_short_storm_enabled = !HAS_DP_MST(dev_priv); dev_priv->hotplug.hpd_short_storm_enabled = !HAS_DP_MST(dev_priv);
dev->driver->get_vblank_timestamp = drm_calc_vbltimestamp_from_scanoutpos;
dev->driver->get_scanout_position = i915_get_crtc_scanoutpos;
if (HAS_GMCH(dev_priv)) { if (HAS_GMCH(dev_priv)) {
if (I915_HAS_HOTPLUG(dev_priv)) if (I915_HAS_HOTPLUG(dev_priv))
dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup; dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup;
......
...@@ -114,6 +114,11 @@ void gen11_reset_guc_interrupts(struct drm_i915_private *i915); ...@@ -114,6 +114,11 @@ void gen11_reset_guc_interrupts(struct drm_i915_private *i915);
void gen11_enable_guc_interrupts(struct drm_i915_private *i915); void gen11_enable_guc_interrupts(struct drm_i915_private *i915);
void gen11_disable_guc_interrupts(struct drm_i915_private *i915); void gen11_disable_guc_interrupts(struct drm_i915_private *i915);
bool i915_get_crtc_scanoutpos(struct drm_device *dev, unsigned int pipe,
bool in_vblank_irq, int *vpos, int *hpos,
ktime_t *stime, ktime_t *etime,
const struct drm_display_mode *mode);
u32 i915_get_vblank_counter(struct drm_crtc *crtc); u32 i915_get_vblank_counter(struct drm_crtc *crtc);
u32 g4x_get_vblank_counter(struct drm_crtc *crtc); u32 g4x_get_vblank_counter(struct drm_crtc *crtc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment