+++ /dev/null
-From bfc9ac42f8c6d5c3dee78c8daf97ed426e628449 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 28 Oct 2020 13:32:22 +0100
-Subject: drm/atomic: Pass the full state to CRTC atomic begin and flush
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Maxime Ripard <maxime@cerno.tech>
-
-[ Upstream commit f6ebe9f9c9233a6114eb922aba9a0c9ccc2d2e14 ]
-
-The current atomic helpers have either their object state being passed as
-an argument or the full atomic state.
-
-The former is the pattern that was done at first, before switching to the
-latter for new hooks or when it was needed.
-
-Let's start convert all the remaining helpers to provide a consistent
-interface, starting with the CRTC's atomic_begin and atomic_flush.
-
-The conversion was done using the coccinelle script below, built tested on
-all the drivers and actually tested on vc4.
-
-virtual report
-
-@@
-struct drm_crtc_helper_funcs *FUNCS;
-identifier old_crtc_state, old_state;
-identifier crtc;
-identifier f;
-@@
-
- f(struct drm_crtc_state *old_crtc_state)
- {
- ...
- struct drm_atomic_state *old_state = old_crtc_state->state;
- <...
-- FUNCS->atomic_begin(crtc, old_crtc_state);
-+ FUNCS->atomic_begin(crtc, old_state);
- ...>
- }
-
-@@
-struct drm_crtc_helper_funcs *FUNCS;
-identifier old_crtc_state, old_state;
-identifier crtc;
-identifier f;
-@@
-
- f(struct drm_crtc_state *old_crtc_state)
- {
- ...
- struct drm_atomic_state *old_state = old_crtc_state->state;
- <...
-- FUNCS->atomic_flush(crtc, old_crtc_state);
-+ FUNCS->atomic_flush(crtc, old_state);
- ...>
- }
-
-@@
-struct drm_crtc_helper_funcs *FUNCS;
-struct drm_crtc *crtc;
-struct drm_crtc_state *crtc_state;
-identifier dev, state;
-identifier f;
-@@
-
- f(struct drm_device *dev, struct drm_atomic_state *state, ...)
- {
- <...
-- FUNCS->atomic_begin(crtc, crtc_state);
-+ FUNCS->atomic_begin(crtc, state);
- ...>
- }
-
-@@
-struct drm_crtc_helper_funcs *FUNCS;
-struct drm_crtc *crtc;
-struct drm_crtc_state *crtc_state;
-identifier dev, state;
-identifier f;
-@@
-
- f(struct drm_device *dev, struct drm_atomic_state *state, ...)
- {
- <...
-- FUNCS->atomic_flush(crtc, crtc_state);
-+ FUNCS->atomic_flush(crtc, state);
- ...>
- }
-
-@@
-identifier crtc, old_state;
-@@
-
- struct drm_crtc_helper_funcs {
- ...
-- void (*atomic_begin)(struct drm_crtc *crtc, struct drm_crtc_state *old_state);
-+ void (*atomic_begin)(struct drm_crtc *crtc, struct drm_atomic_state *state);
- ...
-- void (*atomic_flush)(struct drm_crtc *crtc, struct drm_crtc_state *old_state);
-+ void (*atomic_flush)(struct drm_crtc *crtc, struct drm_atomic_state *state);
- ...
-}
-
-@ crtc_atomic_func @
-identifier helpers;
-identifier func;
-@@
-
-(
-static struct drm_crtc_helper_funcs helpers = {
- ...,
- .atomic_begin = func,
- ...,
-};
-|
-static struct drm_crtc_helper_funcs helpers = {
- ...,
- .atomic_flush = func,
- ...,
-};
-)
-
-@ ignores_old_state @
-identifier crtc_atomic_func.func;
-identifier crtc, old_state;
-@@
-
-void func(struct drm_crtc *crtc,
- struct drm_crtc_state *old_state)
-{
- ... when != old_state
-}
-
-@ adds_old_state depends on crtc_atomic_func && !ignores_old_state @
-identifier crtc_atomic_func.func;
-identifier crtc, old_state;
-@@
-
-void func(struct drm_crtc *crtc, struct drm_crtc_state *old_state)
-{
-+ struct drm_crtc_state *old_state = drm_atomic_get_old_crtc_state(state, crtc);
- ...
-}
-
-@ depends on crtc_atomic_func @
-identifier crtc_atomic_func.func;
-expression E;
-type T;
-@@
-
-void func(...)
-{
- ...
-- T state = E;
-+ T crtc_state = E;
- <+...
-- state
-+ crtc_state
- ...+>
-
-}
-
-@ depends on crtc_atomic_func @
-identifier crtc_atomic_func.func;
-type T;
-@@
-
-void func(...)
-{
- ...
-- T state;
-+ T crtc_state;
- <+...
-- state
-+ crtc_state
- ...+>
-
-}
-
-@@
-identifier old_state;
-identifier crtc;
-@@
-
- void vc4_hvs_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state
-+ struct drm_atomic_state *state
- )
-{
-+ struct drm_crtc_state *old_state = drm_atomic_get_old_crtc_state(state, crtc);
- ...
-}
-
-@@
-identifier old_state;
-identifier crtc;
-@@
-
- void vc4_hvs_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state
-+ struct drm_atomic_state *state
- );
-
-@@
-identifier old_state;
-identifier crtc;
-@@
-
- void vmw_du_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state
-+ struct drm_atomic_state *state
- )
-{
- ...
-}
-
-@@
-identifier old_state;
-identifier crtc;
-@@
-
- void vmw_du_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state
-+ struct drm_atomic_state *state
- );
-
-@@
-identifier old_state;
-identifier crtc;
-@@
-
- void vmw_du_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state
-+ struct drm_atomic_state *state
- )
-{
- ...
-}
-
-@@
-identifier old_state;
-identifier crtc;
-@@
-
- void vmw_du_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state
-+ struct drm_atomic_state *state
- );
-
-@ depends on crtc_atomic_func @
-identifier crtc_atomic_func.func;
-identifier old_state;
-identifier crtc;
-@@
-
-void func(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state
-+ struct drm_atomic_state *state
- )
- { ... }
-
-@ include depends on adds_old_state @
-@@
-
- #include <drm/drm_atomic.h>
-
-@ no_include depends on !include && adds_old_state @
-@@
-
-+ #include <drm/drm_atomic.h>
- #include <drm/...>
-
-Signed-off-by: Maxime Ripard <maxime@cerno.tech>
-Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
-Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
-Link: https://patchwork.freedesktop.org/patch/msgid/20201028123222.1732139-2-maxime@cerno.tech
-Stable-dep-of: fe4c5f662097 ("drm/mediatek: Add spinlock for setting vblank event in atomic_begin")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- .../gpu/drm/arm/display/komeda/komeda_crtc.c | 4 +++-
- drivers/gpu/drm/arm/hdlcd_crtc.c | 2 +-
- drivers/gpu/drm/armada/armada_crtc.c | 4 ++--
- drivers/gpu/drm/ast/ast_mode.c | 5 ++++-
- drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c | 4 ++--
- drivers/gpu/drm/drm_atomic_helper.c | 8 ++++----
- drivers/gpu/drm/exynos/exynos_drm_crtc.c | 4 ++--
- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c | 2 +-
- drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c | 4 ++--
- drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 4 ++--
- drivers/gpu/drm/imx/dcss/dcss-crtc.c | 4 ++--
- drivers/gpu/drm/imx/ipuv3-crtc.c | 4 ++--
- drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 17 +++++++++--------
- drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 16 ++++++++--------
- drivers/gpu/drm/meson/meson_crtc.c | 4 ++--
- drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 4 ++--
- drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c | 4 ++--
- drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c | 4 ++--
- drivers/gpu/drm/mxsfb/mxsfb_kms.c | 2 +-
- drivers/gpu/drm/omapdrm/omap_crtc.c | 4 ++--
- drivers/gpu/drm/qxl/qxl_display.c | 2 +-
- drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 4 ++--
- drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 8 ++++++--
- drivers/gpu/drm/sti/sti_crtc.c | 2 +-
- drivers/gpu/drm/stm/ltdc.c | 2 +-
- drivers/gpu/drm/sun4i/sun4i_crtc.c | 6 ++++--
- drivers/gpu/drm/tegra/dc.c | 10 +++++-----
- drivers/gpu/drm/tidss/tidss_crtc.c | 4 +++-
- drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 2 +-
- drivers/gpu/drm/vboxvideo/vbox_mode.c | 2 +-
- drivers/gpu/drm/vc4/vc4_drv.h | 3 ++-
- drivers/gpu/drm/vc4/vc4_hvs.c | 4 +++-
- drivers/gpu/drm/virtio/virtgpu_display.c | 2 +-
- drivers/gpu/drm/vkms/vkms_crtc.c | 4 ++--
- drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 4 ++--
- drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | 4 ++--
- drivers/gpu/drm/xlnx/zynqmp_disp.c | 4 ++--
- drivers/gpu/drm/zte/zx_vou.c | 2 +-
- include/drm/drm_modeset_helper_vtables.h | 4 ++--
- 39 files changed, 97 insertions(+), 80 deletions(-)
-
-diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c
-index f33418d6e1a08..3c77eeb0a7a0c 100644
---- a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c
-+++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c
-@@ -379,8 +379,10 @@ komeda_crtc_atomic_disable(struct drm_crtc *crtc,
-
- static void
- komeda_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old)
-+ struct drm_atomic_state *state)
- {
-+ struct drm_crtc_state *old = drm_atomic_get_old_crtc_state(state,
-+ crtc);
- /* commit with modeset will be handled in enable/disable */
- if (drm_atomic_crtc_needs_modeset(crtc->state))
- return;
-diff --git a/drivers/gpu/drm/arm/hdlcd_crtc.c b/drivers/gpu/drm/arm/hdlcd_crtc.c
-index af67fefed38dc..bd17646f4e133 100644
---- a/drivers/gpu/drm/arm/hdlcd_crtc.c
-+++ b/drivers/gpu/drm/arm/hdlcd_crtc.c
-@@ -205,7 +205,7 @@ static enum drm_mode_status hdlcd_crtc_mode_valid(struct drm_crtc *crtc,
- }
-
- static void hdlcd_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *state)
-+ struct drm_atomic_state *state)
- {
- struct drm_pending_vblank_event *event = crtc->state->event;
-
-diff --git a/drivers/gpu/drm/armada/armada_crtc.c b/drivers/gpu/drm/armada/armada_crtc.c
-index a887b6a5f8bd7..13c7c474fb26e 100644
---- a/drivers/gpu/drm/armada/armada_crtc.c
-+++ b/drivers/gpu/drm/armada/armada_crtc.c
-@@ -427,7 +427,7 @@ static int armada_drm_crtc_atomic_check(struct drm_crtc *crtc,
- }
-
- static void armada_drm_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct armada_crtc *dcrtc = drm_to_armada_crtc(crtc);
-
-@@ -441,7 +441,7 @@ static void armada_drm_crtc_atomic_begin(struct drm_crtc *crtc,
- }
-
- static void armada_drm_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct armada_crtc *dcrtc = drm_to_armada_crtc(crtc);
-
-diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
-index d27f2840b9555..84c2e90d415f4 100644
---- a/drivers/gpu/drm/ast/ast_mode.c
-+++ b/drivers/gpu/drm/ast/ast_mode.c
-@@ -777,8 +777,11 @@ static int ast_crtc_helper_atomic_check(struct drm_crtc *crtc,
- }
-
- static void
--ast_crtc_helper_atomic_flush(struct drm_crtc *crtc, struct drm_crtc_state *old_crtc_state)
-+ast_crtc_helper_atomic_flush(struct drm_crtc *crtc,
-+ struct drm_atomic_state *state)
- {
-+ struct drm_crtc_state *old_crtc_state = drm_atomic_get_old_crtc_state(state,
-+ crtc);
- struct ast_private *ast = to_ast_private(crtc->dev);
- struct ast_crtc_state *ast_crtc_state = to_ast_crtc_state(crtc->state);
- struct ast_crtc_state *old_ast_crtc_state = to_ast_crtc_state(old_crtc_state);
-diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c
-index ce246b96330b7..e7064abfa66ef 100644
---- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c
-+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c
-@@ -341,7 +341,7 @@ static int atmel_hlcdc_crtc_atomic_check(struct drm_crtc *c,
- }
-
- static void atmel_hlcdc_crtc_atomic_begin(struct drm_crtc *c,
-- struct drm_crtc_state *old_s)
-+ struct drm_atomic_state *state)
- {
- struct atmel_hlcdc_crtc *crtc = drm_crtc_to_atmel_hlcdc_crtc(c);
-
-@@ -356,7 +356,7 @@ static void atmel_hlcdc_crtc_atomic_begin(struct drm_crtc *c,
- }
-
- static void atmel_hlcdc_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_s)
-+ struct drm_atomic_state *state)
- {
- /* TODO: write common plane control register if available */
- }
-diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
-index 0fde260b7edd8..121947e570e97 100644
---- a/drivers/gpu/drm/drm_atomic_helper.c
-+++ b/drivers/gpu/drm/drm_atomic_helper.c
-@@ -2526,7 +2526,7 @@ void drm_atomic_helper_commit_planes(struct drm_device *dev,
- if (active_only && !new_crtc_state->active)
- continue;
-
-- funcs->atomic_begin(crtc, old_crtc_state);
-+ funcs->atomic_begin(crtc, old_state);
- }
-
- for_each_oldnew_plane_in_state(old_state, plane, old_plane_state, new_plane_state, i) {
-@@ -2584,7 +2584,7 @@ void drm_atomic_helper_commit_planes(struct drm_device *dev,
- if (active_only && !new_crtc_state->active)
- continue;
-
-- funcs->atomic_flush(crtc, old_crtc_state);
-+ funcs->atomic_flush(crtc, old_state);
- }
- }
- EXPORT_SYMBOL(drm_atomic_helper_commit_planes);
-@@ -2622,7 +2622,7 @@ drm_atomic_helper_commit_planes_on_crtc(struct drm_crtc_state *old_crtc_state)
-
- crtc_funcs = crtc->helper_private;
- if (crtc_funcs && crtc_funcs->atomic_begin)
-- crtc_funcs->atomic_begin(crtc, old_crtc_state);
-+ crtc_funcs->atomic_begin(crtc, old_state);
-
- drm_for_each_plane_mask(plane, crtc->dev, plane_mask) {
- struct drm_plane_state *old_plane_state =
-@@ -2648,7 +2648,7 @@ drm_atomic_helper_commit_planes_on_crtc(struct drm_crtc_state *old_crtc_state)
- }
-
- if (crtc_funcs && crtc_funcs->atomic_flush)
-- crtc_funcs->atomic_flush(crtc, old_crtc_state);
-+ crtc_funcs->atomic_flush(crtc, old_state);
- }
- EXPORT_SYMBOL(drm_atomic_helper_commit_planes_on_crtc);
-
-diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
-index de9fadccf22e5..3043f49c70f0c 100644
---- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c
-+++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
-@@ -62,7 +62,7 @@ static int exynos_crtc_atomic_check(struct drm_crtc *crtc,
- }
-
- static void exynos_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc);
-
-@@ -71,7 +71,7 @@ static void exynos_crtc_atomic_begin(struct drm_crtc *crtc,
- }
-
- static void exynos_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc);
-
-diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c
-index b9ca81a6f80fb..9cd0c5c35af96 100644
---- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c
-+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c
-@@ -21,7 +21,7 @@
- #include "fsl_dcu_drm_plane.h"
-
- static void fsl_dcu_drm_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct drm_device *dev = crtc->dev;
- struct fsl_dcu_drm_device *fsl_dev = dev->dev_private;
-diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c
-index 4d57ec688f827..222a895a3608e 100644
---- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c
-+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c
-@@ -393,7 +393,7 @@ static void hibmc_crtc_mode_set_nofb(struct drm_crtc *crtc)
- }
-
- static void hibmc_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state)
-+ struct drm_atomic_state *state)
- {
- unsigned int reg;
- struct drm_device *dev = crtc->dev;
-@@ -413,7 +413,7 @@ static void hibmc_crtc_atomic_begin(struct drm_crtc *crtc,
- }
-
- static void hibmc_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state)
-+ struct drm_atomic_state *state)
-
- {
- unsigned long flags;
-diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
-index e1108c1735ad0..32d3cc89dbe93 100644
---- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
-+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
-@@ -485,7 +485,7 @@ static void ade_crtc_mode_set_nofb(struct drm_crtc *crtc)
- }
-
- static void ade_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state)
-+ struct drm_atomic_state *state)
- {
- struct kirin_crtc *kcrtc = to_kirin_crtc(crtc);
- struct ade_hw_ctx *ctx = kcrtc->hw_ctx;
-@@ -498,7 +498,7 @@ static void ade_crtc_atomic_begin(struct drm_crtc *crtc,
- }
-
- static void ade_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state)
-+ struct drm_atomic_state *state)
-
- {
- struct kirin_crtc *kcrtc = to_kirin_crtc(crtc);
-diff --git a/drivers/gpu/drm/imx/dcss/dcss-crtc.c b/drivers/gpu/drm/imx/dcss/dcss-crtc.c
-index 36abff0890b28..98fb71ca06695 100644
---- a/drivers/gpu/drm/imx/dcss/dcss-crtc.c
-+++ b/drivers/gpu/drm/imx/dcss/dcss-crtc.c
-@@ -52,13 +52,13 @@ static const struct drm_crtc_funcs dcss_crtc_funcs = {
- };
-
- static void dcss_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- drm_crtc_vblank_on(crtc);
- }
-
- static void dcss_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct dcss_crtc *dcss_crtc = container_of(crtc, struct dcss_crtc,
- base);
-diff --git a/drivers/gpu/drm/imx/ipuv3-crtc.c b/drivers/gpu/drm/imx/ipuv3-crtc.c
-index fd9d8e51837fa..cf1e39f83401f 100644
---- a/drivers/gpu/drm/imx/ipuv3-crtc.c
-+++ b/drivers/gpu/drm/imx/ipuv3-crtc.c
-@@ -236,13 +236,13 @@ static int ipu_crtc_atomic_check(struct drm_crtc *crtc,
- }
-
- static void ipu_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- drm_crtc_vblank_on(crtc);
- }
-
- static void ipu_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- spin_lock_irq(&crtc->dev->event_lock);
- if (crtc->state->event) {
-diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
-index 5ec9770e401e4..6d56b701118da 100644
---- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
-+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
-@@ -287,7 +287,7 @@ ingenic_drm_crtc_mode_valid(struct drm_crtc *crtc, const struct drm_display_mode
- }
-
- static void ingenic_drm_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *oldstate)
-+ struct drm_atomic_state *state)
- {
- struct ingenic_drm *priv = drm_crtc_get_priv(crtc);
- u32 ctrl = 0;
-@@ -307,26 +307,27 @@ static void ingenic_drm_crtc_atomic_begin(struct drm_crtc *crtc,
- }
-
- static void ingenic_drm_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *oldstate)
-+ struct drm_atomic_state *state)
- {
- struct ingenic_drm *priv = drm_crtc_get_priv(crtc);
-- struct drm_crtc_state *state = crtc->state;
-- struct drm_pending_vblank_event *event = state->event;
-+ struct drm_crtc_state *crtc_state = crtc->state;
-+ struct drm_pending_vblank_event *event = crtc_state->event;
-
-- if (drm_atomic_crtc_needs_modeset(state)) {
-- ingenic_drm_crtc_update_timings(priv, &state->mode);
-+ if (drm_atomic_crtc_needs_modeset(crtc_state)) {
-+ ingenic_drm_crtc_update_timings(priv, &crtc_state->mode);
- priv->update_clk_rate = true;
- }
-
- if (priv->update_clk_rate) {
- mutex_lock(&priv->clk_mutex);
-- clk_set_rate(priv->pix_clk, state->adjusted_mode.clock * 1000);
-+ clk_set_rate(priv->pix_clk,
-+ crtc_state->adjusted_mode.clock * 1000);
- priv->update_clk_rate = false;
- mutex_unlock(&priv->clk_mutex);
- }
-
- if (event) {
-- state->event = NULL;
-+ crtc_state->event = NULL;
-
- spin_lock_irq(&crtc->dev->event_lock);
- if (drm_crtc_vblank_get(crtc) == 0)
-diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
-index cc3cb5b63d444..067b4dc39f4f0 100644
---- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
-+++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
-@@ -578,24 +578,24 @@ static void mtk_drm_crtc_atomic_disable(struct drm_crtc *crtc,
- }
-
- static void mtk_drm_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
-- struct mtk_crtc_state *state = to_mtk_crtc_state(crtc->state);
-+ struct mtk_crtc_state *crtc_state = to_mtk_crtc_state(crtc->state);
- struct mtk_drm_crtc *mtk_crtc = to_mtk_crtc(crtc);
-
-- if (mtk_crtc->event && state->base.event)
-+ if (mtk_crtc->event && crtc_state->base.event)
- DRM_ERROR("new event while there is still a pending event\n");
-
-- if (state->base.event) {
-- state->base.event->pipe = drm_crtc_index(crtc);
-+ if (crtc_state->base.event) {
-+ crtc_state->base.event->pipe = drm_crtc_index(crtc);
- WARN_ON(drm_crtc_vblank_get(crtc) != 0);
-- mtk_crtc->event = state->base.event;
-- state->base.event = NULL;
-+ mtk_crtc->event = crtc_state->base.event;
-+ crtc_state->base.event = NULL;
- }
- }
-
- static void mtk_drm_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct mtk_drm_crtc *mtk_crtc = to_mtk_crtc(crtc);
- int i;
-diff --git a/drivers/gpu/drm/meson/meson_crtc.c b/drivers/gpu/drm/meson/meson_crtc.c
-index 2854272dc2d9b..c7f7bb160bba4 100644
---- a/drivers/gpu/drm/meson/meson_crtc.c
-+++ b/drivers/gpu/drm/meson/meson_crtc.c
-@@ -201,7 +201,7 @@ static void meson_crtc_atomic_disable(struct drm_crtc *crtc,
- }
-
- static void meson_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *state)
-+ struct drm_atomic_state *state)
- {
- struct meson_crtc *meson_crtc = to_meson_crtc(crtc);
- unsigned long flags;
-@@ -217,7 +217,7 @@ static void meson_crtc_atomic_begin(struct drm_crtc *crtc,
- }
-
- static void meson_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct meson_crtc *meson_crtc = to_meson_crtc(crtc);
- struct meson_drm *priv = meson_crtc->priv;
-diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
-index 4c64e2d4f6500..108911a43f92b 100644
---- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
-+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
-@@ -485,7 +485,7 @@ static void _dpu_crtc_setup_cp_blocks(struct drm_crtc *crtc)
- }
-
- static void dpu_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state)
-+ struct drm_atomic_state *state)
- {
- struct dpu_crtc_state *cstate = to_dpu_crtc_state(crtc->state);
- struct drm_encoder *encoder;
-@@ -526,7 +526,7 @@ static void dpu_crtc_atomic_begin(struct drm_crtc *crtc,
- }
-
- static void dpu_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct dpu_crtc *dpu_crtc;
- struct drm_device *dev;
-diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c
-index a0253297bc769..69ac1eee1a227 100644
---- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c
-+++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c
-@@ -316,14 +316,14 @@ static int mdp4_crtc_atomic_check(struct drm_crtc *crtc,
- }
-
- static void mdp4_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
- DBG("%s: begin", mdp4_crtc->name);
- }
-
- static void mdp4_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc);
- struct drm_device *dev = crtc->dev;
-diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c
-index 60e7371cd0e0d..077369989a04b 100644
---- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c
-+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c
-@@ -775,13 +775,13 @@ static int mdp5_crtc_atomic_check(struct drm_crtc *crtc,
- }
-
- static void mdp5_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- DBG("%s: begin", crtc->name);
- }
-
- static void mdp5_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc);
- struct mdp5_crtc_state *mdp5_cstate = to_mdp5_crtc_state(crtc->state);
-diff --git a/drivers/gpu/drm/mxsfb/mxsfb_kms.c b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
-index b535621f4f78d..d0e9d0ae9951f 100644
---- a/drivers/gpu/drm/mxsfb/mxsfb_kms.c
-+++ b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
-@@ -324,7 +324,7 @@ static int mxsfb_crtc_atomic_check(struct drm_crtc *crtc,
- }
-
- static void mxsfb_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state)
-+ struct drm_atomic_state *state)
- {
- struct drm_pending_vblank_event *event;
-
-diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c
-index 328a4a74f534e..3bc060682dcdc 100644
---- a/drivers/gpu/drm/omapdrm/omap_crtc.c
-+++ b/drivers/gpu/drm/omapdrm/omap_crtc.c
-@@ -598,12 +598,12 @@ static int omap_crtc_atomic_check(struct drm_crtc *crtc,
- }
-
- static void omap_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- }
-
- static void omap_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct omap_drm_private *priv = crtc->dev->dev_private;
- struct omap_crtc *omap_crtc = to_omap_crtc(crtc);
-diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
-index f22a1b776f4ba..26294016f1e39 100644
---- a/drivers/gpu/drm/qxl/qxl_display.c
-+++ b/drivers/gpu/drm/qxl/qxl_display.c
-@@ -373,7 +373,7 @@ static void qxl_crtc_update_monitors_config(struct drm_crtc *crtc,
- }
-
- static void qxl_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- qxl_crtc_update_monitors_config(crtc, "flush");
- }
-diff --git a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
-index 065604c5837de..7007a8120394e 100644
---- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
-+++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
-@@ -780,7 +780,7 @@ static void rcar_du_crtc_atomic_disable(struct drm_crtc *crtc,
- }
-
- static void rcar_du_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc);
-
-@@ -809,7 +809,7 @@ static void rcar_du_crtc_atomic_begin(struct drm_crtc *crtc,
- }
-
- static void rcar_du_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc);
- struct drm_device *dev = rcrtc->crtc.dev;
-diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
-index 682d78fab9a59..b7eeb3183aa94 100644
---- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
-+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
-@@ -1255,8 +1255,10 @@ static void vop_crtc_gamma_set(struct vop *vop, struct drm_crtc *crtc,
- }
-
- static void vop_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
-+ struct drm_crtc_state *old_crtc_state = drm_atomic_get_old_crtc_state(state,
-+ crtc);
- struct vop *vop = to_vop(crtc);
-
- /*
-@@ -1467,8 +1469,10 @@ static int vop_crtc_atomic_check(struct drm_crtc *crtc,
- }
-
- static void vop_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
-+ struct drm_crtc_state *old_crtc_state = drm_atomic_get_old_crtc_state(state,
-+ crtc);
- struct drm_atomic_state *old_state = old_crtc_state->state;
- struct drm_plane_state *old_plane_state, *new_plane_state;
- struct vop *vop = to_vop(crtc);
-diff --git a/drivers/gpu/drm/sti/sti_crtc.c b/drivers/gpu/drm/sti/sti_crtc.c
-index 6f37c104c46f9..4f1e22933f48b 100644
---- a/drivers/gpu/drm/sti/sti_crtc.c
-+++ b/drivers/gpu/drm/sti/sti_crtc.c
-@@ -133,7 +133,7 @@ sti_crtc_mode_set_nofb(struct drm_crtc *crtc)
- }
-
- static void sti_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct drm_device *drm_dev = crtc->dev;
- struct sti_mixer *mixer = to_sti_mixer(crtc);
-diff --git a/drivers/gpu/drm/stm/ltdc.c b/drivers/gpu/drm/stm/ltdc.c
-index 089c00a8e7d49..ae73b93a14612 100644
---- a/drivers/gpu/drm/stm/ltdc.c
-+++ b/drivers/gpu/drm/stm/ltdc.c
-@@ -629,7 +629,7 @@ static void ltdc_crtc_mode_set_nofb(struct drm_crtc *crtc)
- }
-
- static void ltdc_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct ltdc_device *ldev = crtc_to_ltdc(crtc);
- struct drm_device *ddev = crtc->dev;
-diff --git a/drivers/gpu/drm/sun4i/sun4i_crtc.c b/drivers/gpu/drm/sun4i/sun4i_crtc.c
-index 3a153648b3698..cab86ec070843 100644
---- a/drivers/gpu/drm/sun4i/sun4i_crtc.c
-+++ b/drivers/gpu/drm/sun4i/sun4i_crtc.c
-@@ -58,8 +58,10 @@ static int sun4i_crtc_atomic_check(struct drm_crtc *crtc,
- }
-
- static void sun4i_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state)
-+ struct drm_atomic_state *state)
- {
-+ struct drm_crtc_state *old_state = drm_atomic_get_old_crtc_state(state,
-+ crtc);
- struct sun4i_crtc *scrtc = drm_crtc_to_sun4i_crtc(crtc);
- struct drm_device *dev = crtc->dev;
- struct sunxi_engine *engine = scrtc->engine;
-@@ -79,7 +81,7 @@ static void sun4i_crtc_atomic_begin(struct drm_crtc *crtc,
- }
-
- static void sun4i_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state)
-+ struct drm_atomic_state *state)
- {
- struct sun4i_crtc *scrtc = drm_crtc_to_sun4i_crtc(crtc);
- struct drm_pending_vblank_event *event = crtc->state->event;
-diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c
-index 958d12da902d3..f1e8951fa86c4 100644
---- a/drivers/gpu/drm/tegra/dc.c
-+++ b/drivers/gpu/drm/tegra/dc.c
-@@ -1924,7 +1924,7 @@ static void tegra_crtc_atomic_enable(struct drm_crtc *crtc,
- }
-
- static void tegra_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- unsigned long flags;
-
-@@ -1943,17 +1943,17 @@ static void tegra_crtc_atomic_begin(struct drm_crtc *crtc,
- }
-
- static void tegra_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
-- struct tegra_dc_state *state = to_dc_state(crtc->state);
-+ struct tegra_dc_state *crtc_state = to_dc_state(crtc->state);
- struct tegra_dc *dc = to_tegra_dc(crtc);
- u32 value;
-
-- value = state->planes << 8 | GENERAL_UPDATE;
-+ value = crtc_state->planes << 8 | GENERAL_UPDATE;
- tegra_dc_writel(dc, value, DC_CMD_STATE_CONTROL);
- value = tegra_dc_readl(dc, DC_CMD_STATE_CONTROL);
-
-- value = state->planes | GENERAL_ACT_REQ;
-+ value = crtc_state->planes | GENERAL_ACT_REQ;
- tegra_dc_writel(dc, value, DC_CMD_STATE_CONTROL);
- value = tegra_dc_readl(dc, DC_CMD_STATE_CONTROL);
- }
-diff --git a/drivers/gpu/drm/tidss/tidss_crtc.c b/drivers/gpu/drm/tidss/tidss_crtc.c
-index 3c5744a91d4a0..7f80496173e85 100644
---- a/drivers/gpu/drm/tidss/tidss_crtc.c
-+++ b/drivers/gpu/drm/tidss/tidss_crtc.c
-@@ -161,8 +161,10 @@ static void tidss_crtc_position_planes(struct tidss_device *tidss,
- }
-
- static void tidss_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
-+ struct drm_crtc_state *old_crtc_state = drm_atomic_get_old_crtc_state(state,
-+ crtc);
- struct tidss_crtc *tcrtc = to_tidss_crtc(crtc);
- struct drm_device *ddev = crtc->dev;
- struct tidss_device *tidss = to_tidss(ddev);
-diff --git a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
-index 0aaa4a26b5db5..bf8587c24dfe7 100644
---- a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
-+++ b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
-@@ -547,7 +547,7 @@ static void tilcdc_crtc_atomic_disable(struct drm_crtc *crtc,
- }
-
- static void tilcdc_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state)
-+ struct drm_atomic_state *state)
- {
- if (!crtc->state->event)
- return;
-diff --git a/drivers/gpu/drm/vboxvideo/vbox_mode.c b/drivers/gpu/drm/vboxvideo/vbox_mode.c
-index 4fcc0a542b8a6..ce173baaa84b6 100644
---- a/drivers/gpu/drm/vboxvideo/vbox_mode.c
-+++ b/drivers/gpu/drm/vboxvideo/vbox_mode.c
-@@ -223,7 +223,7 @@ static void vbox_crtc_atomic_disable(struct drm_crtc *crtc,
- }
-
- static void vbox_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- }
-
-diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
-index 921463625d82e..5d1e6a8323bf2 100644
---- a/drivers/gpu/drm/vc4/vc4_drv.h
-+++ b/drivers/gpu/drm/vc4/vc4_drv.h
-@@ -919,7 +919,8 @@ int vc4_hvs_get_fifo_from_output(struct drm_device *dev, unsigned int output);
- int vc4_hvs_atomic_check(struct drm_crtc *crtc, struct drm_crtc_state *state);
- void vc4_hvs_atomic_enable(struct drm_crtc *crtc, struct drm_crtc_state *old_state);
- void vc4_hvs_atomic_disable(struct drm_crtc *crtc, struct drm_crtc_state *old_state);
--void vc4_hvs_atomic_flush(struct drm_crtc *crtc, struct drm_crtc_state *state);
-+void vc4_hvs_atomic_flush(struct drm_crtc *crtc,
-+ struct drm_atomic_state *state);
- void vc4_hvs_dump_state(struct drm_device *dev);
- void vc4_hvs_unmask_underrun(struct drm_device *dev, int channel);
- void vc4_hvs_mask_underrun(struct drm_device *dev, int channel);
-diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c
-index f8f2fc3d15f73..34c342968e49e 100644
---- a/drivers/gpu/drm/vc4/vc4_hvs.c
-+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
-@@ -414,8 +414,10 @@ void vc4_hvs_atomic_disable(struct drm_crtc *crtc,
- }
-
- void vc4_hvs_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state)
-+ struct drm_atomic_state *state)
- {
-+ struct drm_crtc_state *old_state = drm_atomic_get_old_crtc_state(state,
-+ crtc);
- struct drm_device *dev = crtc->dev;
- struct vc4_dev *vc4 = to_vc4_dev(dev);
- struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc->state);
-diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c
-index 9b2b99e853422..fcbb0a6cdb173 100644
---- a/drivers/gpu/drm/virtio/virtgpu_display.c
-+++ b/drivers/gpu/drm/virtio/virtgpu_display.c
-@@ -117,7 +117,7 @@ static int virtio_gpu_crtc_atomic_check(struct drm_crtc *crtc,
- }
-
- static void virtio_gpu_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state)
-+ struct drm_atomic_state *state)
- {
- struct virtio_gpu_output *output = drm_crtc_to_virtio_gpu_output(crtc);
-
-diff --git a/drivers/gpu/drm/vkms/vkms_crtc.c b/drivers/gpu/drm/vkms/vkms_crtc.c
-index 1ae5cd47d9546..252b7e0ba58e8 100644
---- a/drivers/gpu/drm/vkms/vkms_crtc.c
-+++ b/drivers/gpu/drm/vkms/vkms_crtc.c
-@@ -227,7 +227,7 @@ static void vkms_crtc_atomic_disable(struct drm_crtc *crtc,
- }
-
- static void vkms_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct vkms_output *vkms_output = drm_crtc_to_vkms_output(crtc);
-
-@@ -238,7 +238,7 @@ static void vkms_crtc_atomic_begin(struct drm_crtc *crtc,
- }
-
- static void vkms_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct vkms_output *vkms_output = drm_crtc_to_vkms_output(crtc);
-
-diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
-index 0e963fd7db17e..0d5da0a1b506a 100644
---- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
-+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
-@@ -553,13 +553,13 @@ int vmw_du_crtc_atomic_check(struct drm_crtc *crtc,
-
-
- void vmw_du_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- }
-
-
- void vmw_du_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- struct drm_pending_vblank_event *event = crtc->state->event;
-
-diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
-index 3ee03227607c6..d49b1c741b6b1 100644
---- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
-+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
-@@ -475,9 +475,9 @@ void vmw_du_plane_unpin_surf(struct vmw_plane_state *vps,
- int vmw_du_crtc_atomic_check(struct drm_crtc *crtc,
- struct drm_crtc_state *state);
- void vmw_du_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state);
-+ struct drm_atomic_state *state);
- void vmw_du_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state);
-+ struct drm_atomic_state *state);
- void vmw_du_crtc_reset(struct drm_crtc *crtc);
- struct drm_crtc_state *vmw_du_crtc_duplicate_state(struct drm_crtc *crtc);
- void vmw_du_crtc_destroy_state(struct drm_crtc *crtc,
-diff --git a/drivers/gpu/drm/xlnx/zynqmp_disp.c b/drivers/gpu/drm/xlnx/zynqmp_disp.c
-index 205c72a249b75..227449ca017ee 100644
---- a/drivers/gpu/drm/xlnx/zynqmp_disp.c
-+++ b/drivers/gpu/drm/xlnx/zynqmp_disp.c
-@@ -1511,14 +1511,14 @@ static int zynqmp_disp_crtc_atomic_check(struct drm_crtc *crtc,
-
- static void
- zynqmp_disp_crtc_atomic_begin(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- drm_crtc_vblank_on(crtc);
- }
-
- static void
- zynqmp_disp_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state)
-+ struct drm_atomic_state *state)
- {
- if (crtc->state->event) {
- struct drm_pending_vblank_event *event;
-diff --git a/drivers/gpu/drm/zte/zx_vou.c b/drivers/gpu/drm/zte/zx_vou.c
-index 5259ff2825f94..d91563a2603a8 100644
---- a/drivers/gpu/drm/zte/zx_vou.c
-+++ b/drivers/gpu/drm/zte/zx_vou.c
-@@ -473,7 +473,7 @@ static void zx_crtc_atomic_disable(struct drm_crtc *crtc,
- }
-
- static void zx_crtc_atomic_flush(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_state)
-+ struct drm_atomic_state *state)
- {
- struct drm_pending_vblank_event *event = crtc->state->event;
-
-diff --git a/include/drm/drm_modeset_helper_vtables.h b/include/drm/drm_modeset_helper_vtables.h
-index 4efec30f8badc..e4b645f5b04a1 100644
---- a/include/drm/drm_modeset_helper_vtables.h
-+++ b/include/drm/drm_modeset_helper_vtables.h
-@@ -374,7 +374,7 @@ struct drm_crtc_helper_funcs {
- * transitional plane helpers, but it is optional.
- */
- void (*atomic_begin)(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state);
-+ struct drm_atomic_state *state);
- /**
- * @atomic_flush:
- *
-@@ -398,7 +398,7 @@ struct drm_crtc_helper_funcs {
- * transitional plane helpers, but it is optional.
- */
- void (*atomic_flush)(struct drm_crtc *crtc,
-- struct drm_crtc_state *old_crtc_state);
-+ struct drm_atomic_state *state);
-
- /**
- * @atomic_enable:
---
-2.43.0
-
+++ /dev/null
-From d633b09b632a6ec4c62ba0079e34aee2001ce6a5 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 5 Nov 2020 17:45:18 +0100
-Subject: drm: Use state helper instead of CRTC state pointer
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Maxime Ripard <maxime@cerno.tech>
-
-[ Upstream commit 253f28b6237264216b052ac0848fd7fc917b5259 ]
-
-Many drivers reference the crtc->pointer in order to get the current CRTC
-state in their atomic_begin or atomic_flush hooks, which would be the new
-CRTC state in the global atomic state since _swap_state happened when those
-hooks are run.
-
-Use the drm_atomic_get_new_crtc_state helper to get that state to make it
-more obvious.
-
-This was made using the coccinelle script below:
-
-@ crtc_atomic_func @
-identifier helpers;
-identifier func;
-@@
-
-(
-static struct drm_crtc_helper_funcs helpers = {
- ...,
- .atomic_begin = func,
- ...,
-};
-|
-static struct drm_crtc_helper_funcs helpers = {
- ...,
- .atomic_flush = func,
- ...,
-};
-)
-
-@@
-identifier crtc_atomic_func.func;
-identifier crtc, state;
-symbol crtc_state;
-expression e;
-@@
-
- func(struct drm_crtc *crtc, struct drm_atomic_state *state) {
- ...
-- struct tegra_dc_state *crtc_state = e;
-+ struct tegra_dc_state *dc_state = e;
- <+...
-- crtc_state
-+ dc_state
- ...+>
- }
-
-@@
-identifier crtc_atomic_func.func;
-identifier crtc, state;
-symbol crtc_state;
-expression e;
-@@
-
- func(struct drm_crtc *crtc, struct drm_atomic_state *state) {
- ...
-- struct mtk_crtc_state *crtc_state = e;
-+ struct mtk_crtc_state *mtk_crtc_state = e;
- <+...
-- crtc_state
-+ mtk_crtc_state
- ...+>
- }
-
-@ replaces_new_state @
-identifier crtc_atomic_func.func;
-identifier crtc, state, crtc_state;
-@@
-
- func(struct drm_crtc *crtc, struct drm_atomic_state *state) {
- ...
-- struct drm_crtc_state *crtc_state = crtc->state;
-+ struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state, crtc);
- ...
- }
-
-@@
-identifier crtc_atomic_func.func;
-identifier crtc, state, crtc_state;
-@@
-
- func(struct drm_crtc *crtc, struct drm_atomic_state *state) {
- struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state, crtc);
- ...
-- crtc->state
-+ crtc_state
- ...
- }
-
-@ adds_new_state @
-identifier crtc_atomic_func.func;
-identifier crtc, state;
-@@
-
- func(struct drm_crtc *crtc, struct drm_atomic_state *state) {
-+ struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state, crtc);
- ...
-- crtc->state
-+ crtc_state
- ...
- }
-
-@ include depends on adds_new_state || replaces_new_state @
-@@
-
- #include <drm/drm_atomic.h>
-
-@ no_include depends on !include && (adds_new_state || replaces_new_state) @
-@@
-
-+ #include <drm/drm_atomic.h>
- #include <drm/...>
-
-Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
-Signed-off-by: Maxime Ripard <maxime@cerno.tech>
-Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
-Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
-Cc: "James (Qian) Wang" <james.qian.wang@arm.com>
-Cc: Liviu Dudau <liviu.dudau@arm.com>
-Cc: Mihail Atanassov <mihail.atanassov@arm.com>
-Cc: Brian Starkey <brian.starkey@arm.com>
-Cc: Russell King <linux@armlinux.org.uk>
-Cc: Paul Cercueil <paul@crapouillou.net>
-Cc: Chun-Kuang Hu <chunkuang.hu@kernel.org>
-Cc: Philipp Zabel <p.zabel@pengutronix.de>
-Cc: Sandy Huang <hjc@rock-chips.com>
-Cc: "Heiko Stübner" <heiko@sntech.de>
-Cc: Thierry Reding <thierry.reding@gmail.com>
-Cc: Gerd Hoffmann <kraxel@redhat.com>
-Link: https://patchwork.freedesktop.org/patch/msgid/20201105164518.392891-1-maxime@cerno.tech
-Stable-dep-of: fe4c5f662097 ("drm/mediatek: Add spinlock for setting vblank event in atomic_begin")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/arm/display/komeda/komeda_crtc.c | 4 +++-
- drivers/gpu/drm/armada/armada_crtc.c | 8 ++++++--
- drivers/gpu/drm/ast/ast_mode.c | 4 +++-
- drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 7 +++++--
- drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 15 +++++++++------
- drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 6 ++++--
- drivers/gpu/drm/tegra/dc.c | 8 +++++---
- drivers/gpu/drm/virtio/virtgpu_display.c | 4 +++-
- 8 files changed, 38 insertions(+), 18 deletions(-)
-
-diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c
-index 3c77eeb0a7a0c..db995250cbff6 100644
---- a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c
-+++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c
-@@ -381,10 +381,12 @@ static void
- komeda_crtc_atomic_flush(struct drm_crtc *crtc,
- struct drm_atomic_state *state)
- {
-+ struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state,
-+ crtc);
- struct drm_crtc_state *old = drm_atomic_get_old_crtc_state(state,
- crtc);
- /* commit with modeset will be handled in enable/disable */
-- if (drm_atomic_crtc_needs_modeset(crtc->state))
-+ if (drm_atomic_crtc_needs_modeset(crtc_state))
- return;
-
- komeda_crtc_do_flush(crtc, old);
-diff --git a/drivers/gpu/drm/armada/armada_crtc.c b/drivers/gpu/drm/armada/armada_crtc.c
-index 13c7c474fb26e..8b7cc7bc81ee4 100644
---- a/drivers/gpu/drm/armada/armada_crtc.c
-+++ b/drivers/gpu/drm/armada/armada_crtc.c
-@@ -429,11 +429,13 @@ static int armada_drm_crtc_atomic_check(struct drm_crtc *crtc,
- static void armada_drm_crtc_atomic_begin(struct drm_crtc *crtc,
- struct drm_atomic_state *state)
- {
-+ struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state,
-+ crtc);
- struct armada_crtc *dcrtc = drm_to_armada_crtc(crtc);
-
- DRM_DEBUG_KMS("[CRTC:%d:%s]\n", crtc->base.id, crtc->name);
-
-- if (crtc->state->color_mgmt_changed)
-+ if (crtc_state->color_mgmt_changed)
- armada_drm_update_gamma(crtc);
-
- dcrtc->regs_idx = 0;
-@@ -443,6 +445,8 @@ static void armada_drm_crtc_atomic_begin(struct drm_crtc *crtc,
- static void armada_drm_crtc_atomic_flush(struct drm_crtc *crtc,
- struct drm_atomic_state *state)
- {
-+ struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state,
-+ crtc);
- struct armada_crtc *dcrtc = drm_to_armada_crtc(crtc);
-
- DRM_DEBUG_KMS("[CRTC:%d:%s]\n", crtc->base.id, crtc->name);
-@@ -453,7 +457,7 @@ static void armada_drm_crtc_atomic_flush(struct drm_crtc *crtc,
- * If we aren't doing a full modeset, then we need to queue
- * the event here.
- */
-- if (!drm_atomic_crtc_needs_modeset(crtc->state)) {
-+ if (!drm_atomic_crtc_needs_modeset(crtc_state)) {
- dcrtc->update_pending = true;
- armada_drm_crtc_queue_state_event(crtc);
- spin_lock_irq(&dcrtc->irq_lock);
-diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
-index 84c2e90d415f4..7f3f961035872 100644
---- a/drivers/gpu/drm/ast/ast_mode.c
-+++ b/drivers/gpu/drm/ast/ast_mode.c
-@@ -780,10 +780,12 @@ static void
- ast_crtc_helper_atomic_flush(struct drm_crtc *crtc,
- struct drm_atomic_state *state)
- {
-+ struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state,
-+ crtc);
- struct drm_crtc_state *old_crtc_state = drm_atomic_get_old_crtc_state(state,
- crtc);
- struct ast_private *ast = to_ast_private(crtc->dev);
-- struct ast_crtc_state *ast_crtc_state = to_ast_crtc_state(crtc->state);
-+ struct ast_crtc_state *ast_crtc_state = to_ast_crtc_state(crtc_state);
- struct ast_crtc_state *old_ast_crtc_state = to_ast_crtc_state(old_crtc_state);
-
- /*
-diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
-index 6d56b701118da..784a91d32bd1e 100644
---- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
-+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
-@@ -289,11 +289,13 @@ ingenic_drm_crtc_mode_valid(struct drm_crtc *crtc, const struct drm_display_mode
- static void ingenic_drm_crtc_atomic_begin(struct drm_crtc *crtc,
- struct drm_atomic_state *state)
- {
-+ struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state,
-+ crtc);
- struct ingenic_drm *priv = drm_crtc_get_priv(crtc);
- u32 ctrl = 0;
-
- if (priv->soc_info->has_osd &&
-- drm_atomic_crtc_needs_modeset(crtc->state)) {
-+ drm_atomic_crtc_needs_modeset(crtc_state)) {
- /*
- * If IPU plane is enabled, enable IPU as source for the F1
- * plane; otherwise use regular DMA.
-@@ -310,7 +312,8 @@ static void ingenic_drm_crtc_atomic_flush(struct drm_crtc *crtc,
- struct drm_atomic_state *state)
- {
- struct ingenic_drm *priv = drm_crtc_get_priv(crtc);
-- struct drm_crtc_state *crtc_state = crtc->state;
-+ struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state,
-+ crtc);
- struct drm_pending_vblank_event *event = crtc_state->event;
-
- if (drm_atomic_crtc_needs_modeset(crtc_state)) {
-diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
-index 067b4dc39f4f0..380b0b52d2c7a 100644
---- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
-+++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
-@@ -11,6 +11,7 @@
- #include <asm/barrier.h>
- #include <soc/mediatek/smi.h>
-
-+#include <drm/drm_atomic.h>
- #include <drm/drm_atomic_helper.h>
- #include <drm/drm_plane_helper.h>
- #include <drm/drm_probe_helper.h>
-@@ -580,17 +581,19 @@ static void mtk_drm_crtc_atomic_disable(struct drm_crtc *crtc,
- static void mtk_drm_crtc_atomic_begin(struct drm_crtc *crtc,
- struct drm_atomic_state *state)
- {
-- struct mtk_crtc_state *crtc_state = to_mtk_crtc_state(crtc->state);
-+ struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state,
-+ crtc);
-+ struct mtk_crtc_state *mtk_crtc_state = to_mtk_crtc_state(crtc_state);
- struct mtk_drm_crtc *mtk_crtc = to_mtk_crtc(crtc);
-
-- if (mtk_crtc->event && crtc_state->base.event)
-+ if (mtk_crtc->event && mtk_crtc_state->base.event)
- DRM_ERROR("new event while there is still a pending event\n");
-
-- if (crtc_state->base.event) {
-- crtc_state->base.event->pipe = drm_crtc_index(crtc);
-+ if (mtk_crtc_state->base.event) {
-+ mtk_crtc_state->base.event->pipe = drm_crtc_index(crtc);
- WARN_ON(drm_crtc_vblank_get(crtc) != 0);
-- mtk_crtc->event = crtc_state->base.event;
-- crtc_state->base.event = NULL;
-+ mtk_crtc->event = mtk_crtc_state->base.event;
-+ mtk_crtc_state->base.event = NULL;
- }
- }
-
-diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
-index b7eeb3183aa94..0a20fe4200b3d 100644
---- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
-+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
-@@ -1257,6 +1257,8 @@ static void vop_crtc_gamma_set(struct vop *vop, struct drm_crtc *crtc,
- static void vop_crtc_atomic_begin(struct drm_crtc *crtc,
- struct drm_atomic_state *state)
- {
-+ struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state,
-+ crtc);
- struct drm_crtc_state *old_crtc_state = drm_atomic_get_old_crtc_state(state,
- crtc);
- struct vop *vop = to_vop(crtc);
-@@ -1265,8 +1267,8 @@ static void vop_crtc_atomic_begin(struct drm_crtc *crtc,
- * Only update GAMMA if the 'active' flag is not changed,
- * otherwise it's updated by .atomic_enable.
- */
-- if (crtc->state->color_mgmt_changed &&
-- !crtc->state->active_changed)
-+ if (crtc_state->color_mgmt_changed &&
-+ !crtc_state->active_changed)
- vop_crtc_gamma_set(vop, crtc, old_crtc_state);
- }
-
-diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c
-index f1e8951fa86c4..093ac01ac3d90 100644
---- a/drivers/gpu/drm/tegra/dc.c
-+++ b/drivers/gpu/drm/tegra/dc.c
-@@ -1945,15 +1945,17 @@ static void tegra_crtc_atomic_begin(struct drm_crtc *crtc,
- static void tegra_crtc_atomic_flush(struct drm_crtc *crtc,
- struct drm_atomic_state *state)
- {
-- struct tegra_dc_state *crtc_state = to_dc_state(crtc->state);
-+ struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state,
-+ crtc);
-+ struct tegra_dc_state *dc_state = to_dc_state(crtc_state);
- struct tegra_dc *dc = to_tegra_dc(crtc);
- u32 value;
-
-- value = crtc_state->planes << 8 | GENERAL_UPDATE;
-+ value = dc_state->planes << 8 | GENERAL_UPDATE;
- tegra_dc_writel(dc, value, DC_CMD_STATE_CONTROL);
- value = tegra_dc_readl(dc, DC_CMD_STATE_CONTROL);
-
-- value = crtc_state->planes | GENERAL_ACT_REQ;
-+ value = dc_state->planes | GENERAL_ACT_REQ;
- tegra_dc_writel(dc, value, DC_CMD_STATE_CONTROL);
- value = tegra_dc_readl(dc, DC_CMD_STATE_CONTROL);
- }
-diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c
-index fcbb0a6cdb173..9af912fc2426b 100644
---- a/drivers/gpu/drm/virtio/virtgpu_display.c
-+++ b/drivers/gpu/drm/virtio/virtgpu_display.c
-@@ -119,6 +119,8 @@ static int virtio_gpu_crtc_atomic_check(struct drm_crtc *crtc,
- static void virtio_gpu_crtc_atomic_flush(struct drm_crtc *crtc,
- struct drm_atomic_state *state)
- {
-+ struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state,
-+ crtc);
- struct virtio_gpu_output *output = drm_crtc_to_virtio_gpu_output(crtc);
-
- /*
-@@ -127,7 +129,7 @@ static void virtio_gpu_crtc_atomic_flush(struct drm_crtc *crtc,
- * in the plane update callback, and here we just check
- * whenever we must force the modeset.
- */
-- if (drm_atomic_crtc_needs_modeset(crtc->state)) {
-+ if (drm_atomic_crtc_needs_modeset(crtc_state)) {
- output->needs_modeset = true;
- }
- }
---
-2.43.0
-