Dear Thomas, Thank you for your patch, For this stm part, Acked-by: Philippe Cornu <philippe.cornu@xxxxxx> Philippe :-) On 1/23/20 2:59 PM, Thomas Zimmermann wrote: > The callback struct drm_driver.get_scanout_position() is deprecated in > favor of struct drm_crtc_helper_funcs.get_scanout_position(). Convert stm > over. > > Signed-off-by: Thomas Zimmermann <tzimmermann@xxxxxxx> > Tested-by: Yannick Fertré <yannick.fertre@xxxxxx> > --- > drivers/gpu/drm/stm/drv.c | 1 - > drivers/gpu/drm/stm/ltdc.c | 65 ++++++++++++++++++++------------------ > drivers/gpu/drm/stm/ltdc.h | 5 --- > 3 files changed, 34 insertions(+), 37 deletions(-) > > diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c > index 5a9f9aca8bc2..486985604109 100644 > --- a/drivers/gpu/drm/stm/drv.c > +++ b/drivers/gpu/drm/stm/drv.c > @@ -72,7 +72,6 @@ static struct drm_driver drv_driver = { > .gem_prime_vmap = drm_gem_cma_prime_vmap, > .gem_prime_vunmap = drm_gem_cma_prime_vunmap, > .gem_prime_mmap = drm_gem_cma_prime_mmap, > - .get_scanout_position = ltdc_crtc_scanoutpos, > .get_vblank_timestamp = drm_calc_vbltimestamp_from_scanoutpos, > }; > > diff --git a/drivers/gpu/drm/stm/ltdc.c b/drivers/gpu/drm/stm/ltdc.c > index c2815e8ae1da..8b6d1a2252e3 100644 > --- a/drivers/gpu/drm/stm/ltdc.c > +++ b/drivers/gpu/drm/stm/ltdc.c > @@ -636,38 +636,13 @@ static void ltdc_crtc_atomic_flush(struct drm_crtc *crtc, > } > } > > -static const struct drm_crtc_helper_funcs ltdc_crtc_helper_funcs = { > - .mode_valid = ltdc_crtc_mode_valid, > - .mode_fixup = ltdc_crtc_mode_fixup, > - .mode_set_nofb = ltdc_crtc_mode_set_nofb, > - .atomic_flush = ltdc_crtc_atomic_flush, > - .atomic_enable = ltdc_crtc_atomic_enable, > - .atomic_disable = ltdc_crtc_atomic_disable, > -}; > - > -static int ltdc_crtc_enable_vblank(struct drm_crtc *crtc) > -{ > - struct ltdc_device *ldev = crtc_to_ltdc(crtc); > - > - DRM_DEBUG_DRIVER("\n"); > - reg_set(ldev->regs, LTDC_IER, IER_LIE); > - > - return 0; > -} > - > -static void ltdc_crtc_disable_vblank(struct drm_crtc *crtc) > -{ > - struct ltdc_device *ldev = crtc_to_ltdc(crtc); > - > - DRM_DEBUG_DRIVER("\n"); > - reg_clear(ldev->regs, LTDC_IER, IER_LIE); > -} > - > -bool ltdc_crtc_scanoutpos(struct drm_device *ddev, unsigned int pipe, > - bool in_vblank_irq, int *vpos, int *hpos, > - ktime_t *stime, ktime_t *etime, > - const struct drm_display_mode *mode) > +static bool ltdc_crtc_get_scanout_position(struct drm_crtc *crtc, > + bool in_vblank_irq, > + int *vpos, int *hpos, > + ktime_t *stime, ktime_t *etime, > + const struct drm_display_mode *mode) > { > + struct drm_device *ddev = crtc->dev; > struct ltdc_device *ldev = ddev->dev_private; > int line, vactive_start, vactive_end, vtotal; > > @@ -710,6 +685,34 @@ bool ltdc_crtc_scanoutpos(struct drm_device *ddev, unsigned int pipe, > return true; > } > > +static const struct drm_crtc_helper_funcs ltdc_crtc_helper_funcs = { > + .mode_valid = ltdc_crtc_mode_valid, > + .mode_fixup = ltdc_crtc_mode_fixup, > + .mode_set_nofb = ltdc_crtc_mode_set_nofb, > + .atomic_flush = ltdc_crtc_atomic_flush, > + .atomic_enable = ltdc_crtc_atomic_enable, > + .atomic_disable = ltdc_crtc_atomic_disable, > + .get_scanout_position = ltdc_crtc_get_scanout_position, > +}; > + > +static int ltdc_crtc_enable_vblank(struct drm_crtc *crtc) > +{ > + struct ltdc_device *ldev = crtc_to_ltdc(crtc); > + > + DRM_DEBUG_DRIVER("\n"); > + reg_set(ldev->regs, LTDC_IER, IER_LIE); > + > + return 0; > +} > + > +static void ltdc_crtc_disable_vblank(struct drm_crtc *crtc) > +{ > + struct ltdc_device *ldev = crtc_to_ltdc(crtc); > + > + DRM_DEBUG_DRIVER("\n"); > + reg_clear(ldev->regs, LTDC_IER, IER_LIE); > +} > + > static const struct drm_crtc_funcs ltdc_crtc_funcs = { > .destroy = drm_crtc_cleanup, > .set_config = drm_atomic_helper_set_config, > diff --git a/drivers/gpu/drm/stm/ltdc.h b/drivers/gpu/drm/stm/ltdc.h > index a1ad0ae3b006..c5467d74e707 100644 > --- a/drivers/gpu/drm/stm/ltdc.h > +++ b/drivers/gpu/drm/stm/ltdc.h > @@ -39,11 +39,6 @@ struct ltdc_device { > struct drm_atomic_state *suspend_state; > }; > > -bool ltdc_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); > - > int ltdc_load(struct drm_device *ddev); > void ltdc_unload(struct drm_device *ddev); > void ltdc_suspend(struct drm_device *ddev); >