No functional change.
This is the last user of legacy function so we will be able to clean up drm_irq.c a bit.
Signed-off-by: Rodrigo Vivi rodrigo.vivi@intel.com --- drivers/gpu/drm/i915/intel_drv.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 50cdc89..37a3ae8 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -1202,7 +1202,10 @@ intel_crtc_has_dp_encoder(const struct intel_crtc_state *crtc_state) static inline void intel_wait_for_vblank(struct drm_device *dev, int pipe) { - drm_wait_one_vblank(dev, pipe); + struct drm_i915_private *dev_priv = to_i915(dev); + struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe]; + + drm_crtc_wait_one_vblank(crtc); } static inline void intel_wait_for_vblank_if_active(struct drm_device *dev, int pipe)
Now that this is not used anywhere else anymore we can go ahead and remove the legacy version.
Signed-off-by: Rodrigo Vivi rodrigo.vivi@intel.com --- drivers/gpu/drm/drm_irq.c | 35 +++++++++++------------------------ include/drm/drm_irq.h | 1 - 2 files changed, 11 insertions(+), 25 deletions(-)
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c index 523419a..6250518 100644 --- a/drivers/gpu/drm/drm_irq.c +++ b/drivers/gpu/drm/drm_irq.c @@ -1194,16 +1194,17 @@ void drm_crtc_vblank_put(struct drm_crtc *crtc) EXPORT_SYMBOL(drm_crtc_vblank_put);
/** - * drm_wait_one_vblank - wait for one vblank - * @dev: DRM device - * @pipe: CRTC index + * drm_crtc_wait_one_vblank - wait for one vblank + * @crtc: DRM crtc * - * This waits for one vblank to pass on @pipe, using the irq driver interfaces. - * It is a failure to call this when the vblank irq for @pipe is disabled, e.g. + * This waits for one vblank to pass on @crtc, using the irq driver interfaces. + * It is a failure to call this when the vblank irq for @crtc is disabled, e.g. * due to lack of driver support or because the crtc is off. */ -void drm_wait_one_vblank(struct drm_device *dev, unsigned int pipe) +void drm_crtc_wait_one_vblank(struct drm_crtc *crtc) { + struct drm_device *dev = crtc->dev; + unsigned int pipe = drm_crtc_index(crtc); struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; int ret; u32 last; @@ -1211,33 +1212,19 @@ void drm_wait_one_vblank(struct drm_device *dev, unsigned int pipe) if (WARN_ON(pipe >= dev->num_crtcs)) return;
- ret = drm_vblank_get(dev, pipe); + ret = drm_crtc_vblank_get(crtc); if (WARN(ret, "vblank not available on crtc %i, ret=%i\n", pipe, ret)) return;
- last = drm_vblank_count(dev, pipe); + last = drm_crtc_vblank_count(crtc);
ret = wait_event_timeout(vblank->queue, - last != drm_vblank_count(dev, pipe), + last != drm_crtc_vblank_count(crtc), msecs_to_jiffies(100));
WARN(ret == 0, "vblank wait timed out on crtc %i\n", pipe);
- drm_vblank_put(dev, pipe); -} -EXPORT_SYMBOL(drm_wait_one_vblank); - -/** - * drm_crtc_wait_one_vblank - wait for one vblank - * @crtc: DRM crtc - * - * This waits for one vblank to pass on @crtc, using the irq driver interfaces. - * It is a failure to call this when the vblank irq for @crtc is disabled, e.g. - * due to lack of driver support or because the crtc is off. - */ -void drm_crtc_wait_one_vblank(struct drm_crtc *crtc) -{ - drm_wait_one_vblank(crtc->dev, drm_crtc_index(crtc)); + drm_crtc_vblank_put(crtc); } EXPORT_SYMBOL(drm_crtc_wait_one_vblank);
diff --git a/include/drm/drm_irq.h b/include/drm/drm_irq.h index 406f954..b90d5ee 100644 --- a/include/drm/drm_irq.h +++ b/include/drm/drm_irq.h @@ -148,7 +148,6 @@ extern bool drm_handle_vblank(struct drm_device *dev, unsigned int pipe); extern bool drm_crtc_handle_vblank(struct drm_crtc *crtc); extern int drm_crtc_vblank_get(struct drm_crtc *crtc); extern void drm_crtc_vblank_put(struct drm_crtc *crtc); -extern void drm_wait_one_vblank(struct drm_device *dev, unsigned int pipe); extern void drm_crtc_wait_one_vblank(struct drm_crtc *crtc); extern void drm_crtc_vblank_off(struct drm_crtc *crtc); extern void drm_crtc_vblank_reset(struct drm_crtc *crtc);
On Thu, 04 Aug 2016, Rodrigo Vivi rodrigo.vivi@intel.com wrote:
No functional change.
This is the last user of legacy function so we will be able to clean up drm_irq.c a bit.
Signed-off-by: Rodrigo Vivi rodrigo.vivi@intel.com
drivers/gpu/drm/i915/intel_drv.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 50cdc89..37a3ae8 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -1202,7 +1202,10 @@ intel_crtc_has_dp_encoder(const struct intel_crtc_state *crtc_state) static inline void intel_wait_for_vblank(struct drm_device *dev, int pipe) {
- drm_wait_one_vblank(dev, pipe);
- struct drm_i915_private *dev_priv = to_i915(dev);
- struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe];
- drm_crtc_wait_one_vblank(crtc);
With these changes, in almost all intel_wait_for_vblank() call paths we'll have crtc available, so we end up calling intel_wait_for_vblank(intel_crtc->pipe), which will then be converted back to drm_crtc via dev_priv->pipe_to_crtc_mapping[pipe], and again to pipe using drm_crtc_index(crtc)...
I'm tempted to say we should *first* replace all intel_wait_for_vblank() calls with drm_crtc_wait_one_vblank() where possible. After that, we might just call drm_crtc_wait_one_vblank(dev_priv->pipe_to_crtc_mapping[pipe]) everywhere else.
BR, Jani.
} static inline void intel_wait_for_vblank_if_active(struct drm_device *dev, int pipe)
On Thu, Aug 04, 2016 at 10:38:02AM +0300, Jani Nikula wrote:
On Thu, 04 Aug 2016, Rodrigo Vivi rodrigo.vivi@intel.com wrote:
No functional change.
This is the last user of legacy function so we will be able to clean up drm_irq.c a bit.
Signed-off-by: Rodrigo Vivi rodrigo.vivi@intel.com
drivers/gpu/drm/i915/intel_drv.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 50cdc89..37a3ae8 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -1202,7 +1202,10 @@ intel_crtc_has_dp_encoder(const struct intel_crtc_state *crtc_state) static inline void intel_wait_for_vblank(struct drm_device *dev, int pipe) {
- drm_wait_one_vblank(dev, pipe);
- struct drm_i915_private *dev_priv = to_i915(dev);
- struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe];
- drm_crtc_wait_one_vblank(crtc);
With these changes, in almost all intel_wait_for_vblank() call paths we'll have crtc available, so we end up calling intel_wait_for_vblank(intel_crtc->pipe), which will then be converted back to drm_crtc via dev_priv->pipe_to_crtc_mapping[pipe], and again to pipe using drm_crtc_index(crtc)...
I'm tempted to say we should *first* replace all intel_wait_for_vblank() calls with drm_crtc_wait_one_vblank() where possible. After that, we might just call drm_crtc_wait_one_vblank(dev_priv->pipe_to_crtc_mapping[pipe]) everywhere else.
On a slight tangent, I'd like to see patches to s/dev_priv->pipe_to_crtc_mapping[pipe]/whatever_is_the_function_name(pipe)/ and make those functions return intel_crtc instead of drm_crtc.
dri-devel@lists.freedesktop.org