Message ID | 20190618142108.9978-4-ville.syrjala@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915: Finish drm_driver vfunc cleanup | expand |
Quoting Ville Syrjala (2019-06-18 15:21:08) > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > 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: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/i915_drv.c | 3 +++ > drivers/gpu/drm/i915/i915_irq.c | 11 ++++------- > drivers/gpu/drm/i915/i915_irq.h | 5 +++++ > 3 files changed, 12 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c > index ea6b06109d5a..178e9872b905 100644 > --- a/drivers/gpu/drm/i915/i915_drv.c > +++ b/drivers/gpu/drm/i915/i915_drv.c > @@ -3216,6 +3216,9 @@ static struct drm_driver driver = { > .gem_prime_export = i915_gem_prime_export, > .gem_prime_import = i915_gem_prime_import, > > + .get_vblank_timestamp = drm_calc_vbltimestamp_from_scanoutpos, > + .get_scanout_position = i915_get_crtc_scanoutpos, One might suggest intel_get_crtc_scanoutpos, and a push for it to be passed drm_crtc instead of dev + pipe. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> -Chris
On Tue, Jun 18, 2019 at 03:55:10PM +0100, Chris Wilson wrote: > Quoting Ville Syrjala (2019-06-18 15:21:08) > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > 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: Ville Syrjälä <ville.syrjala@linux.intel.com> > > --- > > drivers/gpu/drm/i915/i915_drv.c | 3 +++ > > drivers/gpu/drm/i915/i915_irq.c | 11 ++++------- > > drivers/gpu/drm/i915/i915_irq.h | 5 +++++ > > 3 files changed, 12 insertions(+), 7 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c > > index ea6b06109d5a..178e9872b905 100644 > > --- a/drivers/gpu/drm/i915/i915_drv.c > > +++ b/drivers/gpu/drm/i915/i915_drv.c > > @@ -3216,6 +3216,9 @@ static struct drm_driver driver = { > > .gem_prime_export = i915_gem_prime_export, > > .gem_prime_import = i915_gem_prime_import, > > > > + .get_vblank_timestamp = drm_calc_vbltimestamp_from_scanoutpos, > > + .get_scanout_position = i915_get_crtc_scanoutpos, > > One might suggest intel_get_crtc_scanoutpos, and a push for it to be > passed drm_crtc instead of dev + pipe. I suppose. There's also a FIXME about moving it to the crtc_helper funcs instead. Or could just remove the vfunc entirely and have each driver pass it to drm_calc_vbltimestamp_from_scanoutpos(). Either that or eliminate the .get_vblank_timestamp() vfunc instead since I believe everyone who has that uses drm_calc_vbltimestamp_from_scanoutpos(). Anyways, looks like there's enough material there for a good few hours of cursing. > > Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> > -Chris
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index ea6b06109d5a..178e9872b905 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -3216,6 +3216,9 @@ static struct drm_driver driver = { .gem_prime_export = i915_gem_prime_export, .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_map_offset = i915_gem_mmap_gtt, .ioctls = i915_ioctls, diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index e9e29eed8005..f2aa01f35280 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c @@ -1109,10 +1109,10 @@ static int __intel_get_crtc_scanline(struct intel_crtc *crtc) return (position + crtc->scanline_offset) % vtotal; } -static 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) +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) { struct drm_i915_private *dev_priv = to_i915(dev); 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) */ 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 (I915_HAS_HOTPLUG(dev_priv)) dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup; diff --git a/drivers/gpu/drm/i915/i915_irq.h b/drivers/gpu/drm/i915/i915_irq.h index ef782e5ab240..5af5654f801d 100644 --- a/drivers/gpu/drm/i915/i915_irq.h +++ b/drivers/gpu/drm/i915/i915_irq.h @@ -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_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 g4x_get_vblank_counter(struct drm_crtc *crtc);