All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] drm/simple_kms_helper: Add {enable|disable}_vblank callback support
@ 2018-02-12  8:52 ` Oleksandr Andrushchenko
  0 siblings, 0 replies; 20+ messages in thread
From: Oleksandr Andrushchenko @ 2018-02-12  8:52 UTC (permalink / raw)
  To: dri-devel, linux-kernel
  Cc: daniel.vetter, gustavo, airlied, seanpaul, Oleksandr Andrushchenko

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

If simple_kms_helper based driver needs to work with vblanks,
then it has to provide drm_driver.{enable|disable}_vblank callbacks,
because drm_simple_kms_helper.drm_crtc_funcs does not provide any.
At the same time drm_driver.{enable|disable}_vblank callbacks
are marked as deprecated and shouldn't be used by new drivers.

Fix this by extending drm_simple_kms_helper.drm_crtc_funcs
to provide the missing callbacks.

Please note, that patch for the DRM core (drm_simple_kms_helper.*)
is checked at run-time (I use this patch for my own driver), but patches
0002-0004 are compile only checked.

Thank you,
Oleksandr Andrushchenko

Oleksandr Andrushchenko (4):
  drm/simple_kms_helper: Add {enable|disable}_vblank callback support
  drm/mxsfb: Do not use deprecated drm_driver.{enable|disable)_vblank
  drm/tve200: Do not use deprecated drm_driver.{enable|disable)_vblank
  drm/pl111: Do not use deprecated drm_driver.{enable|disable)_vblank

 drivers/gpu/drm/drm_simple_kms_helper.c | 24 +++++++++++++++
 drivers/gpu/drm/mxsfb/mxsfb_drv.c       | 54 +++++++++++++++++----------------
 drivers/gpu/drm/pl111/pl111_display.c   | 15 +++++++--
 drivers/gpu/drm/pl111/pl111_drm.h       |  2 --
 drivers/gpu/drm/pl111/pl111_drv.c       |  5 ---
 drivers/gpu/drm/tve200/tve200_display.c | 10 ++++--
 drivers/gpu/drm/tve200/tve200_drm.h     |  2 --
 drivers/gpu/drm/tve200/tve200_drv.c     |  3 --
 include/drm/drm_simple_kms_helper.h     | 18 +++++++++++
 9 files changed, 90 insertions(+), 43 deletions(-)

-- 
2.7.4

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 0/4] drm/simple_kms_helper: Add {enable|disable}_vblank callback support
@ 2018-02-12  8:52 ` Oleksandr Andrushchenko
  0 siblings, 0 replies; 20+ messages in thread
From: Oleksandr Andrushchenko @ 2018-02-12  8:52 UTC (permalink / raw)
  To: dri-devel, linux-kernel; +Cc: airlied, daniel.vetter, Oleksandr Andrushchenko

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

If simple_kms_helper based driver needs to work with vblanks,
then it has to provide drm_driver.{enable|disable}_vblank callbacks,
because drm_simple_kms_helper.drm_crtc_funcs does not provide any.
At the same time drm_driver.{enable|disable}_vblank callbacks
are marked as deprecated and shouldn't be used by new drivers.

Fix this by extending drm_simple_kms_helper.drm_crtc_funcs
to provide the missing callbacks.

Please note, that patch for the DRM core (drm_simple_kms_helper.*)
is checked at run-time (I use this patch for my own driver), but patches
0002-0004 are compile only checked.

Thank you,
Oleksandr Andrushchenko

Oleksandr Andrushchenko (4):
  drm/simple_kms_helper: Add {enable|disable}_vblank callback support
  drm/mxsfb: Do not use deprecated drm_driver.{enable|disable)_vblank
  drm/tve200: Do not use deprecated drm_driver.{enable|disable)_vblank
  drm/pl111: Do not use deprecated drm_driver.{enable|disable)_vblank

 drivers/gpu/drm/drm_simple_kms_helper.c | 24 +++++++++++++++
 drivers/gpu/drm/mxsfb/mxsfb_drv.c       | 54 +++++++++++++++++----------------
 drivers/gpu/drm/pl111/pl111_display.c   | 15 +++++++--
 drivers/gpu/drm/pl111/pl111_drm.h       |  2 --
 drivers/gpu/drm/pl111/pl111_drv.c       |  5 ---
 drivers/gpu/drm/tve200/tve200_display.c | 10 ++++--
 drivers/gpu/drm/tve200/tve200_drm.h     |  2 --
 drivers/gpu/drm/tve200/tve200_drv.c     |  3 --
 include/drm/drm_simple_kms_helper.h     | 18 +++++++++++
 9 files changed, 90 insertions(+), 43 deletions(-)

-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1/4] drm/simple_kms_helper: Add {enable|disable}_vblank callback support
  2018-02-12  8:52 ` Oleksandr Andrushchenko
@ 2018-02-12  8:52   ` Oleksandr Andrushchenko
  -1 siblings, 0 replies; 20+ messages in thread
From: Oleksandr Andrushchenko @ 2018-02-12  8:52 UTC (permalink / raw)
  To: dri-devel, linux-kernel
  Cc: daniel.vetter, gustavo, airlied, seanpaul, Oleksandr Andrushchenko

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

If simple_kms_helper based driver needs to work with vblanks,
then it has to provide drm_driver.{enable|disable}_vblank callbacks,
because drm_simple_kms_helper.drm_crtc_funcs does not provide any.
At the same time drm_driver.{enable|disable}_vblank callbacks
are marked as deprecated and shouldn't be used by new drivers.

Fix this by extending drm_simple_kms_helper.drm_crtc_funcs
to provide the missing callbacks.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
---
 drivers/gpu/drm/drm_simple_kms_helper.c | 24 ++++++++++++++++++++++++
 include/drm/drm_simple_kms_helper.h     | 18 ++++++++++++++++++
 2 files changed, 42 insertions(+)

diff --git a/drivers/gpu/drm/drm_simple_kms_helper.c b/drivers/gpu/drm/drm_simple_kms_helper.c
index 9d3f6b70812c..9ca8a4a59b74 100644
--- a/drivers/gpu/drm/drm_simple_kms_helper.c
+++ b/drivers/gpu/drm/drm_simple_kms_helper.c
@@ -77,6 +77,28 @@ static const struct drm_crtc_helper_funcs drm_simple_kms_crtc_helper_funcs = {
 	.atomic_disable = drm_simple_kms_crtc_disable,
 };
 
+static int drm_simple_kms_crtc_enable_vblank(struct drm_crtc *crtc)
+{
+	struct drm_simple_display_pipe *pipe;
+
+	pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
+	if (!pipe->funcs || !pipe->funcs->enable_vblank)
+		return 0;
+
+	return pipe->funcs->enable_vblank(pipe);
+}
+
+static void drm_simple_kms_crtc_disable_vblank(struct drm_crtc *crtc)
+{
+	struct drm_simple_display_pipe *pipe;
+
+	pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
+	if (!pipe->funcs || !pipe->funcs->disable_vblank)
+		return;
+
+	pipe->funcs->disable_vblank(pipe);
+}
+
 static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
 	.reset = drm_atomic_helper_crtc_reset,
 	.destroy = drm_crtc_cleanup,
@@ -84,6 +106,8 @@ static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
 	.page_flip = drm_atomic_helper_page_flip,
 	.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
 	.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
+	.enable_vblank = drm_simple_kms_crtc_enable_vblank,
+	.disable_vblank = drm_simple_kms_crtc_disable_vblank,
 };
 
 static int drm_simple_kms_plane_atomic_check(struct drm_plane *plane,
diff --git a/include/drm/drm_simple_kms_helper.h b/include/drm/drm_simple_kms_helper.h
index 6d9adbb46293..79567826b099 100644
--- a/include/drm/drm_simple_kms_helper.h
+++ b/include/drm/drm_simple_kms_helper.h
@@ -93,6 +93,24 @@ struct drm_simple_display_pipe_funcs {
 	 */
 	void (*cleanup_fb)(struct drm_simple_display_pipe *pipe,
 			   struct drm_plane_state *plane_state);
+
+	/**
+	 * @enable_vblank:
+	 *
+	 * Optional, called by &drm_crtc_funcs.enable_vblank. Please read
+	 * the documentation for the &drm_crtc_funcs.enable_vblank hook for
+	 * more details.
+	 */
+	int (*enable_vblank)(struct drm_simple_display_pipe *pipe);
+
+	/**
+	 * @disable_vblank:
+	 *
+	 * Optional, called by &drm_crtc_funcs.disable_vblank. Please read
+	 * the documentation for the &drm_crtc_funcs.disable_vblank hook for
+	 * more details.
+	 */
+	void (*disable_vblank)(struct drm_simple_display_pipe *pipe);
 };
 
 /**
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 1/4] drm/simple_kms_helper: Add {enable|disable}_vblank callback support
@ 2018-02-12  8:52   ` Oleksandr Andrushchenko
  0 siblings, 0 replies; 20+ messages in thread
From: Oleksandr Andrushchenko @ 2018-02-12  8:52 UTC (permalink / raw)
  To: dri-devel, linux-kernel; +Cc: airlied, daniel.vetter, Oleksandr Andrushchenko

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

If simple_kms_helper based driver needs to work with vblanks,
then it has to provide drm_driver.{enable|disable}_vblank callbacks,
because drm_simple_kms_helper.drm_crtc_funcs does not provide any.
At the same time drm_driver.{enable|disable}_vblank callbacks
are marked as deprecated and shouldn't be used by new drivers.

Fix this by extending drm_simple_kms_helper.drm_crtc_funcs
to provide the missing callbacks.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
---
 drivers/gpu/drm/drm_simple_kms_helper.c | 24 ++++++++++++++++++++++++
 include/drm/drm_simple_kms_helper.h     | 18 ++++++++++++++++++
 2 files changed, 42 insertions(+)

diff --git a/drivers/gpu/drm/drm_simple_kms_helper.c b/drivers/gpu/drm/drm_simple_kms_helper.c
index 9d3f6b70812c..9ca8a4a59b74 100644
--- a/drivers/gpu/drm/drm_simple_kms_helper.c
+++ b/drivers/gpu/drm/drm_simple_kms_helper.c
@@ -77,6 +77,28 @@ static const struct drm_crtc_helper_funcs drm_simple_kms_crtc_helper_funcs = {
 	.atomic_disable = drm_simple_kms_crtc_disable,
 };
 
+static int drm_simple_kms_crtc_enable_vblank(struct drm_crtc *crtc)
+{
+	struct drm_simple_display_pipe *pipe;
+
+	pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
+	if (!pipe->funcs || !pipe->funcs->enable_vblank)
+		return 0;
+
+	return pipe->funcs->enable_vblank(pipe);
+}
+
+static void drm_simple_kms_crtc_disable_vblank(struct drm_crtc *crtc)
+{
+	struct drm_simple_display_pipe *pipe;
+
+	pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
+	if (!pipe->funcs || !pipe->funcs->disable_vblank)
+		return;
+
+	pipe->funcs->disable_vblank(pipe);
+}
+
 static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
 	.reset = drm_atomic_helper_crtc_reset,
 	.destroy = drm_crtc_cleanup,
@@ -84,6 +106,8 @@ static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
 	.page_flip = drm_atomic_helper_page_flip,
 	.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
 	.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
+	.enable_vblank = drm_simple_kms_crtc_enable_vblank,
+	.disable_vblank = drm_simple_kms_crtc_disable_vblank,
 };
 
 static int drm_simple_kms_plane_atomic_check(struct drm_plane *plane,
diff --git a/include/drm/drm_simple_kms_helper.h b/include/drm/drm_simple_kms_helper.h
index 6d9adbb46293..79567826b099 100644
--- a/include/drm/drm_simple_kms_helper.h
+++ b/include/drm/drm_simple_kms_helper.h
@@ -93,6 +93,24 @@ struct drm_simple_display_pipe_funcs {
 	 */
 	void (*cleanup_fb)(struct drm_simple_display_pipe *pipe,
 			   struct drm_plane_state *plane_state);
+
+	/**
+	 * @enable_vblank:
+	 *
+	 * Optional, called by &drm_crtc_funcs.enable_vblank. Please read
+	 * the documentation for the &drm_crtc_funcs.enable_vblank hook for
+	 * more details.
+	 */
+	int (*enable_vblank)(struct drm_simple_display_pipe *pipe);
+
+	/**
+	 * @disable_vblank:
+	 *
+	 * Optional, called by &drm_crtc_funcs.disable_vblank. Please read
+	 * the documentation for the &drm_crtc_funcs.disable_vblank hook for
+	 * more details.
+	 */
+	void (*disable_vblank)(struct drm_simple_display_pipe *pipe);
 };
 
 /**
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 2/4] drm/mxsfb: Do not use deprecated drm_driver.{enable|disable)_vblank
  2018-02-12  8:52 ` Oleksandr Andrushchenko
@ 2018-02-12  8:52   ` Oleksandr Andrushchenko
  -1 siblings, 0 replies; 20+ messages in thread
From: Oleksandr Andrushchenko @ 2018-02-12  8:52 UTC (permalink / raw)
  To: dri-devel, linux-kernel
  Cc: daniel.vetter, gustavo, airlied, seanpaul,
	Oleksandr Andrushchenko, Marek Vasut

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

Do not use deprecated drm_driver.{enable|disable)_vblank callbacks,
but use drm_simple_kms_helpe's pipe callbacks instead.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Cc: Marek Vasut <marex@denx.de>
---
 drivers/gpu/drm/mxsfb/mxsfb_drv.c | 54 ++++++++++++++++++++-------------------
 1 file changed, 28 insertions(+), 26 deletions(-)

diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
index 1207ffe36250..5cae8db9dcd4 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
@@ -131,11 +131,37 @@ static int mxsfb_pipe_prepare_fb(struct drm_simple_display_pipe *pipe,
 	return drm_gem_fb_prepare_fb(&pipe->plane, plane_state);
 }
 
+static int mxsfb_pipe_enable_vblank(struct drm_simple_display_pipe *pipe)
+{
+	struct mxsfb_drm_private *mxsfb = drm_pipe_to_mxsfb_drm_private(pipe);
+
+	/* Clear and enable VBLANK IRQ */
+	mxsfb_enable_axi_clk(mxsfb);
+	writel(CTRL1_CUR_FRAME_DONE_IRQ, mxsfb->base + LCDC_CTRL1 + REG_CLR);
+	writel(CTRL1_CUR_FRAME_DONE_IRQ_EN, mxsfb->base + LCDC_CTRL1 + REG_SET);
+	mxsfb_disable_axi_clk(mxsfb);
+
+	return 0;
+}
+
+static void mxsfb_pipe_disable_vblank(struct drm_simple_display_pipe *pipe)
+{
+	struct mxsfb_drm_private *mxsfb = drm_pipe_to_mxsfb_drm_private(pipe);
+
+	/* Disable and clear VBLANK IRQ */
+	mxsfb_enable_axi_clk(mxsfb);
+	writel(CTRL1_CUR_FRAME_DONE_IRQ_EN, mxsfb->base + LCDC_CTRL1 + REG_CLR);
+	writel(CTRL1_CUR_FRAME_DONE_IRQ, mxsfb->base + LCDC_CTRL1 + REG_CLR);
+	mxsfb_disable_axi_clk(mxsfb);
+}
+
 static struct drm_simple_display_pipe_funcs mxsfb_funcs = {
 	.enable		= mxsfb_pipe_enable,
 	.disable	= mxsfb_pipe_disable,
 	.update		= mxsfb_pipe_update,
 	.prepare_fb	= mxsfb_pipe_prepare_fb,
+	.enable_vblank	= mxsfb_pipe_enable_vblank,
+	.disable_vblank	= mxsfb_pipe_disable_vblank,
 };
 
 static int mxsfb_load(struct drm_device *drm, unsigned long flags)
@@ -274,33 +300,11 @@ static void mxsfb_lastclose(struct drm_device *drm)
 	drm_fbdev_cma_restore_mode(mxsfb->fbdev);
 }
 
-static int mxsfb_enable_vblank(struct drm_device *drm, unsigned int crtc)
-{
-	struct mxsfb_drm_private *mxsfb = drm->dev_private;
-
-	/* Clear and enable VBLANK IRQ */
-	mxsfb_enable_axi_clk(mxsfb);
-	writel(CTRL1_CUR_FRAME_DONE_IRQ, mxsfb->base + LCDC_CTRL1 + REG_CLR);
-	writel(CTRL1_CUR_FRAME_DONE_IRQ_EN, mxsfb->base + LCDC_CTRL1 + REG_SET);
-	mxsfb_disable_axi_clk(mxsfb);
-
-	return 0;
-}
-
-static void mxsfb_disable_vblank(struct drm_device *drm, unsigned int crtc)
+static void mxsfb_irq_preinstall(struct drm_device *drm)
 {
 	struct mxsfb_drm_private *mxsfb = drm->dev_private;
 
-	/* Disable and clear VBLANK IRQ */
-	mxsfb_enable_axi_clk(mxsfb);
-	writel(CTRL1_CUR_FRAME_DONE_IRQ_EN, mxsfb->base + LCDC_CTRL1 + REG_CLR);
-	writel(CTRL1_CUR_FRAME_DONE_IRQ, mxsfb->base + LCDC_CTRL1 + REG_CLR);
-	mxsfb_disable_axi_clk(mxsfb);
-}
-
-static void mxsfb_irq_preinstall(struct drm_device *drm)
-{
-	mxsfb_disable_vblank(drm, 0);
+	mxsfb_pipe_disable_vblank(&mxsfb->pipe);
 }
 
 static irqreturn_t mxsfb_irq_handler(int irq, void *data)
@@ -333,8 +337,6 @@ static struct drm_driver mxsfb_driver = {
 	.irq_handler		= mxsfb_irq_handler,
 	.irq_preinstall		= mxsfb_irq_preinstall,
 	.irq_uninstall		= mxsfb_irq_preinstall,
-	.enable_vblank		= mxsfb_enable_vblank,
-	.disable_vblank		= mxsfb_disable_vblank,
 	.gem_free_object_unlocked = drm_gem_cma_free_object,
 	.gem_vm_ops		= &drm_gem_cma_vm_ops,
 	.dumb_create		= drm_gem_cma_dumb_create,
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 2/4] drm/mxsfb: Do not use deprecated drm_driver.{enable|disable)_vblank
@ 2018-02-12  8:52   ` Oleksandr Andrushchenko
  0 siblings, 0 replies; 20+ messages in thread
From: Oleksandr Andrushchenko @ 2018-02-12  8:52 UTC (permalink / raw)
  To: dri-devel, linux-kernel
  Cc: Marek Vasut, Oleksandr Andrushchenko, airlied, daniel.vetter

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

Do not use deprecated drm_driver.{enable|disable)_vblank callbacks,
but use drm_simple_kms_helpe's pipe callbacks instead.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Cc: Marek Vasut <marex@denx.de>
---
 drivers/gpu/drm/mxsfb/mxsfb_drv.c | 54 ++++++++++++++++++++-------------------
 1 file changed, 28 insertions(+), 26 deletions(-)

diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
index 1207ffe36250..5cae8db9dcd4 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
@@ -131,11 +131,37 @@ static int mxsfb_pipe_prepare_fb(struct drm_simple_display_pipe *pipe,
 	return drm_gem_fb_prepare_fb(&pipe->plane, plane_state);
 }
 
+static int mxsfb_pipe_enable_vblank(struct drm_simple_display_pipe *pipe)
+{
+	struct mxsfb_drm_private *mxsfb = drm_pipe_to_mxsfb_drm_private(pipe);
+
+	/* Clear and enable VBLANK IRQ */
+	mxsfb_enable_axi_clk(mxsfb);
+	writel(CTRL1_CUR_FRAME_DONE_IRQ, mxsfb->base + LCDC_CTRL1 + REG_CLR);
+	writel(CTRL1_CUR_FRAME_DONE_IRQ_EN, mxsfb->base + LCDC_CTRL1 + REG_SET);
+	mxsfb_disable_axi_clk(mxsfb);
+
+	return 0;
+}
+
+static void mxsfb_pipe_disable_vblank(struct drm_simple_display_pipe *pipe)
+{
+	struct mxsfb_drm_private *mxsfb = drm_pipe_to_mxsfb_drm_private(pipe);
+
+	/* Disable and clear VBLANK IRQ */
+	mxsfb_enable_axi_clk(mxsfb);
+	writel(CTRL1_CUR_FRAME_DONE_IRQ_EN, mxsfb->base + LCDC_CTRL1 + REG_CLR);
+	writel(CTRL1_CUR_FRAME_DONE_IRQ, mxsfb->base + LCDC_CTRL1 + REG_CLR);
+	mxsfb_disable_axi_clk(mxsfb);
+}
+
 static struct drm_simple_display_pipe_funcs mxsfb_funcs = {
 	.enable		= mxsfb_pipe_enable,
 	.disable	= mxsfb_pipe_disable,
 	.update		= mxsfb_pipe_update,
 	.prepare_fb	= mxsfb_pipe_prepare_fb,
+	.enable_vblank	= mxsfb_pipe_enable_vblank,
+	.disable_vblank	= mxsfb_pipe_disable_vblank,
 };
 
 static int mxsfb_load(struct drm_device *drm, unsigned long flags)
@@ -274,33 +300,11 @@ static void mxsfb_lastclose(struct drm_device *drm)
 	drm_fbdev_cma_restore_mode(mxsfb->fbdev);
 }
 
-static int mxsfb_enable_vblank(struct drm_device *drm, unsigned int crtc)
-{
-	struct mxsfb_drm_private *mxsfb = drm->dev_private;
-
-	/* Clear and enable VBLANK IRQ */
-	mxsfb_enable_axi_clk(mxsfb);
-	writel(CTRL1_CUR_FRAME_DONE_IRQ, mxsfb->base + LCDC_CTRL1 + REG_CLR);
-	writel(CTRL1_CUR_FRAME_DONE_IRQ_EN, mxsfb->base + LCDC_CTRL1 + REG_SET);
-	mxsfb_disable_axi_clk(mxsfb);
-
-	return 0;
-}
-
-static void mxsfb_disable_vblank(struct drm_device *drm, unsigned int crtc)
+static void mxsfb_irq_preinstall(struct drm_device *drm)
 {
 	struct mxsfb_drm_private *mxsfb = drm->dev_private;
 
-	/* Disable and clear VBLANK IRQ */
-	mxsfb_enable_axi_clk(mxsfb);
-	writel(CTRL1_CUR_FRAME_DONE_IRQ_EN, mxsfb->base + LCDC_CTRL1 + REG_CLR);
-	writel(CTRL1_CUR_FRAME_DONE_IRQ, mxsfb->base + LCDC_CTRL1 + REG_CLR);
-	mxsfb_disable_axi_clk(mxsfb);
-}
-
-static void mxsfb_irq_preinstall(struct drm_device *drm)
-{
-	mxsfb_disable_vblank(drm, 0);
+	mxsfb_pipe_disable_vblank(&mxsfb->pipe);
 }
 
 static irqreturn_t mxsfb_irq_handler(int irq, void *data)
@@ -333,8 +337,6 @@ static struct drm_driver mxsfb_driver = {
 	.irq_handler		= mxsfb_irq_handler,
 	.irq_preinstall		= mxsfb_irq_preinstall,
 	.irq_uninstall		= mxsfb_irq_preinstall,
-	.enable_vblank		= mxsfb_enable_vblank,
-	.disable_vblank		= mxsfb_disable_vblank,
 	.gem_free_object_unlocked = drm_gem_cma_free_object,
 	.gem_vm_ops		= &drm_gem_cma_vm_ops,
 	.dumb_create		= drm_gem_cma_dumb_create,
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 3/4] drm/tve200: Do not use deprecated drm_driver.{enable|disable)_vblank
  2018-02-12  8:52 ` Oleksandr Andrushchenko
@ 2018-02-12  8:52   ` Oleksandr Andrushchenko
  -1 siblings, 0 replies; 20+ messages in thread
From: Oleksandr Andrushchenko @ 2018-02-12  8:52 UTC (permalink / raw)
  To: dri-devel, linux-kernel
  Cc: daniel.vetter, gustavo, airlied, seanpaul,
	Oleksandr Andrushchenko, Linus Walleij

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

Do not use deprecated drm_driver.{enable|disable)_vblank callbacks,
but use drm_simple_kms_helpe's pipe callbacks instead.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
---
 drivers/gpu/drm/tve200/tve200_display.c | 10 ++++++++--
 drivers/gpu/drm/tve200/tve200_drm.h     |  2 --
 drivers/gpu/drm/tve200/tve200_drv.c     |  3 ---
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/tve200/tve200_display.c b/drivers/gpu/drm/tve200/tve200_display.c
index 2c668bd6d997..db397fcb345a 100644
--- a/drivers/gpu/drm/tve200/tve200_display.c
+++ b/drivers/gpu/drm/tve200/tve200_display.c
@@ -273,16 +273,20 @@ static void tve200_display_update(struct drm_simple_display_pipe *pipe,
 	}
 }
 
-int tve200_enable_vblank(struct drm_device *drm, unsigned int crtc)
+static int tve200_display_enable_vblank(struct drm_simple_display_pipe *pipe)
 {
+	struct drm_crtc *crtc = &pipe->crtc;
+	struct drm_device *drm = crtc->dev;
 	struct tve200_drm_dev_private *priv = drm->dev_private;
 
 	writel(TVE200_INT_V_STATUS, priv->regs + TVE200_INT_EN);
 	return 0;
 }
 
-void tve200_disable_vblank(struct drm_device *drm, unsigned int crtc)
+static void tve200_display_disable_vblank(struct drm_simple_display_pipe *pipe)
 {
+	struct drm_crtc *crtc = &pipe->crtc;
+	struct drm_device *drm = crtc->dev;
 	struct tve200_drm_dev_private *priv = drm->dev_private;
 
 	writel(0, priv->regs + TVE200_INT_EN);
@@ -300,6 +304,8 @@ static const struct drm_simple_display_pipe_funcs tve200_display_funcs = {
 	.disable = tve200_display_disable,
 	.update = tve200_display_update,
 	.prepare_fb = tve200_display_prepare_fb,
+	.enable_vblank = tve200_display_enable_vblank,
+	.disable_vblank = tve200_display_disable_vblank,
 };
 
 int tve200_display_init(struct drm_device *drm)
diff --git a/drivers/gpu/drm/tve200/tve200_drm.h b/drivers/gpu/drm/tve200/tve200_drm.h
index 5c270055bd58..1ba4380f489b 100644
--- a/drivers/gpu/drm/tve200/tve200_drm.h
+++ b/drivers/gpu/drm/tve200/tve200_drm.h
@@ -113,8 +113,6 @@ struct tve200_drm_dev_private {
 	container_of(x, struct tve200_drm_connector, connector)
 
 int tve200_display_init(struct drm_device *dev);
-int tve200_enable_vblank(struct drm_device *drm, unsigned int crtc);
-void tve200_disable_vblank(struct drm_device *drm, unsigned int crtc);
 irqreturn_t tve200_irq(int irq, void *data);
 int tve200_connector_init(struct drm_device *dev);
 int tve200_encoder_init(struct drm_device *dev);
diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
index 44911d921864..ac344ddb23bc 100644
--- a/drivers/gpu/drm/tve200/tve200_drv.c
+++ b/drivers/gpu/drm/tve200/tve200_drv.c
@@ -162,9 +162,6 @@ static struct drm_driver tve200_drm_driver = {
 	.gem_free_object_unlocked = drm_gem_cma_free_object,
 	.gem_vm_ops = &drm_gem_cma_vm_ops,
 
-	.enable_vblank = tve200_enable_vblank,
-	.disable_vblank = tve200_disable_vblank,
-
 	.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
 	.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
 	.gem_prime_import = drm_gem_prime_import,
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 3/4] drm/tve200: Do not use deprecated drm_driver.{enable|disable)_vblank
@ 2018-02-12  8:52   ` Oleksandr Andrushchenko
  0 siblings, 0 replies; 20+ messages in thread
From: Oleksandr Andrushchenko @ 2018-02-12  8:52 UTC (permalink / raw)
  To: dri-devel, linux-kernel; +Cc: Oleksandr Andrushchenko, airlied, daniel.vetter

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

Do not use deprecated drm_driver.{enable|disable)_vblank callbacks,
but use drm_simple_kms_helpe's pipe callbacks instead.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
---
 drivers/gpu/drm/tve200/tve200_display.c | 10 ++++++++--
 drivers/gpu/drm/tve200/tve200_drm.h     |  2 --
 drivers/gpu/drm/tve200/tve200_drv.c     |  3 ---
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/tve200/tve200_display.c b/drivers/gpu/drm/tve200/tve200_display.c
index 2c668bd6d997..db397fcb345a 100644
--- a/drivers/gpu/drm/tve200/tve200_display.c
+++ b/drivers/gpu/drm/tve200/tve200_display.c
@@ -273,16 +273,20 @@ static void tve200_display_update(struct drm_simple_display_pipe *pipe,
 	}
 }
 
-int tve200_enable_vblank(struct drm_device *drm, unsigned int crtc)
+static int tve200_display_enable_vblank(struct drm_simple_display_pipe *pipe)
 {
+	struct drm_crtc *crtc = &pipe->crtc;
+	struct drm_device *drm = crtc->dev;
 	struct tve200_drm_dev_private *priv = drm->dev_private;
 
 	writel(TVE200_INT_V_STATUS, priv->regs + TVE200_INT_EN);
 	return 0;
 }
 
-void tve200_disable_vblank(struct drm_device *drm, unsigned int crtc)
+static void tve200_display_disable_vblank(struct drm_simple_display_pipe *pipe)
 {
+	struct drm_crtc *crtc = &pipe->crtc;
+	struct drm_device *drm = crtc->dev;
 	struct tve200_drm_dev_private *priv = drm->dev_private;
 
 	writel(0, priv->regs + TVE200_INT_EN);
@@ -300,6 +304,8 @@ static const struct drm_simple_display_pipe_funcs tve200_display_funcs = {
 	.disable = tve200_display_disable,
 	.update = tve200_display_update,
 	.prepare_fb = tve200_display_prepare_fb,
+	.enable_vblank = tve200_display_enable_vblank,
+	.disable_vblank = tve200_display_disable_vblank,
 };
 
 int tve200_display_init(struct drm_device *drm)
diff --git a/drivers/gpu/drm/tve200/tve200_drm.h b/drivers/gpu/drm/tve200/tve200_drm.h
index 5c270055bd58..1ba4380f489b 100644
--- a/drivers/gpu/drm/tve200/tve200_drm.h
+++ b/drivers/gpu/drm/tve200/tve200_drm.h
@@ -113,8 +113,6 @@ struct tve200_drm_dev_private {
 	container_of(x, struct tve200_drm_connector, connector)
 
 int tve200_display_init(struct drm_device *dev);
-int tve200_enable_vblank(struct drm_device *drm, unsigned int crtc);
-void tve200_disable_vblank(struct drm_device *drm, unsigned int crtc);
 irqreturn_t tve200_irq(int irq, void *data);
 int tve200_connector_init(struct drm_device *dev);
 int tve200_encoder_init(struct drm_device *dev);
diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
index 44911d921864..ac344ddb23bc 100644
--- a/drivers/gpu/drm/tve200/tve200_drv.c
+++ b/drivers/gpu/drm/tve200/tve200_drv.c
@@ -162,9 +162,6 @@ static struct drm_driver tve200_drm_driver = {
 	.gem_free_object_unlocked = drm_gem_cma_free_object,
 	.gem_vm_ops = &drm_gem_cma_vm_ops,
 
-	.enable_vblank = tve200_enable_vblank,
-	.disable_vblank = tve200_disable_vblank,
-
 	.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
 	.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
 	.gem_prime_import = drm_gem_prime_import,
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH 4/4] drm/pl111: Do not use deprecated drm_driver.{enable|disable)_vblank
  2018-02-12  8:52 ` Oleksandr Andrushchenko
                   ` (3 preceding siblings ...)
  (?)
@ 2018-02-12  8:52 ` Oleksandr Andrushchenko
  2018-02-21 22:44     ` Eric Anholt
  -1 siblings, 1 reply; 20+ messages in thread
From: Oleksandr Andrushchenko @ 2018-02-12  8:52 UTC (permalink / raw)
  To: dri-devel, linux-kernel
  Cc: daniel.vetter, gustavo, airlied, seanpaul,
	Oleksandr Andrushchenko, Eric Anholt

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

Do not use deprecated drm_driver.{enable|disable)_vblank callbacks,
but use drm_simple_kms_helpe's pipe callbacks instead.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Cc: Eric Anholt <eric@anholt.net>
---
 drivers/gpu/drm/pl111/pl111_display.c | 15 ++++++++++++---
 drivers/gpu/drm/pl111/pl111_drm.h     |  2 --
 drivers/gpu/drm/pl111/pl111_drv.c     |  5 -----
 3 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/pl111/pl111_display.c b/drivers/gpu/drm/pl111/pl111_display.c
index d75923896609..5b8368c76734 100644
--- a/drivers/gpu/drm/pl111/pl111_display.c
+++ b/drivers/gpu/drm/pl111/pl111_display.c
@@ -321,8 +321,10 @@ static void pl111_display_update(struct drm_simple_display_pipe *pipe,
 	}
 }
 
-int pl111_enable_vblank(struct drm_device *drm, unsigned int crtc)
+static int pl111_display_enable_vblank(struct drm_simple_display_pipe *pipe)
 {
+	struct drm_crtc *crtc = &pipe->crtc;
+	struct drm_device *drm = crtc->dev;
 	struct pl111_drm_dev_private *priv = drm->dev_private;
 
 	writel(CLCD_IRQ_NEXTBASE_UPDATE, priv->regs + priv->ienb);
@@ -330,8 +332,10 @@ int pl111_enable_vblank(struct drm_device *drm, unsigned int crtc)
 	return 0;
 }
 
-void pl111_disable_vblank(struct drm_device *drm, unsigned int crtc)
+static void pl111_display_disable_vblank(struct drm_simple_display_pipe *pipe)
 {
+	struct drm_crtc *crtc = &pipe->crtc;
+	struct drm_device *drm = crtc->dev;
 	struct pl111_drm_dev_private *priv = drm->dev_private;
 
 	writel(0, priv->regs + priv->ienb);
@@ -343,7 +347,7 @@ static int pl111_display_prepare_fb(struct drm_simple_display_pipe *pipe,
 	return drm_gem_fb_prepare_fb(&pipe->plane, plane_state);
 }
 
-static const struct drm_simple_display_pipe_funcs pl111_display_funcs = {
+static struct drm_simple_display_pipe_funcs pl111_display_funcs = {
 	.check = pl111_display_check,
 	.enable = pl111_display_enable,
 	.disable = pl111_display_disable,
@@ -502,6 +506,11 @@ int pl111_display_init(struct drm_device *drm)
 	if (ret)
 		return ret;
 
+	if (!priv->variant->broken_vblank) {
+		pl111_display_funcs.enable_vblank = pl111_display_enable_vblank;
+		pl111_display_funcs.disable_vblank = pl111_display_disable_vblank;
+	}
+
 	ret = drm_simple_display_pipe_init(drm, &priv->pipe,
 					   &pl111_display_funcs,
 					   priv->variant->formats,
diff --git a/drivers/gpu/drm/pl111/pl111_drm.h b/drivers/gpu/drm/pl111/pl111_drm.h
index 6d0e450e51b1..8e252b561e2c 100644
--- a/drivers/gpu/drm/pl111/pl111_drm.h
+++ b/drivers/gpu/drm/pl111/pl111_drm.h
@@ -79,8 +79,6 @@ struct pl111_drm_dev_private {
 };
 
 int pl111_display_init(struct drm_device *dev);
-int pl111_enable_vblank(struct drm_device *drm, unsigned int crtc);
-void pl111_disable_vblank(struct drm_device *drm, unsigned int crtc);
 irqreturn_t pl111_irq(int irq, void *data);
 int pl111_debugfs_init(struct drm_minor *minor);
 
diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
index 1231905150d0..a7a3a49956c5 100644
--- a/drivers/gpu/drm/pl111/pl111_drv.c
+++ b/drivers/gpu/drm/pl111/pl111_drv.c
@@ -249,11 +249,6 @@ static int pl111_amba_probe(struct amba_device *amba_dev,
 	if (!priv)
 		return -ENOMEM;
 
-	if (!variant->broken_vblank) {
-		pl111_drm_driver.enable_vblank = pl111_enable_vblank;
-		pl111_drm_driver.disable_vblank = pl111_disable_vblank;
-	}
-
 	drm = drm_dev_alloc(&pl111_drm_driver, dev);
 	if (IS_ERR(drm))
 		return PTR_ERR(drm);
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH 2/4] drm/mxsfb: Do not use deprecated drm_driver.{enable|disable)_vblank
  2018-02-12  8:52   ` Oleksandr Andrushchenko
  (?)
@ 2018-02-12  9:26   ` Marek Vasut
  -1 siblings, 0 replies; 20+ messages in thread
From: Marek Vasut @ 2018-02-12  9:26 UTC (permalink / raw)
  To: Oleksandr Andrushchenko, dri-devel, linux-kernel
  Cc: daniel.vetter, gustavo, airlied, seanpaul, Oleksandr Andrushchenko

On 02/12/2018 09:52 AM, Oleksandr Andrushchenko wrote:
> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> 
> Do not use deprecated drm_driver.{enable|disable)_vblank callbacks,
> but use drm_simple_kms_helpe's pipe callbacks instead.
> 
> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> Cc: Marek Vasut <marex@denx.de>

Reviewed-by: Marek Vasut <marex@denx.de>

> ---
>  drivers/gpu/drm/mxsfb/mxsfb_drv.c | 54 ++++++++++++++++++++-------------------
>  1 file changed, 28 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> index 1207ffe36250..5cae8db9dcd4 100644
> --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> @@ -131,11 +131,37 @@ static int mxsfb_pipe_prepare_fb(struct drm_simple_display_pipe *pipe,
>  	return drm_gem_fb_prepare_fb(&pipe->plane, plane_state);
>  }
>  
> +static int mxsfb_pipe_enable_vblank(struct drm_simple_display_pipe *pipe)
> +{
> +	struct mxsfb_drm_private *mxsfb = drm_pipe_to_mxsfb_drm_private(pipe);
> +
> +	/* Clear and enable VBLANK IRQ */
> +	mxsfb_enable_axi_clk(mxsfb);
> +	writel(CTRL1_CUR_FRAME_DONE_IRQ, mxsfb->base + LCDC_CTRL1 + REG_CLR);
> +	writel(CTRL1_CUR_FRAME_DONE_IRQ_EN, mxsfb->base + LCDC_CTRL1 + REG_SET);
> +	mxsfb_disable_axi_clk(mxsfb);
> +
> +	return 0;
> +}
> +
> +static void mxsfb_pipe_disable_vblank(struct drm_simple_display_pipe *pipe)
> +{
> +	struct mxsfb_drm_private *mxsfb = drm_pipe_to_mxsfb_drm_private(pipe);
> +
> +	/* Disable and clear VBLANK IRQ */
> +	mxsfb_enable_axi_clk(mxsfb);
> +	writel(CTRL1_CUR_FRAME_DONE_IRQ_EN, mxsfb->base + LCDC_CTRL1 + REG_CLR);
> +	writel(CTRL1_CUR_FRAME_DONE_IRQ, mxsfb->base + LCDC_CTRL1 + REG_CLR);
> +	mxsfb_disable_axi_clk(mxsfb);
> +}
> +
>  static struct drm_simple_display_pipe_funcs mxsfb_funcs = {
>  	.enable		= mxsfb_pipe_enable,
>  	.disable	= mxsfb_pipe_disable,
>  	.update		= mxsfb_pipe_update,
>  	.prepare_fb	= mxsfb_pipe_prepare_fb,
> +	.enable_vblank	= mxsfb_pipe_enable_vblank,
> +	.disable_vblank	= mxsfb_pipe_disable_vblank,
>  };
>  
>  static int mxsfb_load(struct drm_device *drm, unsigned long flags)
> @@ -274,33 +300,11 @@ static void mxsfb_lastclose(struct drm_device *drm)
>  	drm_fbdev_cma_restore_mode(mxsfb->fbdev);
>  }
>  
> -static int mxsfb_enable_vblank(struct drm_device *drm, unsigned int crtc)
> -{
> -	struct mxsfb_drm_private *mxsfb = drm->dev_private;
> -
> -	/* Clear and enable VBLANK IRQ */
> -	mxsfb_enable_axi_clk(mxsfb);
> -	writel(CTRL1_CUR_FRAME_DONE_IRQ, mxsfb->base + LCDC_CTRL1 + REG_CLR);
> -	writel(CTRL1_CUR_FRAME_DONE_IRQ_EN, mxsfb->base + LCDC_CTRL1 + REG_SET);
> -	mxsfb_disable_axi_clk(mxsfb);
> -
> -	return 0;
> -}
> -
> -static void mxsfb_disable_vblank(struct drm_device *drm, unsigned int crtc)
> +static void mxsfb_irq_preinstall(struct drm_device *drm)
>  {
>  	struct mxsfb_drm_private *mxsfb = drm->dev_private;
>  
> -	/* Disable and clear VBLANK IRQ */
> -	mxsfb_enable_axi_clk(mxsfb);
> -	writel(CTRL1_CUR_FRAME_DONE_IRQ_EN, mxsfb->base + LCDC_CTRL1 + REG_CLR);
> -	writel(CTRL1_CUR_FRAME_DONE_IRQ, mxsfb->base + LCDC_CTRL1 + REG_CLR);
> -	mxsfb_disable_axi_clk(mxsfb);
> -}
> -
> -static void mxsfb_irq_preinstall(struct drm_device *drm)
> -{
> -	mxsfb_disable_vblank(drm, 0);
> +	mxsfb_pipe_disable_vblank(&mxsfb->pipe);
>  }
>  
>  static irqreturn_t mxsfb_irq_handler(int irq, void *data)
> @@ -333,8 +337,6 @@ static struct drm_driver mxsfb_driver = {
>  	.irq_handler		= mxsfb_irq_handler,
>  	.irq_preinstall		= mxsfb_irq_preinstall,
>  	.irq_uninstall		= mxsfb_irq_preinstall,
> -	.enable_vblank		= mxsfb_enable_vblank,
> -	.disable_vblank		= mxsfb_disable_vblank,
>  	.gem_free_object_unlocked = drm_gem_cma_free_object,
>  	.gem_vm_ops		= &drm_gem_cma_vm_ops,
>  	.dumb_create		= drm_gem_cma_dumb_create,
> 


-- 
Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 3/4] drm/tve200: Do not use deprecated drm_driver.{enable|disable)_vblank
  2018-02-12  8:52   ` Oleksandr Andrushchenko
  (?)
@ 2018-02-13 13:51   ` Linus Walleij
  2018-02-13 13:54     ` Oleksandr Andrushchenko
  -1 siblings, 1 reply; 20+ messages in thread
From: Linus Walleij @ 2018-02-13 13:51 UTC (permalink / raw)
  To: Oleksandr Andrushchenko
  Cc: open list:DRM PANEL DRIVERS, linux-kernel, Daniel Vetter,
	gustavo, Dave Airlie, Sean Paul, Oleksandr Andrushchenko

On Mon, Feb 12, 2018 at 9:52 AM, Oleksandr Andrushchenko
<andr2000@gmail.com> wrote:

> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>
> Do not use deprecated drm_driver.{enable|disable)_vblank callbacks,
> but use drm_simple_kms_helpe's pipe callbacks instead.
>
> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> Cc: Linus Walleij <linus.walleij@linaro.org>

The new way of doing these abstractions seem good, so if people
agree on the general subject (other patches in the series I guess)
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 3/4] drm/tve200: Do not use deprecated drm_driver.{enable|disable)_vblank
  2018-02-13 13:51   ` Linus Walleij
@ 2018-02-13 13:54     ` Oleksandr Andrushchenko
  0 siblings, 0 replies; 20+ messages in thread
From: Oleksandr Andrushchenko @ 2018-02-13 13:54 UTC (permalink / raw)
  To: Linus Walleij
  Cc: open list:DRM PANEL DRIVERS, linux-kernel, Daniel Vetter,
	gustavo, Dave Airlie, Sean Paul, Oleksandr Andrushchenko

On 02/13/2018 03:51 PM, Linus Walleij wrote:
> On Mon, Feb 12, 2018 at 9:52 AM, Oleksandr Andrushchenko
> <andr2000@gmail.com> wrote:
>
>> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>>
>> Do not use deprecated drm_driver.{enable|disable)_vblank callbacks,
>> but use drm_simple_kms_helpe's pipe callbacks instead.
>>
>> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>> Cc: Linus Walleij <linus.walleij@linaro.org>
> The new way of doing these abstractions seem good, so if people
> agree on the general subject (other patches in the series I guess)
fair enough, thank you
> Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
>
> Yours,
> Linus Walleij

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 1/4] drm/simple_kms_helper: Add {enable|disable}_vblank callback support
  2018-02-12  8:52   ` Oleksandr Andrushchenko
@ 2018-02-19  9:11     ` Oleksandr Andrushchenko
  -1 siblings, 0 replies; 20+ messages in thread
From: Oleksandr Andrushchenko @ 2018-02-19  9:11 UTC (permalink / raw)
  To: dri-devel, linux-kernel
  Cc: daniel.vetter, gustavo, airlied, seanpaul, Oleksandr Andrushchenko

ping
On 02/12/2018 10:52 AM, Oleksandr Andrushchenko wrote:
> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>
> If simple_kms_helper based driver needs to work with vblanks,
> then it has to provide drm_driver.{enable|disable}_vblank callbacks,
> because drm_simple_kms_helper.drm_crtc_funcs does not provide any.
> At the same time drm_driver.{enable|disable}_vblank callbacks
> are marked as deprecated and shouldn't be used by new drivers.
>
> Fix this by extending drm_simple_kms_helper.drm_crtc_funcs
> to provide the missing callbacks.
>
> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> ---
>   drivers/gpu/drm/drm_simple_kms_helper.c | 24 ++++++++++++++++++++++++
>   include/drm/drm_simple_kms_helper.h     | 18 ++++++++++++++++++
>   2 files changed, 42 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_simple_kms_helper.c b/drivers/gpu/drm/drm_simple_kms_helper.c
> index 9d3f6b70812c..9ca8a4a59b74 100644
> --- a/drivers/gpu/drm/drm_simple_kms_helper.c
> +++ b/drivers/gpu/drm/drm_simple_kms_helper.c
> @@ -77,6 +77,28 @@ static const struct drm_crtc_helper_funcs drm_simple_kms_crtc_helper_funcs = {
>   	.atomic_disable = drm_simple_kms_crtc_disable,
>   };
>   
> +static int drm_simple_kms_crtc_enable_vblank(struct drm_crtc *crtc)
> +{
> +	struct drm_simple_display_pipe *pipe;
> +
> +	pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
> +	if (!pipe->funcs || !pipe->funcs->enable_vblank)
> +		return 0;
> +
> +	return pipe->funcs->enable_vblank(pipe);
> +}
> +
> +static void drm_simple_kms_crtc_disable_vblank(struct drm_crtc *crtc)
> +{
> +	struct drm_simple_display_pipe *pipe;
> +
> +	pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
> +	if (!pipe->funcs || !pipe->funcs->disable_vblank)
> +		return;
> +
> +	pipe->funcs->disable_vblank(pipe);
> +}
> +
>   static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
>   	.reset = drm_atomic_helper_crtc_reset,
>   	.destroy = drm_crtc_cleanup,
> @@ -84,6 +106,8 @@ static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
>   	.page_flip = drm_atomic_helper_page_flip,
>   	.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
>   	.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
> +	.enable_vblank = drm_simple_kms_crtc_enable_vblank,
> +	.disable_vblank = drm_simple_kms_crtc_disable_vblank,
>   };
>   
>   static int drm_simple_kms_plane_atomic_check(struct drm_plane *plane,
> diff --git a/include/drm/drm_simple_kms_helper.h b/include/drm/drm_simple_kms_helper.h
> index 6d9adbb46293..79567826b099 100644
> --- a/include/drm/drm_simple_kms_helper.h
> +++ b/include/drm/drm_simple_kms_helper.h
> @@ -93,6 +93,24 @@ struct drm_simple_display_pipe_funcs {
>   	 */
>   	void (*cleanup_fb)(struct drm_simple_display_pipe *pipe,
>   			   struct drm_plane_state *plane_state);
> +
> +	/**
> +	 * @enable_vblank:
> +	 *
> +	 * Optional, called by &drm_crtc_funcs.enable_vblank. Please read
> +	 * the documentation for the &drm_crtc_funcs.enable_vblank hook for
> +	 * more details.
> +	 */
> +	int (*enable_vblank)(struct drm_simple_display_pipe *pipe);
> +
> +	/**
> +	 * @disable_vblank:
> +	 *
> +	 * Optional, called by &drm_crtc_funcs.disable_vblank. Please read
> +	 * the documentation for the &drm_crtc_funcs.disable_vblank hook for
> +	 * more details.
> +	 */
> +	void (*disable_vblank)(struct drm_simple_display_pipe *pipe);
>   };
>   
>   /**

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 1/4] drm/simple_kms_helper: Add {enable|disable}_vblank callback support
@ 2018-02-19  9:11     ` Oleksandr Andrushchenko
  0 siblings, 0 replies; 20+ messages in thread
From: Oleksandr Andrushchenko @ 2018-02-19  9:11 UTC (permalink / raw)
  To: dri-devel, linux-kernel; +Cc: airlied, daniel.vetter, Oleksandr Andrushchenko

ping
On 02/12/2018 10:52 AM, Oleksandr Andrushchenko wrote:
> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>
> If simple_kms_helper based driver needs to work with vblanks,
> then it has to provide drm_driver.{enable|disable}_vblank callbacks,
> because drm_simple_kms_helper.drm_crtc_funcs does not provide any.
> At the same time drm_driver.{enable|disable}_vblank callbacks
> are marked as deprecated and shouldn't be used by new drivers.
>
> Fix this by extending drm_simple_kms_helper.drm_crtc_funcs
> to provide the missing callbacks.
>
> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> ---
>   drivers/gpu/drm/drm_simple_kms_helper.c | 24 ++++++++++++++++++++++++
>   include/drm/drm_simple_kms_helper.h     | 18 ++++++++++++++++++
>   2 files changed, 42 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_simple_kms_helper.c b/drivers/gpu/drm/drm_simple_kms_helper.c
> index 9d3f6b70812c..9ca8a4a59b74 100644
> --- a/drivers/gpu/drm/drm_simple_kms_helper.c
> +++ b/drivers/gpu/drm/drm_simple_kms_helper.c
> @@ -77,6 +77,28 @@ static const struct drm_crtc_helper_funcs drm_simple_kms_crtc_helper_funcs = {
>   	.atomic_disable = drm_simple_kms_crtc_disable,
>   };
>   
> +static int drm_simple_kms_crtc_enable_vblank(struct drm_crtc *crtc)
> +{
> +	struct drm_simple_display_pipe *pipe;
> +
> +	pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
> +	if (!pipe->funcs || !pipe->funcs->enable_vblank)
> +		return 0;
> +
> +	return pipe->funcs->enable_vblank(pipe);
> +}
> +
> +static void drm_simple_kms_crtc_disable_vblank(struct drm_crtc *crtc)
> +{
> +	struct drm_simple_display_pipe *pipe;
> +
> +	pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
> +	if (!pipe->funcs || !pipe->funcs->disable_vblank)
> +		return;
> +
> +	pipe->funcs->disable_vblank(pipe);
> +}
> +
>   static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
>   	.reset = drm_atomic_helper_crtc_reset,
>   	.destroy = drm_crtc_cleanup,
> @@ -84,6 +106,8 @@ static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
>   	.page_flip = drm_atomic_helper_page_flip,
>   	.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
>   	.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
> +	.enable_vblank = drm_simple_kms_crtc_enable_vblank,
> +	.disable_vblank = drm_simple_kms_crtc_disable_vblank,
>   };
>   
>   static int drm_simple_kms_plane_atomic_check(struct drm_plane *plane,
> diff --git a/include/drm/drm_simple_kms_helper.h b/include/drm/drm_simple_kms_helper.h
> index 6d9adbb46293..79567826b099 100644
> --- a/include/drm/drm_simple_kms_helper.h
> +++ b/include/drm/drm_simple_kms_helper.h
> @@ -93,6 +93,24 @@ struct drm_simple_display_pipe_funcs {
>   	 */
>   	void (*cleanup_fb)(struct drm_simple_display_pipe *pipe,
>   			   struct drm_plane_state *plane_state);
> +
> +	/**
> +	 * @enable_vblank:
> +	 *
> +	 * Optional, called by &drm_crtc_funcs.enable_vblank. Please read
> +	 * the documentation for the &drm_crtc_funcs.enable_vblank hook for
> +	 * more details.
> +	 */
> +	int (*enable_vblank)(struct drm_simple_display_pipe *pipe);
> +
> +	/**
> +	 * @disable_vblank:
> +	 *
> +	 * Optional, called by &drm_crtc_funcs.disable_vblank. Please read
> +	 * the documentation for the &drm_crtc_funcs.disable_vblank hook for
> +	 * more details.
> +	 */
> +	void (*disable_vblank)(struct drm_simple_display_pipe *pipe);
>   };
>   
>   /**

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 4/4] drm/pl111: Do not use deprecated drm_driver.{enable|disable)_vblank
  2018-02-12  8:52 ` [PATCH 4/4] drm/pl111: " Oleksandr Andrushchenko
@ 2018-02-21 22:44     ` Eric Anholt
  0 siblings, 0 replies; 20+ messages in thread
From: Eric Anholt @ 2018-02-21 22:44 UTC (permalink / raw)
  To: Oleksandr Andrushchenko, dri-devel, linux-kernel
  Cc: daniel.vetter, gustavo, airlied, seanpaul, Oleksandr Andrushchenko

[-- Attachment #1: Type: text/plain, Size: 512 bytes --]

Oleksandr Andrushchenko <andr2000@gmail.com> writes:

> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>
> Do not use deprecated drm_driver.{enable|disable)_vblank callbacks,
> but use drm_simple_kms_helpe's pipe callbacks instead.
>
> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> Cc: Eric Anholt <eric@anholt.net>

Just got back from vacation today and got a chance to try it.

Reviewed-by: Eric Anholt <eric@anholt.net>
Tested-by: Eric Anholt <eric@anholt.net>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 4/4] drm/pl111: Do not use deprecated drm_driver.{enable|disable)_vblank
@ 2018-02-21 22:44     ` Eric Anholt
  0 siblings, 0 replies; 20+ messages in thread
From: Eric Anholt @ 2018-02-21 22:44 UTC (permalink / raw)
  To: Oleksandr Andrushchenko, dri-devel, linux-kernel
  Cc: airlied, daniel.vetter, Oleksandr Andrushchenko


[-- Attachment #1.1: Type: text/plain, Size: 512 bytes --]

Oleksandr Andrushchenko <andr2000@gmail.com> writes:

> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>
> Do not use deprecated drm_driver.{enable|disable)_vblank callbacks,
> but use drm_simple_kms_helpe's pipe callbacks instead.
>
> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> Cc: Eric Anholt <eric@anholt.net>

Just got back from vacation today and got a chance to try it.

Reviewed-by: Eric Anholt <eric@anholt.net>
Tested-by: Eric Anholt <eric@anholt.net>

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 1/4] drm/simple_kms_helper: Add {enable|disable}_vblank callback support
  2018-02-19  9:11     ` Oleksandr Andrushchenko
@ 2018-02-22 16:59       ` Daniel Vetter
  -1 siblings, 0 replies; 20+ messages in thread
From: Daniel Vetter @ 2018-02-22 16:59 UTC (permalink / raw)
  To: Oleksandr Andrushchenko
  Cc: dri-devel, linux-kernel, airlied, daniel.vetter, Oleksandr Andrushchenko

On Mon, Feb 19, 2018 at 11:11:23AM +0200, Oleksandr Andrushchenko wrote:
> ping
> On 02/12/2018 10:52 AM, Oleksandr Andrushchenko wrote:
> > From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> > 
> > If simple_kms_helper based driver needs to work with vblanks,
> > then it has to provide drm_driver.{enable|disable}_vblank callbacks,
> > because drm_simple_kms_helper.drm_crtc_funcs does not provide any.
> > At the same time drm_driver.{enable|disable}_vblank callbacks
> > are marked as deprecated and shouldn't be used by new drivers.
> > 
> > Fix this by extending drm_simple_kms_helper.drm_crtc_funcs
> > to provide the missing callbacks.
> > 
> > Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

lgtm, all 4 applied, thanks for your patches.
-Daniel

> > ---
> >   drivers/gpu/drm/drm_simple_kms_helper.c | 24 ++++++++++++++++++++++++
> >   include/drm/drm_simple_kms_helper.h     | 18 ++++++++++++++++++
> >   2 files changed, 42 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/drm_simple_kms_helper.c b/drivers/gpu/drm/drm_simple_kms_helper.c
> > index 9d3f6b70812c..9ca8a4a59b74 100644
> > --- a/drivers/gpu/drm/drm_simple_kms_helper.c
> > +++ b/drivers/gpu/drm/drm_simple_kms_helper.c
> > @@ -77,6 +77,28 @@ static const struct drm_crtc_helper_funcs drm_simple_kms_crtc_helper_funcs = {
> >   	.atomic_disable = drm_simple_kms_crtc_disable,
> >   };
> > +static int drm_simple_kms_crtc_enable_vblank(struct drm_crtc *crtc)
> > +{
> > +	struct drm_simple_display_pipe *pipe;
> > +
> > +	pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
> > +	if (!pipe->funcs || !pipe->funcs->enable_vblank)
> > +		return 0;
> > +
> > +	return pipe->funcs->enable_vblank(pipe);
> > +}
> > +
> > +static void drm_simple_kms_crtc_disable_vblank(struct drm_crtc *crtc)
> > +{
> > +	struct drm_simple_display_pipe *pipe;
> > +
> > +	pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
> > +	if (!pipe->funcs || !pipe->funcs->disable_vblank)
> > +		return;
> > +
> > +	pipe->funcs->disable_vblank(pipe);
> > +}
> > +
> >   static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
> >   	.reset = drm_atomic_helper_crtc_reset,
> >   	.destroy = drm_crtc_cleanup,
> > @@ -84,6 +106,8 @@ static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
> >   	.page_flip = drm_atomic_helper_page_flip,
> >   	.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
> >   	.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
> > +	.enable_vblank = drm_simple_kms_crtc_enable_vblank,
> > +	.disable_vblank = drm_simple_kms_crtc_disable_vblank,
> >   };
> >   static int drm_simple_kms_plane_atomic_check(struct drm_plane *plane,
> > diff --git a/include/drm/drm_simple_kms_helper.h b/include/drm/drm_simple_kms_helper.h
> > index 6d9adbb46293..79567826b099 100644
> > --- a/include/drm/drm_simple_kms_helper.h
> > +++ b/include/drm/drm_simple_kms_helper.h
> > @@ -93,6 +93,24 @@ struct drm_simple_display_pipe_funcs {
> >   	 */
> >   	void (*cleanup_fb)(struct drm_simple_display_pipe *pipe,
> >   			   struct drm_plane_state *plane_state);
> > +
> > +	/**
> > +	 * @enable_vblank:
> > +	 *
> > +	 * Optional, called by &drm_crtc_funcs.enable_vblank. Please read
> > +	 * the documentation for the &drm_crtc_funcs.enable_vblank hook for
> > +	 * more details.
> > +	 */
> > +	int (*enable_vblank)(struct drm_simple_display_pipe *pipe);
> > +
> > +	/**
> > +	 * @disable_vblank:
> > +	 *
> > +	 * Optional, called by &drm_crtc_funcs.disable_vblank. Please read
> > +	 * the documentation for the &drm_crtc_funcs.disable_vblank hook for
> > +	 * more details.
> > +	 */
> > +	void (*disable_vblank)(struct drm_simple_display_pipe *pipe);
> >   };
> >   /**
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 1/4] drm/simple_kms_helper: Add {enable|disable}_vblank callback support
@ 2018-02-22 16:59       ` Daniel Vetter
  0 siblings, 0 replies; 20+ messages in thread
From: Daniel Vetter @ 2018-02-22 16:59 UTC (permalink / raw)
  To: Oleksandr Andrushchenko
  Cc: airlied, daniel.vetter, linux-kernel, dri-devel, Oleksandr Andrushchenko

On Mon, Feb 19, 2018 at 11:11:23AM +0200, Oleksandr Andrushchenko wrote:
> ping
> On 02/12/2018 10:52 AM, Oleksandr Andrushchenko wrote:
> > From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> > 
> > If simple_kms_helper based driver needs to work with vblanks,
> > then it has to provide drm_driver.{enable|disable}_vblank callbacks,
> > because drm_simple_kms_helper.drm_crtc_funcs does not provide any.
> > At the same time drm_driver.{enable|disable}_vblank callbacks
> > are marked as deprecated and shouldn't be used by new drivers.
> > 
> > Fix this by extending drm_simple_kms_helper.drm_crtc_funcs
> > to provide the missing callbacks.
> > 
> > Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

lgtm, all 4 applied, thanks for your patches.
-Daniel

> > ---
> >   drivers/gpu/drm/drm_simple_kms_helper.c | 24 ++++++++++++++++++++++++
> >   include/drm/drm_simple_kms_helper.h     | 18 ++++++++++++++++++
> >   2 files changed, 42 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/drm_simple_kms_helper.c b/drivers/gpu/drm/drm_simple_kms_helper.c
> > index 9d3f6b70812c..9ca8a4a59b74 100644
> > --- a/drivers/gpu/drm/drm_simple_kms_helper.c
> > +++ b/drivers/gpu/drm/drm_simple_kms_helper.c
> > @@ -77,6 +77,28 @@ static const struct drm_crtc_helper_funcs drm_simple_kms_crtc_helper_funcs = {
> >   	.atomic_disable = drm_simple_kms_crtc_disable,
> >   };
> > +static int drm_simple_kms_crtc_enable_vblank(struct drm_crtc *crtc)
> > +{
> > +	struct drm_simple_display_pipe *pipe;
> > +
> > +	pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
> > +	if (!pipe->funcs || !pipe->funcs->enable_vblank)
> > +		return 0;
> > +
> > +	return pipe->funcs->enable_vblank(pipe);
> > +}
> > +
> > +static void drm_simple_kms_crtc_disable_vblank(struct drm_crtc *crtc)
> > +{
> > +	struct drm_simple_display_pipe *pipe;
> > +
> > +	pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
> > +	if (!pipe->funcs || !pipe->funcs->disable_vblank)
> > +		return;
> > +
> > +	pipe->funcs->disable_vblank(pipe);
> > +}
> > +
> >   static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
> >   	.reset = drm_atomic_helper_crtc_reset,
> >   	.destroy = drm_crtc_cleanup,
> > @@ -84,6 +106,8 @@ static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
> >   	.page_flip = drm_atomic_helper_page_flip,
> >   	.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
> >   	.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
> > +	.enable_vblank = drm_simple_kms_crtc_enable_vblank,
> > +	.disable_vblank = drm_simple_kms_crtc_disable_vblank,
> >   };
> >   static int drm_simple_kms_plane_atomic_check(struct drm_plane *plane,
> > diff --git a/include/drm/drm_simple_kms_helper.h b/include/drm/drm_simple_kms_helper.h
> > index 6d9adbb46293..79567826b099 100644
> > --- a/include/drm/drm_simple_kms_helper.h
> > +++ b/include/drm/drm_simple_kms_helper.h
> > @@ -93,6 +93,24 @@ struct drm_simple_display_pipe_funcs {
> >   	 */
> >   	void (*cleanup_fb)(struct drm_simple_display_pipe *pipe,
> >   			   struct drm_plane_state *plane_state);
> > +
> > +	/**
> > +	 * @enable_vblank:
> > +	 *
> > +	 * Optional, called by &drm_crtc_funcs.enable_vblank. Please read
> > +	 * the documentation for the &drm_crtc_funcs.enable_vblank hook for
> > +	 * more details.
> > +	 */
> > +	int (*enable_vblank)(struct drm_simple_display_pipe *pipe);
> > +
> > +	/**
> > +	 * @disable_vblank:
> > +	 *
> > +	 * Optional, called by &drm_crtc_funcs.disable_vblank. Please read
> > +	 * the documentation for the &drm_crtc_funcs.disable_vblank hook for
> > +	 * more details.
> > +	 */
> > +	void (*disable_vblank)(struct drm_simple_display_pipe *pipe);
> >   };
> >   /**
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 1/4] drm/simple_kms_helper: Add {enable|disable}_vblank callback support
  2018-02-22 16:59       ` Daniel Vetter
@ 2018-02-22 17:15         ` Oleksandr Andrushchenko
  -1 siblings, 0 replies; 20+ messages in thread
From: Oleksandr Andrushchenko @ 2018-02-22 17:15 UTC (permalink / raw)
  To: dri-devel, linux-kernel, airlied, daniel.vetter, Oleksandr Andrushchenko

On 02/22/2018 06:59 PM, Daniel Vetter wrote:
> On Mon, Feb 19, 2018 at 11:11:23AM +0200, Oleksandr Andrushchenko wrote:
>> ping
>> On 02/12/2018 10:52 AM, Oleksandr Andrushchenko wrote:
>>> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>>>
>>> If simple_kms_helper based driver needs to work with vblanks,
>>> then it has to provide drm_driver.{enable|disable}_vblank callbacks,
>>> because drm_simple_kms_helper.drm_crtc_funcs does not provide any.
>>> At the same time drm_driver.{enable|disable}_vblank callbacks
>>> are marked as deprecated and shouldn't be used by new drivers.
>>>
>>> Fix this by extending drm_simple_kms_helper.drm_crtc_funcs
>>> to provide the missing callbacks.
>>>
>>> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> lgtm, all 4 applied, thanks for your patches.
Thank you, my pleasure
> -Daniel
>
>>> ---
>>>    drivers/gpu/drm/drm_simple_kms_helper.c | 24 ++++++++++++++++++++++++
>>>    include/drm/drm_simple_kms_helper.h     | 18 ++++++++++++++++++
>>>    2 files changed, 42 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/drm_simple_kms_helper.c b/drivers/gpu/drm/drm_simple_kms_helper.c
>>> index 9d3f6b70812c..9ca8a4a59b74 100644
>>> --- a/drivers/gpu/drm/drm_simple_kms_helper.c
>>> +++ b/drivers/gpu/drm/drm_simple_kms_helper.c
>>> @@ -77,6 +77,28 @@ static const struct drm_crtc_helper_funcs drm_simple_kms_crtc_helper_funcs = {
>>>    	.atomic_disable = drm_simple_kms_crtc_disable,
>>>    };
>>> +static int drm_simple_kms_crtc_enable_vblank(struct drm_crtc *crtc)
>>> +{
>>> +	struct drm_simple_display_pipe *pipe;
>>> +
>>> +	pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
>>> +	if (!pipe->funcs || !pipe->funcs->enable_vblank)
>>> +		return 0;
>>> +
>>> +	return pipe->funcs->enable_vblank(pipe);
>>> +}
>>> +
>>> +static void drm_simple_kms_crtc_disable_vblank(struct drm_crtc *crtc)
>>> +{
>>> +	struct drm_simple_display_pipe *pipe;
>>> +
>>> +	pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
>>> +	if (!pipe->funcs || !pipe->funcs->disable_vblank)
>>> +		return;
>>> +
>>> +	pipe->funcs->disable_vblank(pipe);
>>> +}
>>> +
>>>    static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
>>>    	.reset = drm_atomic_helper_crtc_reset,
>>>    	.destroy = drm_crtc_cleanup,
>>> @@ -84,6 +106,8 @@ static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
>>>    	.page_flip = drm_atomic_helper_page_flip,
>>>    	.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
>>>    	.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
>>> +	.enable_vblank = drm_simple_kms_crtc_enable_vblank,
>>> +	.disable_vblank = drm_simple_kms_crtc_disable_vblank,
>>>    };
>>>    static int drm_simple_kms_plane_atomic_check(struct drm_plane *plane,
>>> diff --git a/include/drm/drm_simple_kms_helper.h b/include/drm/drm_simple_kms_helper.h
>>> index 6d9adbb46293..79567826b099 100644
>>> --- a/include/drm/drm_simple_kms_helper.h
>>> +++ b/include/drm/drm_simple_kms_helper.h
>>> @@ -93,6 +93,24 @@ struct drm_simple_display_pipe_funcs {
>>>    	 */
>>>    	void (*cleanup_fb)(struct drm_simple_display_pipe *pipe,
>>>    			   struct drm_plane_state *plane_state);
>>> +
>>> +	/**
>>> +	 * @enable_vblank:
>>> +	 *
>>> +	 * Optional, called by &drm_crtc_funcs.enable_vblank. Please read
>>> +	 * the documentation for the &drm_crtc_funcs.enable_vblank hook for
>>> +	 * more details.
>>> +	 */
>>> +	int (*enable_vblank)(struct drm_simple_display_pipe *pipe);
>>> +
>>> +	/**
>>> +	 * @disable_vblank:
>>> +	 *
>>> +	 * Optional, called by &drm_crtc_funcs.disable_vblank. Please read
>>> +	 * the documentation for the &drm_crtc_funcs.disable_vblank hook for
>>> +	 * more details.
>>> +	 */
>>> +	void (*disable_vblank)(struct drm_simple_display_pipe *pipe);
>>>    };
>>>    /**
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH 1/4] drm/simple_kms_helper: Add {enable|disable}_vblank callback support
@ 2018-02-22 17:15         ` Oleksandr Andrushchenko
  0 siblings, 0 replies; 20+ messages in thread
From: Oleksandr Andrushchenko @ 2018-02-22 17:15 UTC (permalink / raw)
  To: dri-devel, linux-kernel, airlied, daniel.vetter, Oleksandr Andrushchenko

On 02/22/2018 06:59 PM, Daniel Vetter wrote:
> On Mon, Feb 19, 2018 at 11:11:23AM +0200, Oleksandr Andrushchenko wrote:
>> ping
>> On 02/12/2018 10:52 AM, Oleksandr Andrushchenko wrote:
>>> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>>>
>>> If simple_kms_helper based driver needs to work with vblanks,
>>> then it has to provide drm_driver.{enable|disable}_vblank callbacks,
>>> because drm_simple_kms_helper.drm_crtc_funcs does not provide any.
>>> At the same time drm_driver.{enable|disable}_vblank callbacks
>>> are marked as deprecated and shouldn't be used by new drivers.
>>>
>>> Fix this by extending drm_simple_kms_helper.drm_crtc_funcs
>>> to provide the missing callbacks.
>>>
>>> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> lgtm, all 4 applied, thanks for your patches.
Thank you, my pleasure
> -Daniel
>
>>> ---
>>>    drivers/gpu/drm/drm_simple_kms_helper.c | 24 ++++++++++++++++++++++++
>>>    include/drm/drm_simple_kms_helper.h     | 18 ++++++++++++++++++
>>>    2 files changed, 42 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/drm_simple_kms_helper.c b/drivers/gpu/drm/drm_simple_kms_helper.c
>>> index 9d3f6b70812c..9ca8a4a59b74 100644
>>> --- a/drivers/gpu/drm/drm_simple_kms_helper.c
>>> +++ b/drivers/gpu/drm/drm_simple_kms_helper.c
>>> @@ -77,6 +77,28 @@ static const struct drm_crtc_helper_funcs drm_simple_kms_crtc_helper_funcs = {
>>>    	.atomic_disable = drm_simple_kms_crtc_disable,
>>>    };
>>> +static int drm_simple_kms_crtc_enable_vblank(struct drm_crtc *crtc)
>>> +{
>>> +	struct drm_simple_display_pipe *pipe;
>>> +
>>> +	pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
>>> +	if (!pipe->funcs || !pipe->funcs->enable_vblank)
>>> +		return 0;
>>> +
>>> +	return pipe->funcs->enable_vblank(pipe);
>>> +}
>>> +
>>> +static void drm_simple_kms_crtc_disable_vblank(struct drm_crtc *crtc)
>>> +{
>>> +	struct drm_simple_display_pipe *pipe;
>>> +
>>> +	pipe = container_of(crtc, struct drm_simple_display_pipe, crtc);
>>> +	if (!pipe->funcs || !pipe->funcs->disable_vblank)
>>> +		return;
>>> +
>>> +	pipe->funcs->disable_vblank(pipe);
>>> +}
>>> +
>>>    static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
>>>    	.reset = drm_atomic_helper_crtc_reset,
>>>    	.destroy = drm_crtc_cleanup,
>>> @@ -84,6 +106,8 @@ static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
>>>    	.page_flip = drm_atomic_helper_page_flip,
>>>    	.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
>>>    	.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
>>> +	.enable_vblank = drm_simple_kms_crtc_enable_vblank,
>>> +	.disable_vblank = drm_simple_kms_crtc_disable_vblank,
>>>    };
>>>    static int drm_simple_kms_plane_atomic_check(struct drm_plane *plane,
>>> diff --git a/include/drm/drm_simple_kms_helper.h b/include/drm/drm_simple_kms_helper.h
>>> index 6d9adbb46293..79567826b099 100644
>>> --- a/include/drm/drm_simple_kms_helper.h
>>> +++ b/include/drm/drm_simple_kms_helper.h
>>> @@ -93,6 +93,24 @@ struct drm_simple_display_pipe_funcs {
>>>    	 */
>>>    	void (*cleanup_fb)(struct drm_simple_display_pipe *pipe,
>>>    			   struct drm_plane_state *plane_state);
>>> +
>>> +	/**
>>> +	 * @enable_vblank:
>>> +	 *
>>> +	 * Optional, called by &drm_crtc_funcs.enable_vblank. Please read
>>> +	 * the documentation for the &drm_crtc_funcs.enable_vblank hook for
>>> +	 * more details.
>>> +	 */
>>> +	int (*enable_vblank)(struct drm_simple_display_pipe *pipe);
>>> +
>>> +	/**
>>> +	 * @disable_vblank:
>>> +	 *
>>> +	 * Optional, called by &drm_crtc_funcs.disable_vblank. Please read
>>> +	 * the documentation for the &drm_crtc_funcs.disable_vblank hook for
>>> +	 * more details.
>>> +	 */
>>> +	void (*disable_vblank)(struct drm_simple_display_pipe *pipe);
>>>    };
>>>    /**
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2018-02-22 17:15 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-12  8:52 [PATCH 0/4] drm/simple_kms_helper: Add {enable|disable}_vblank callback support Oleksandr Andrushchenko
2018-02-12  8:52 ` Oleksandr Andrushchenko
2018-02-12  8:52 ` [PATCH 1/4] " Oleksandr Andrushchenko
2018-02-12  8:52   ` Oleksandr Andrushchenko
2018-02-19  9:11   ` Oleksandr Andrushchenko
2018-02-19  9:11     ` Oleksandr Andrushchenko
2018-02-22 16:59     ` Daniel Vetter
2018-02-22 16:59       ` Daniel Vetter
2018-02-22 17:15       ` Oleksandr Andrushchenko
2018-02-22 17:15         ` Oleksandr Andrushchenko
2018-02-12  8:52 ` [PATCH 2/4] drm/mxsfb: Do not use deprecated drm_driver.{enable|disable)_vblank Oleksandr Andrushchenko
2018-02-12  8:52   ` Oleksandr Andrushchenko
2018-02-12  9:26   ` Marek Vasut
2018-02-12  8:52 ` [PATCH 3/4] drm/tve200: " Oleksandr Andrushchenko
2018-02-12  8:52   ` Oleksandr Andrushchenko
2018-02-13 13:51   ` Linus Walleij
2018-02-13 13:54     ` Oleksandr Andrushchenko
2018-02-12  8:52 ` [PATCH 4/4] drm/pl111: " Oleksandr Andrushchenko
2018-02-21 22:44   ` Eric Anholt
2018-02-21 22:44     ` Eric Anholt

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.