forked from Minki/linux
drm/stm: Convert to struct drm_crtc_helper_funcs.get_scanout_position()
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@suse.de> Acked-by: Philippe Cornu <philippe.cornu@st.com> Tested-by: Yannick Fertré <yannick.fertre@st.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200123135943.24140-15-tzimmermann@suse.de
This commit is contained in:
parent
76e8cfd802
commit
b70fbfc7d5
@ -72,7 +72,6 @@ static struct drm_driver drv_driver = {
|
|||||||
.gem_prime_vmap = drm_gem_cma_prime_vmap,
|
.gem_prime_vmap = drm_gem_cma_prime_vmap,
|
||||||
.gem_prime_vunmap = drm_gem_cma_prime_vunmap,
|
.gem_prime_vunmap = drm_gem_cma_prime_vunmap,
|
||||||
.gem_prime_mmap = drm_gem_cma_prime_mmap,
|
.gem_prime_mmap = drm_gem_cma_prime_mmap,
|
||||||
.get_scanout_position = ltdc_crtc_scanoutpos,
|
|
||||||
.get_vblank_timestamp = drm_calc_vbltimestamp_from_scanoutpos,
|
.get_vblank_timestamp = drm_calc_vbltimestamp_from_scanoutpos,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -636,43 +636,13 @@ static void ltdc_crtc_atomic_flush(struct drm_crtc *crtc,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct drm_crtc_helper_funcs ltdc_crtc_helper_funcs = {
|
static bool ltdc_crtc_get_scanout_position(struct drm_crtc *crtc,
|
||||||
.mode_valid = ltdc_crtc_mode_valid,
|
bool in_vblank_irq,
|
||||||
.mode_fixup = ltdc_crtc_mode_fixup,
|
int *vpos, int *hpos,
|
||||||
.mode_set_nofb = ltdc_crtc_mode_set_nofb,
|
ktime_t *stime, ktime_t *etime,
|
||||||
.atomic_flush = ltdc_crtc_atomic_flush,
|
const struct drm_display_mode *mode)
|
||||||
.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);
|
|
||||||
struct drm_crtc_state *state = crtc->state;
|
|
||||||
|
|
||||||
DRM_DEBUG_DRIVER("\n");
|
|
||||||
|
|
||||||
if (state->enable)
|
|
||||||
reg_set(ldev->regs, LTDC_IER, IER_LIE);
|
|
||||||
else
|
|
||||||
return -EPERM;
|
|
||||||
|
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
|
struct drm_device *ddev = crtc->dev;
|
||||||
struct ltdc_device *ldev = ddev->dev_private;
|
struct ltdc_device *ldev = ddev->dev_private;
|
||||||
int line, vactive_start, vactive_end, vtotal;
|
int line, vactive_start, vactive_end, vtotal;
|
||||||
|
|
||||||
@ -715,6 +685,39 @@ bool ltdc_crtc_scanoutpos(struct drm_device *ddev, unsigned int pipe,
|
|||||||
return true;
|
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);
|
||||||
|
struct drm_crtc_state *state = crtc->state;
|
||||||
|
|
||||||
|
DRM_DEBUG_DRIVER("\n");
|
||||||
|
|
||||||
|
if (state->enable)
|
||||||
|
reg_set(ldev->regs, LTDC_IER, IER_LIE);
|
||||||
|
else
|
||||||
|
return -EPERM;
|
||||||
|
|
||||||
|
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 = {
|
static const struct drm_crtc_funcs ltdc_crtc_funcs = {
|
||||||
.destroy = drm_crtc_cleanup,
|
.destroy = drm_crtc_cleanup,
|
||||||
.set_config = drm_atomic_helper_set_config,
|
.set_config = drm_atomic_helper_set_config,
|
||||||
|
@ -40,11 +40,6 @@ struct ltdc_device {
|
|||||||
struct drm_atomic_state *suspend_state;
|
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);
|
int ltdc_load(struct drm_device *ddev);
|
||||||
void ltdc_unload(struct drm_device *ddev);
|
void ltdc_unload(struct drm_device *ddev);
|
||||||
void ltdc_suspend(struct drm_device *ddev);
|
void ltdc_suspend(struct drm_device *ddev);
|
||||||
|
Loading…
Reference in New Issue
Block a user