drm: atmel: use vblank hooks in struct drm_crtc_funcs
The vblank hooks in struct drm_driver are deprecated and only meant for legacy drivers. For modern drivers with DRIVER_MODESET flag, the hooks in struct drm_crtc_funcs should be used instead. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Cc: Boris Brezillon <boris.brezillon@free-electrons.com> Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1486458995-31018-8-git-send-email-shawnguo@kernel.org
This commit is contained in:
parent
5922a7d075
commit
82308e27a9
|
@ -434,6 +434,25 @@ static void atmel_hlcdc_crtc_destroy_state(struct drm_crtc *crtc,
|
||||||
kfree(state);
|
kfree(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int atmel_hlcdc_crtc_enable_vblank(struct drm_crtc *c)
|
||||||
|
{
|
||||||
|
struct atmel_hlcdc_crtc *crtc = drm_crtc_to_atmel_hlcdc_crtc(c);
|
||||||
|
struct regmap *regmap = crtc->dc->hlcdc->regmap;
|
||||||
|
|
||||||
|
/* Enable SOF (Start Of Frame) interrupt for vblank counting */
|
||||||
|
regmap_write(regmap, ATMEL_HLCDC_IER, ATMEL_HLCDC_SOF);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void atmel_hlcdc_crtc_disable_vblank(struct drm_crtc *c)
|
||||||
|
{
|
||||||
|
struct atmel_hlcdc_crtc *crtc = drm_crtc_to_atmel_hlcdc_crtc(c);
|
||||||
|
struct regmap *regmap = crtc->dc->hlcdc->regmap;
|
||||||
|
|
||||||
|
regmap_write(regmap, ATMEL_HLCDC_IDR, ATMEL_HLCDC_SOF);
|
||||||
|
}
|
||||||
|
|
||||||
static const struct drm_crtc_funcs atmel_hlcdc_crtc_funcs = {
|
static const struct drm_crtc_funcs atmel_hlcdc_crtc_funcs = {
|
||||||
.page_flip = drm_atomic_helper_page_flip,
|
.page_flip = drm_atomic_helper_page_flip,
|
||||||
.set_config = drm_atomic_helper_set_config,
|
.set_config = drm_atomic_helper_set_config,
|
||||||
|
@ -441,6 +460,8 @@ static const struct drm_crtc_funcs atmel_hlcdc_crtc_funcs = {
|
||||||
.reset = atmel_hlcdc_crtc_reset,
|
.reset = atmel_hlcdc_crtc_reset,
|
||||||
.atomic_duplicate_state = atmel_hlcdc_crtc_duplicate_state,
|
.atomic_duplicate_state = atmel_hlcdc_crtc_duplicate_state,
|
||||||
.atomic_destroy_state = atmel_hlcdc_crtc_destroy_state,
|
.atomic_destroy_state = atmel_hlcdc_crtc_destroy_state,
|
||||||
|
.enable_vblank = atmel_hlcdc_crtc_enable_vblank,
|
||||||
|
.disable_vblank = atmel_hlcdc_crtc_disable_vblank,
|
||||||
};
|
};
|
||||||
|
|
||||||
int atmel_hlcdc_crtc_create(struct drm_device *dev)
|
int atmel_hlcdc_crtc_create(struct drm_device *dev)
|
||||||
|
|
|
@ -720,25 +720,6 @@ static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
|
||||||
regmap_read(dc->hlcdc->regmap, ATMEL_HLCDC_ISR, &isr);
|
regmap_read(dc->hlcdc->regmap, ATMEL_HLCDC_ISR, &isr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int atmel_hlcdc_dc_enable_vblank(struct drm_device *dev,
|
|
||||||
unsigned int pipe)
|
|
||||||
{
|
|
||||||
struct atmel_hlcdc_dc *dc = dev->dev_private;
|
|
||||||
|
|
||||||
/* Enable SOF (Start Of Frame) interrupt for vblank counting */
|
|
||||||
regmap_write(dc->hlcdc->regmap, ATMEL_HLCDC_IER, ATMEL_HLCDC_SOF);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void atmel_hlcdc_dc_disable_vblank(struct drm_device *dev,
|
|
||||||
unsigned int pipe)
|
|
||||||
{
|
|
||||||
struct atmel_hlcdc_dc *dc = dev->dev_private;
|
|
||||||
|
|
||||||
regmap_write(dc->hlcdc->regmap, ATMEL_HLCDC_IDR, ATMEL_HLCDC_SOF);
|
|
||||||
}
|
|
||||||
|
|
||||||
static const struct file_operations fops = {
|
static const struct file_operations fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = drm_open,
|
.open = drm_open,
|
||||||
|
@ -760,8 +741,6 @@ static struct drm_driver atmel_hlcdc_dc_driver = {
|
||||||
.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
|
.irq_preinstall = atmel_hlcdc_dc_irq_uninstall,
|
||||||
.irq_postinstall = atmel_hlcdc_dc_irq_postinstall,
|
.irq_postinstall = atmel_hlcdc_dc_irq_postinstall,
|
||||||
.irq_uninstall = atmel_hlcdc_dc_irq_uninstall,
|
.irq_uninstall = atmel_hlcdc_dc_irq_uninstall,
|
||||||
.enable_vblank = atmel_hlcdc_dc_enable_vblank,
|
|
||||||
.disable_vblank = atmel_hlcdc_dc_disable_vblank,
|
|
||||||
.gem_free_object_unlocked = drm_gem_cma_free_object,
|
.gem_free_object_unlocked = drm_gem_cma_free_object,
|
||||||
.gem_vm_ops = &drm_gem_cma_vm_ops,
|
.gem_vm_ops = &drm_gem_cma_vm_ops,
|
||||||
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
|
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
|
||||||
|
|
Loading…
Reference in New Issue