Commit 65686873 authored by Shawn Guo's avatar Shawn Guo
Browse files

drm: meson: 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: default avatarShawn Guo <shawn.guo@linaro.org>
Cc: Neil Armstrong <narmstrong@baylibre.com>
Acked-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1486458995-31018-15-git-send-email-shawnguo@kernel.org
parent 44b460cf
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@

#include "meson_crtc.h"
#include "meson_plane.h"
#include "meson_venc.h"
#include "meson_vpp.h"
#include "meson_viu.h"
#include "meson_registers.h"
@@ -48,6 +49,24 @@ struct meson_crtc {

/* CRTC */

static int meson_crtc_enable_vblank(struct drm_crtc *crtc)
{
	struct meson_crtc *meson_crtc = to_meson_crtc(crtc);
	struct meson_drm *priv = meson_crtc->priv;

	meson_venc_enable_vsync(priv);

	return 0;
}

static void meson_crtc_disable_vblank(struct drm_crtc *crtc)
{
	struct meson_crtc *meson_crtc = to_meson_crtc(crtc);
	struct meson_drm *priv = meson_crtc->priv;

	meson_venc_disable_vsync(priv);
}

static const struct drm_crtc_funcs meson_crtc_funcs = {
	.atomic_destroy_state	= drm_atomic_helper_crtc_destroy_state,
	.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
@@ -55,6 +74,9 @@ static const struct drm_crtc_funcs meson_crtc_funcs = {
	.page_flip		= drm_atomic_helper_page_flip,
	.reset			= drm_atomic_helper_crtc_reset,
	.set_config             = drm_atomic_helper_set_config,
	.enable_vblank		= meson_crtc_enable_vblank,
	.disable_vblank		= meson_crtc_disable_vblank,

};

static void meson_crtc_enable(struct drm_crtc *crtc)
+0 −20
Original line number Diff line number Diff line
@@ -79,22 +79,6 @@ static const struct drm_mode_config_funcs meson_mode_config_funcs = {
	.fb_create           = drm_fb_cma_create,
};

static int meson_enable_vblank(struct drm_device *dev, unsigned int crtc)
{
	struct meson_drm *priv = dev->dev_private;

	meson_venc_enable_vsync(priv);

	return 0;
}

static void meson_disable_vblank(struct drm_device *dev, unsigned int crtc)
{
	struct meson_drm *priv = dev->dev_private;

	meson_venc_disable_vsync(priv);
}

static irqreturn_t meson_irq(int irq, void *arg)
{
	struct drm_device *dev = arg;
@@ -126,10 +110,6 @@ static struct drm_driver meson_driver = {
				  DRIVER_MODESET | DRIVER_PRIME |
				  DRIVER_ATOMIC,

	/* Vblank */
	.enable_vblank		= meson_enable_vblank,
	.disable_vblank		= meson_disable_vblank,

	/* IRQ */
	.irq_handler		= meson_irq,