drm/atomic: Pass the full state to planes atomic_check
authorMaxime Ripard <maxime@cerno.tech>
Fri, 19 Feb 2021 12:00:24 +0000 (13:00 +0100)
committerMaxime Ripard <maxime@cerno.tech>
Wed, 24 Feb 2021 19:27:00 +0000 (20:27 +0100)
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 convert all the remaining helpers to provide a consistent
interface, starting with the planes atomic_check.

The conversion was done using the coccinelle script below plus some
manual changes for vmwgfx, built tested on all the drivers.

@@
identifier plane, plane_state;
symbol state;
@@

 struct drm_plane_helper_funcs {
  ...
int (*atomic_check)(struct drm_plane *plane,
-     struct drm_plane_state *plane_state);
+     struct drm_atomic_state *state);
...
}

@ plane_atomic_func @
identifier helpers;
identifier func;
@@

static const struct drm_plane_helper_funcs helpers = {
...,
  .atomic_check = func,
...,
};

@@
struct drm_plane_helper_funcs *FUNCS;
identifier f;
identifier dev;
identifier plane, plane_state, state;
@@

 f(struct drm_device *dev, struct drm_atomic_state *state)
 {
  <+...
- FUNCS->atomic_check(plane, plane_state)
+ FUNCS->atomic_check(plane, state)
  ...+>
 }

@ ignores_new_state @
identifier plane_atomic_func.func;
identifier plane, new_plane_state;
@@

 func(struct drm_plane *plane, struct drm_plane_state *new_plane_state)
 {
... when != new_plane_state
 }

@ adds_new_state depends on plane_atomic_func && !ignores_new_state @
identifier plane_atomic_func.func;
identifier plane, new_plane_state;
@@

 func(struct drm_plane *plane, struct drm_plane_state *new_plane_state)
 {
+ struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state, plane);
  ...
 }

@ depends on plane_atomic_func @
identifier plane_atomic_func.func;
identifier plane, new_plane_state;
@@

 func(struct drm_plane *plane,
-     struct drm_plane_state *new_plane_state
+     struct drm_atomic_state *state
     )
 { ... }

@ include depends on adds_new_state @
@@

 #include <drm/drm_atomic.h>

@ no_include depends on !include && adds_new_state @
@@

+ #include <drm/drm_atomic.h>
  #include <drm/...>

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20210219120032.260676-4-maxime@cerno.tech
51 files changed:
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/arm/display/komeda/komeda_plane.c
drivers/gpu/drm/arm/hdlcd_crtc.c
drivers/gpu/drm/arm/malidp_planes.c
drivers/gpu/drm/armada/armada_plane.c
drivers/gpu/drm/armada/armada_plane.h
drivers/gpu/drm/ast/ast_mode.c
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c
drivers/gpu/drm/drm_atomic_helper.c
drivers/gpu/drm/drm_simple_kms_helper.c
drivers/gpu/drm/exynos/exynos_drm_plane.c
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c
drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
drivers/gpu/drm/imx/dcss/dcss-plane.c
drivers/gpu/drm/imx/ipuv3-plane.c
drivers/gpu/drm/ingenic/ingenic-drm-drv.c
drivers/gpu/drm/ingenic/ingenic-ipu.c
drivers/gpu/drm/kmb/kmb_plane.c
drivers/gpu/drm/mediatek/mtk_drm_plane.c
drivers/gpu/drm/meson/meson_overlay.c
drivers/gpu/drm/meson/meson_plane.c
drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
drivers/gpu/drm/msm/disp/mdp4/mdp4_plane.c
drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c
drivers/gpu/drm/mxsfb/mxsfb_kms.c
drivers/gpu/drm/nouveau/dispnv50/wndw.c
drivers/gpu/drm/omapdrm/omap_plane.c
drivers/gpu/drm/qxl/qxl_display.c
drivers/gpu/drm/rcar-du/rcar_du_plane.c
drivers/gpu/drm/rcar-du/rcar_du_vsp.c
drivers/gpu/drm/rockchip/rockchip_drm_vop.c
drivers/gpu/drm/sti/sti_cursor.c
drivers/gpu/drm/sti/sti_gdp.c
drivers/gpu/drm/sti/sti_hqvdp.c
drivers/gpu/drm/stm/ltdc.c
drivers/gpu/drm/sun4i/sun8i_ui_layer.c
drivers/gpu/drm/sun4i/sun8i_vi_layer.c
drivers/gpu/drm/tegra/dc.c
drivers/gpu/drm/tegra/hub.c
drivers/gpu/drm/tidss/tidss_plane.c
drivers/gpu/drm/tilcdc/tilcdc_plane.c
drivers/gpu/drm/vboxvideo/vbox_mode.c
drivers/gpu/drm/vc4/vc4_plane.c
drivers/gpu/drm/virtio/virtgpu_plane.c
drivers/gpu/drm/vkms/vkms_plane.c
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
drivers/gpu/drm/xlnx/zynqmp_disp.c
drivers/gpu/drm/zte/zx_plane.c
include/drm/drm_modeset_helper_vtables.h

index 906fa4ae25c9a08650810797b8eb04ef5eab1a89..1cdff048b0c025272a54d0a3e65125bbfc84eae4 100644 (file)
@@ -6432,8 +6432,10 @@ static int dm_plane_helper_check_state(struct drm_plane_state *state,
 }
 
 static int dm_plane_atomic_check(struct drm_plane *plane,
-                                struct drm_plane_state *new_plane_state)
+                                struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct amdgpu_device *adev = drm_to_adev(plane->dev);
        struct dc *dc = adev->dm.dc;
        struct dm_plane_state *dm_plane_state;
index 00fd83cbe565376ccf8671ec5d978c1e6a8847c9..96a6fe95a4e75b8af03a11bed77b26a03649933e 100644 (file)
@@ -69,8 +69,10 @@ komeda_plane_init_data_flow(struct drm_plane_state *st,
  */
 static int
 komeda_plane_atomic_check(struct drm_plane *plane,
-                         struct drm_plane_state *new_plane_state)
+                         struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct komeda_plane *kplane = to_kplane(plane);
        struct komeda_plane_state *kplane_st = to_kplane_st(new_plane_state);
        struct komeda_layer *layer = kplane->layer;
index d5a79a4aa9965c3c785667024b10521564c7d806..9da9d0581ce9aa988fd08ad2788f814c7b890230 100644 (file)
@@ -229,8 +229,10 @@ static const struct drm_crtc_helper_funcs hdlcd_crtc_helper_funcs = {
 };
 
 static int hdlcd_plane_atomic_check(struct drm_plane *plane,
-                                   struct drm_plane_state *new_plane_state)
+                                   struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        int i;
        struct drm_crtc *crtc;
        struct drm_crtc_state *crtc_state;
index e64367f55c70dfc1da2be7711b466f82713ba173..c94c4a96db684e1927ef94e77783305d1fbfc56e 100644 (file)
@@ -502,8 +502,10 @@ static void malidp_de_prefetch_settings(struct malidp_plane *mp,
 }
 
 static int malidp_de_plane_check(struct drm_plane *plane,
-                                struct drm_plane_state *new_plane_state)
+                                struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct malidp_plane *mp = to_malidp_plane(plane);
        struct malidp_plane_state *ms = to_malidp_plane_state(new_plane_state);
        bool rotated = new_plane_state->rotation & MALIDP_ROTATED_MASK;
index 27f83b07c8ebcf261c89c59be2d6b5d79d6f25d4..b1266c58810285b64858ee260eef05e5c9719052 100644 (file)
@@ -106,8 +106,10 @@ void armada_drm_plane_cleanup_fb(struct drm_plane *plane,
 }
 
 int armada_drm_plane_atomic_check(struct drm_plane *plane,
-       struct drm_plane_state *new_plane_state)
+       struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct armada_plane_state *st = to_armada_plane_state(new_plane_state);
        struct drm_crtc *crtc = new_plane_state->crtc;
        struct drm_crtc_state *crtc_state;
index 2707ec781941b3bfd04164283e5406408970c795..51dab8d8da22d86b9f67ed0f41306a8373411cdf 100644 (file)
@@ -26,7 +26,7 @@ int armada_drm_plane_prepare_fb(struct drm_plane *plane,
 void armada_drm_plane_cleanup_fb(struct drm_plane *plane,
        struct drm_plane_state *old_state);
 int armada_drm_plane_atomic_check(struct drm_plane *plane,
-       struct drm_plane_state *state);
+       struct drm_atomic_state *state);
 void armada_plane_reset(struct drm_plane *plane);
 struct drm_plane_state *armada_plane_duplicate_state(struct drm_plane *plane);
 void armada_plane_destroy_state(struct drm_plane *plane,
index 2665d3d570f9add073ff598377363d732f7e27d2..cb8650142f138a3106d8bc97d17bfb886f74216c 100644 (file)
@@ -536,8 +536,10 @@ static const uint32_t ast_primary_plane_formats[] = {
 };
 
 static int ast_primary_plane_helper_atomic_check(struct drm_plane *plane,
-                                                struct drm_plane_state *new_plane_state)
+                                                struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct drm_crtc_state *crtc_state;
        struct ast_crtc_state *ast_crtc_state;
        int ret;
@@ -756,8 +758,10 @@ static const uint32_t ast_cursor_plane_formats[] = {
 };
 
 static int ast_cursor_plane_helper_atomic_check(struct drm_plane *plane,
-                                               struct drm_plane_state *new_plane_state)
+                                               struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct drm_framebuffer *fb = new_plane_state->fb;
        struct drm_crtc_state *crtc_state;
        int ret;
index c62e930bccad11c9d45103005732a7311e337110..445105e75a97d39513ed6bc8c53361aba38814e7 100644 (file)
@@ -593,8 +593,9 @@ atmel_hlcdc_plane_update_disc_area(struct atmel_hlcdc_plane *plane,
 }
 
 static int atmel_hlcdc_plane_atomic_check(struct drm_plane *p,
-                                         struct drm_plane_state *s)
+                                         struct drm_atomic_state *state)
 {
+       struct drm_plane_state *s = drm_atomic_get_new_plane_state(state, p);
        struct atmel_hlcdc_plane *plane = drm_plane_to_atmel_hlcdc_plane(p);
        struct atmel_hlcdc_plane_state *hstate =
                                drm_plane_state_to_atmel_hlcdc_plane_state(s);
index bd0bb74437c7e5ac5dd13a7c79032e8260b9aa7f..c06bd5f43e61463a661ecf57c95dd63245ef5803 100644 (file)
@@ -902,7 +902,7 @@ drm_atomic_helper_check_planes(struct drm_device *dev,
                if (!funcs || !funcs->atomic_check)
                        continue;
 
-               ret = funcs->atomic_check(plane, new_plane_state);
+               ret = funcs->atomic_check(plane, state);
                if (ret) {
                        DRM_DEBUG_ATOMIC("[PLANE:%d:%s] atomic driver check failed\n",
                                         plane->base.id, plane->name);
index 89675d4b7b6c8a4e74b273edad7d0db063e592e3..a43e34e04d6b074981b749525a114b96f750d681 100644 (file)
@@ -177,8 +177,10 @@ static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = {
 };
 
 static int drm_simple_kms_plane_atomic_check(struct drm_plane *plane,
-                                       struct drm_plane_state *plane_state)
+                                       struct drm_atomic_state *state)
 {
+       struct drm_plane_state *plane_state = drm_atomic_get_new_plane_state(state,
+                                                                            plane);
        struct drm_simple_display_pipe *pipe;
        struct drm_crtc_state *crtc_state;
        int ret;
index 009a62978fbc10644ae3187ca6f5bf736b9f0149..2c4ceb768a087418987fc3a8c4ff7d6d4f7fc4e5 100644 (file)
@@ -228,8 +228,10 @@ exynos_drm_plane_check_size(const struct exynos_drm_plane_config *config,
 }
 
 static int exynos_plane_atomic_check(struct drm_plane *plane,
-                                    struct drm_plane_state *new_plane_state)
+                                    struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct exynos_drm_plane *exynos_plane = to_exynos_plane(plane);
        struct exynos_drm_plane_state *exynos_state =
                                                to_exynos_plane_state(new_plane_state);
index fc3ec6b4c732e8180b528b7416bbf02986bc6e2d..7d2aa2cbcff6993d9d11ce9d3289a0c1b6710fa3 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <linux/regmap.h>
 
+#include <drm/drm_atomic.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_fb_cma_helper.h>
@@ -33,8 +34,10 @@ static int fsl_dcu_drm_plane_index(struct drm_plane *plane)
 }
 
 static int fsl_dcu_drm_plane_atomic_check(struct drm_plane *plane,
-                                         struct drm_plane_state *new_plane_state)
+                                         struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct drm_framebuffer *fb = new_plane_state->fb;
 
        if (!new_plane_state->fb || !new_plane_state->crtc)
index d276f37d9d80bd8b54b2f422003c4eaf67848fd1..ddcf121af54219e5303d2259c87a7cdf4cca8739 100644 (file)
@@ -53,8 +53,10 @@ static const struct hibmc_dislay_pll_config hibmc_pll_table[] = {
 };
 
 static int hibmc_plane_atomic_check(struct drm_plane *plane,
-                                   struct drm_plane_state *new_plane_state)
+                                   struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct drm_framebuffer *fb = new_plane_state->fb;
        struct drm_crtc *crtc = new_plane_state->crtc;
        struct drm_crtc_state *crtc_state;
index cba99b8d9e5927bc0fc46e88490161a320b4e4e4..fab083380ef71c64d37b0617169ef4feec3c06e8 100644 (file)
@@ -757,8 +757,10 @@ static void ade_disable_channel(struct kirin_plane *kplane)
 }
 
 static int ade_plane_atomic_check(struct drm_plane *plane,
-                                 struct drm_plane_state *new_plane_state)
+                                 struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct drm_framebuffer *fb = new_plane_state->fb;
        struct drm_crtc *crtc = new_plane_state->crtc;
        struct drm_crtc_state *crtc_state;
index eacaf9ac1ac973081a87eefb16ed145bb32293a1..3222fb03b88774c8e7cb98d9223c404208df12f3 100644 (file)
@@ -137,8 +137,10 @@ static bool dcss_plane_is_source_size_allowed(u16 src_w, u16 src_h, u32 pix_fmt)
 }
 
 static int dcss_plane_atomic_check(struct drm_plane *plane,
-                                  struct drm_plane_state *new_plane_state)
+                                  struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct dcss_plane *dcss_plane = to_dcss_plane(plane);
        struct dcss_dev *dcss = plane->dev->dev_private;
        struct drm_framebuffer *fb = new_plane_state->fb;
index 4756b36ab640f9e0b333e84a1f4e82df9b2a919d..57cd85973593b3fd06cf1ddf412dcd6c635e4e30 100644 (file)
@@ -337,8 +337,10 @@ static const struct drm_plane_funcs ipu_plane_funcs = {
 };
 
 static int ipu_plane_atomic_check(struct drm_plane *plane,
-                                 struct drm_plane_state *new_state)
+                                 struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state,
+                                                                          plane);
        struct drm_plane_state *old_state = plane->state;
        struct drm_crtc_state *crtc_state;
        struct device *dev = plane->dev->dev;
index b91836dbe35b0ae2a599be81f7563bcfbadef7d3..77b0ec7183c70c17e5e068a5909f1602a9a8d6d5 100644 (file)
@@ -360,8 +360,10 @@ static void ingenic_drm_crtc_atomic_flush(struct drm_crtc *crtc,
 }
 
 static int ingenic_drm_plane_atomic_check(struct drm_plane *plane,
-                                         struct drm_plane_state *new_plane_state)
+                                         struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct ingenic_drm *priv = drm_device_get_priv(plane->dev);
        struct drm_crtc_state *crtc_state;
        struct drm_crtc *crtc = new_plane_state->crtc ?: plane->state->crtc;
index 8288a451b00d0385502645d994a55c365fb56713..d6ec7627afb11d283a40869476f5f34e58e8cd26 100644 (file)
@@ -514,8 +514,10 @@ static void ingenic_ipu_plane_atomic_update(struct drm_plane *plane,
 }
 
 static int ingenic_ipu_plane_atomic_check(struct drm_plane *plane,
-                                         struct drm_plane_state *new_plane_state)
+                                         struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        unsigned int num_w, denom_w, num_h, denom_h, xres, yres, max_w, max_h;
        struct ingenic_ipu *ipu = plane_to_ingenic_ipu(plane);
        struct drm_crtc *crtc = new_plane_state->crtc ?: plane->state->crtc;
index 51ceaae9e7e858c500d014e07bf8b2ae22e21952..909045b67b28de7959a501aac7a70e2d960590fc 100644 (file)
@@ -77,8 +77,10 @@ static unsigned int check_pixel_format(struct drm_plane *plane, u32 format)
 }
 
 static int kmb_plane_atomic_check(struct drm_plane *plane,
-                                 struct drm_plane_state *new_plane_state)
+                                 struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct drm_framebuffer *fb;
        int ret;
        struct drm_crtc_state *crtc_state;
index d94ac558c2bc958931ed5a0e49818fdf93308ac1..e3abdc64bd5fc4bba23f1856d36aaec7413a73c0 100644 (file)
@@ -141,8 +141,10 @@ static const struct drm_plane_funcs mtk_plane_funcs = {
 };
 
 static int mtk_plane_atomic_check(struct drm_plane *plane,
-                                 struct drm_plane_state *new_plane_state)
+                                 struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct drm_framebuffer *fb = new_plane_state->fb;
        struct drm_crtc_state *crtc_state;
        int ret;
index cad5c416e8273662a466f564fd0a047d3e735b3c..8700177082ad1d318509b47dd29ae233c271db7a 100644 (file)
@@ -165,8 +165,10 @@ struct meson_overlay {
 #define FRAC_16_16(mult, div)    (((mult) << 16) / (div))
 
 static int meson_overlay_atomic_check(struct drm_plane *plane,
-                                     struct drm_plane_state *new_plane_state)
+                                     struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct drm_crtc_state *crtc_state;
 
        if (!new_plane_state->crtc)
index 961615c471ee7d824434f875d8a50d5488403e2d..32c5f51848bb5ec2ab3fb2fc3474e1fc4e53f937 100644 (file)
@@ -71,8 +71,10 @@ struct meson_plane {
 #define FRAC_16_16(mult, div)    (((mult) << 16) / (div))
 
 static int meson_plane_atomic_check(struct drm_plane *plane,
-                                   struct drm_plane_state *new_plane_state)
+                                   struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct drm_crtc_state *crtc_state;
 
        if (!new_plane_state->crtc)
index 4be8c562d5ebd9cdbddbfef2cfeba8a6efe730ab..c3b55cc84084c80b95d75cbc5cd287f9f4bbabb4 100644 (file)
@@ -10,6 +10,7 @@
 #include <linux/debugfs.h>
 #include <linux/dma-buf.h>
 
+#include <drm/drm_atomic.h>
 #include <drm/drm_atomic_uapi.h>
 #include <drm/drm_damage_helper.h>
 #include <drm/drm_file.h>
@@ -950,8 +951,10 @@ static bool dpu_plane_validate_src(struct drm_rect *src,
 }
 
 static int dpu_plane_atomic_check(struct drm_plane *plane,
-                                 struct drm_plane_state *new_plane_state)
+                                 struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        int ret = 0, min_scale;
        struct dpu_plane *pdpu = to_dpu_plane(plane);
        struct dpu_plane_state *pstate = to_dpu_plane_state(new_plane_state);
index da3cc1d8c33125882e924309497a4446dbca7d88..f95b14ebfa8afc2db6eae01dd2094993850e5f78 100644 (file)
@@ -106,7 +106,7 @@ static void mdp4_plane_cleanup_fb(struct drm_plane *plane,
 
 
 static int mdp4_plane_atomic_check(struct drm_plane *plane,
-               struct drm_plane_state *state)
+               struct drm_atomic_state *state)
 {
        return 0;
 }
index f5434a5254e048ecbb73c54a4acbad02fcfe66d6..45f7780da901fa2caed3908e74af01441d3ed138 100644 (file)
@@ -404,8 +404,10 @@ static int mdp5_plane_atomic_check_with_state(struct drm_crtc_state *crtc_state,
 }
 
 static int mdp5_plane_atomic_check(struct drm_plane *plane,
-                                  struct drm_plane_state *new_plane_state)
+                                  struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct drm_crtc *crtc;
        struct drm_crtc_state *crtc_state;
 
index 7c19ec5384d4aaf7fe5e49b2b7c544512311204a..ca4bc0ecea2f1742f5f59d70af064ec77d25c062 100644 (file)
@@ -402,8 +402,10 @@ static const struct drm_encoder_funcs mxsfb_encoder_funcs = {
  */
 
 static int mxsfb_plane_atomic_check(struct drm_plane *plane,
-                                   struct drm_plane_state *plane_state)
+                                   struct drm_atomic_state *state)
 {
+       struct drm_plane_state *plane_state = drm_atomic_get_new_plane_state(state,
+                                                                            plane);
        struct mxsfb_drm_private *mxsfb = to_mxsfb_drm_private(plane->dev);
        struct drm_crtc_state *crtc_state;
 
index f83bfc0794ab05d6695e5dc2bf6474cfc5f5c493..1382ccdfe7e3bba1f31dccf975fecb2954fcc1f1 100644 (file)
@@ -30,6 +30,7 @@
 #include <nvhw/class/cl507e.h>
 #include <nvhw/class/clc37e.h>
 
+#include <drm/drm_atomic.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_fourcc.h>
 
@@ -435,8 +436,10 @@ nv50_wndw_atomic_check_lut(struct nv50_wndw *wndw,
 
 static int
 nv50_wndw_atomic_check(struct drm_plane *plane,
-                      struct drm_plane_state *new_plane_state)
+                      struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct nouveau_drm *drm = nouveau_drm(plane->dev);
        struct nv50_wndw *wndw = nv50_wndw(plane);
        struct nv50_wndw_atom *armw = nv50_wndw_atom(wndw->plane.state);
index 53ad0744e0480cada0767d265579ef341735c3c7..6bd384c79324b810117ee073f9e55884849e22bd 100644 (file)
@@ -99,8 +99,10 @@ static void omap_plane_atomic_disable(struct drm_plane *plane,
 }
 
 static int omap_plane_atomic_check(struct drm_plane *plane,
-                                  struct drm_plane_state *new_plane_state)
+                                  struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct drm_crtc_state *crtc_state;
 
        if (!new_plane_state->fb)
index b80965a1d96276c502359c4f2e37c5d59929cac6..8b95b22c1e8dc75f824cdd1380473e99268e3f43 100644 (file)
@@ -463,8 +463,10 @@ static const struct drm_crtc_helper_funcs qxl_crtc_helper_funcs = {
 };
 
 static int qxl_primary_atomic_check(struct drm_plane *plane,
-                                   struct drm_plane_state *new_plane_state)
+                                   struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct qxl_device *qdev = to_qxl(plane->dev);
        struct qxl_bo *bo;
 
index b887ab8fc577d6e3b5902ce40182bcf6e86b98d2..7afe7442214b4890a0040d8629cb89680b2f1f20 100644 (file)
@@ -607,8 +607,10 @@ int __rcar_du_plane_atomic_check(struct drm_plane *plane,
 }
 
 static int rcar_du_plane_atomic_check(struct drm_plane *plane,
-                                     struct drm_plane_state *new_plane_state)
+                                     struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct rcar_du_plane_state *rstate = to_rcar_plane_state(new_plane_state);
 
        return __rcar_du_plane_atomic_check(plane, new_plane_state,
index c4af7de8d458da488183addaa386b21c4ec8d0c2..407e175cdc58d3c9de835855edc55a36b631ce6c 100644 (file)
@@ -7,6 +7,7 @@
  * Contact: Laurent Pinchart (laurent.pinchart@ideasonboard.com)
  */
 
+#include <drm/drm_atomic.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_fb_cma_helper.h>
@@ -265,8 +266,10 @@ static void rcar_du_vsp_plane_cleanup_fb(struct drm_plane *plane,
 }
 
 static int rcar_du_vsp_plane_atomic_check(struct drm_plane *plane,
-                                         struct drm_plane_state *new_plane_state)
+                                         struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct rcar_du_vsp_plane_state *rstate = to_rcar_vsp_plane_state(new_plane_state);
 
        return __rcar_du_plane_atomic_check(plane, new_plane_state,
index db8cd3cdeece00fcc6b405d16d86780960c60024..e789053d6fad821fedb239c719e724474b86e21d 100644 (file)
@@ -779,8 +779,10 @@ static bool rockchip_mod_supported(struct drm_plane *plane,
 }
 
 static int vop_plane_atomic_check(struct drm_plane *plane,
-                          struct drm_plane_state *new_plane_state)
+                          struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct drm_crtc *crtc = new_plane_state->crtc;
        struct drm_crtc_state *crtc_state;
        struct drm_framebuffer *fb = new_plane_state->fb;
index c04c868e337f9a218ce8cccb7162ab30cf2ede3c..ceb30d545ab9bd96bfb2daebd3691272efda623e 100644 (file)
@@ -181,8 +181,10 @@ static void sti_cursor_init(struct sti_cursor *cursor)
 }
 
 static int sti_cursor_atomic_check(struct drm_plane *drm_plane,
-                                  struct drm_plane_state *new_plane_state)
+                                  struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                drm_plane);
        struct sti_plane *plane = to_sti_plane(drm_plane);
        struct sti_cursor *cursor = to_sti_cursor(plane);
        struct drm_crtc *crtc = new_plane_state->crtc;
index 4fe91ab4f1910d2dda02b34c46c815213ae8f692..63823827417cceb689da84a60ee949dc303da09e 100644 (file)
@@ -615,8 +615,10 @@ static int sti_gdp_get_dst(struct device *dev, int dst, int src)
 }
 
 static int sti_gdp_atomic_check(struct drm_plane *drm_plane,
-                               struct drm_plane_state *new_plane_state)
+                               struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                drm_plane);
        struct sti_plane *plane = to_sti_plane(drm_plane);
        struct sti_gdp *gdp = to_sti_gdp(plane);
        struct drm_crtc *crtc = new_plane_state->crtc;
index 5d492ac1f2dd4bc0c658538d6c0cb1a53000c1c1..b3b10ee96bb2b29a3bf5f85c23c094c9242676a6 100644 (file)
@@ -1017,8 +1017,10 @@ out:
 }
 
 static int sti_hqvdp_atomic_check(struct drm_plane *drm_plane,
-                                 struct drm_plane_state *new_plane_state)
+                                 struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                drm_plane);
        struct sti_plane *plane = to_sti_plane(drm_plane);
        struct sti_hqvdp *hqvdp = to_sti_hqvdp(plane);
        struct drm_crtc *crtc = new_plane_state->crtc;
index f61c0086415a89f5965e1c9c8e1c28a0d477de95..83f4b2e7f8d1f96d549dd248070d8560199b0afd 100644 (file)
@@ -749,8 +749,10 @@ static const struct drm_crtc_funcs ltdc_crtc_funcs = {
  */
 
 static int ltdc_plane_atomic_check(struct drm_plane *plane,
-                                  struct drm_plane_state *new_plane_state)
+                                  struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct drm_framebuffer *fb = new_plane_state->fb;
        u32 src_w, src_h;
 
index 68eb752d16636635284ae295a37f18453bbb800b..d503ad7ebb404adeb7d3ade999f24eb0334157f6 100644 (file)
@@ -257,8 +257,10 @@ static int sun8i_ui_layer_update_buffer(struct sun8i_mixer *mixer, int channel,
 }
 
 static int sun8i_ui_layer_atomic_check(struct drm_plane *plane,
-                                      struct drm_plane_state *new_plane_state)
+                                      struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct sun8i_ui_layer *layer = plane_to_sun8i_ui_layer(plane);
        struct drm_crtc *crtc = new_plane_state->crtc;
        struct drm_crtc_state *crtc_state;
index c58314427e99fd8f6c938b8d08e7d12dc9782e86..6d341eb37802baaa5a62bcead7bc092f28579643 100644 (file)
@@ -361,8 +361,10 @@ static int sun8i_vi_layer_update_buffer(struct sun8i_mixer *mixer, int channel,
 }
 
 static int sun8i_vi_layer_atomic_check(struct drm_plane *plane,
-                                      struct drm_plane_state *new_plane_state)
+                                      struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct sun8i_vi_layer *layer = plane_to_sun8i_vi_layer(plane);
        struct drm_crtc *crtc = new_plane_state->crtc;
        struct drm_crtc_state *crtc_state;
index 2d91956bc762bb26012aa9b09ed1177c04afe608..bd2ee94f6f522baf22c9d4d7b6fbb1aa06d0f855 100644 (file)
@@ -604,8 +604,10 @@ static const u64 tegra124_modifiers[] = {
 };
 
 static int tegra_plane_atomic_check(struct drm_plane *plane,
-                                   struct drm_plane_state *new_plane_state)
+                                   struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct tegra_plane_state *plane_state = to_tegra_plane_state(new_plane_state);
        unsigned int supported_rotation = DRM_MODE_ROTATE_0 |
                                          DRM_MODE_REFLECT_X |
@@ -831,8 +833,10 @@ static const u32 tegra_cursor_plane_formats[] = {
 };
 
 static int tegra_cursor_atomic_check(struct drm_plane *plane,
-                                    struct drm_plane_state *new_plane_state)
+                                    struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct tegra_plane *tegra = to_tegra_plane(plane);
        int err;
 
index 8a2d359c4ff6191209a89184b523ccd4a84084df..e5b22508e09af44ac60340c09b61ddc8238d96b6 100644 (file)
@@ -336,8 +336,10 @@ static void tegra_dc_remove_shared_plane(struct tegra_dc *dc,
 }
 
 static int tegra_shared_plane_atomic_check(struct drm_plane *plane,
-                                          struct drm_plane_state *new_plane_state)
+                                          struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct tegra_plane_state *plane_state = to_tegra_plane_state(new_plane_state);
        struct tegra_shared_plane *tegra = to_tegra_shared_plane(plane);
        struct tegra_bo_tiling *tiling = &plane_state->tiling;
index 2674fffa67e2d644d6f9bb4e0bf93e3d9779c264..333eed82a5c0267f28b945be538416986c4afc63 100644 (file)
 /* drm_plane_helper_funcs */
 
 static int tidss_plane_atomic_check(struct drm_plane *plane,
-                                   struct drm_plane_state *new_plane_state)
+                                   struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct drm_device *ddev = plane->dev;
        struct tidss_device *tidss = to_tidss(ddev);
        struct tidss_plane *tplane = to_tidss_plane(plane);
index 389c80a5873c26872c950d715efa631537bc8e43..f43670aff5adf999be929920fbd1624aada4860f 100644 (file)
@@ -21,8 +21,10 @@ static const struct drm_plane_funcs tilcdc_plane_funcs = {
 };
 
 static int tilcdc_plane_atomic_check(struct drm_plane *plane,
-                                    struct drm_plane_state *new_state)
+                                    struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state,
+                                                                          plane);
        struct drm_crtc_state *crtc_state;
        struct drm_plane_state *old_state = plane->state;
        unsigned int pitch;
index 6e4ad966be71e76ec7899caa54ab92655eb6eb91..7140086d8308b7895f9e38c76a056a76fe20c601 100644 (file)
@@ -253,8 +253,10 @@ static const struct drm_crtc_funcs vbox_crtc_funcs = {
 };
 
 static int vbox_primary_atomic_check(struct drm_plane *plane,
-                                    struct drm_plane_state *new_state)
+                                    struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state,
+                                                                          plane);
        struct drm_crtc_state *crtc_state = NULL;
 
        if (new_state->crtc) {
@@ -326,8 +328,10 @@ static void vbox_primary_atomic_disable(struct drm_plane *plane,
 }
 
 static int vbox_cursor_atomic_check(struct drm_plane *plane,
-                                   struct drm_plane_state *new_state)
+                                   struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state,
+                                                                          plane);
        struct drm_crtc_state *crtc_state = NULL;
        u32 width = new_state->crtc_w;
        u32 height = new_state->crtc_h;
index 939e9516717d0f660efeb00c22f8ce0dfff22ce8..72a495cc4f43bf89e4fea23d3585d1368cc9d497 100644 (file)
@@ -1040,8 +1040,10 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
  * in the CRTC's flush.
  */
 static int vc4_plane_atomic_check(struct drm_plane *plane,
-                                 struct drm_plane_state *new_plane_state)
+                                 struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct vc4_plane_state *vc4_state = to_vc4_plane_state(new_plane_state);
        int ret;
 
index 9b2ec4db126512c5ef682995a851afe1499bfa99..0f4fdd8c28f9754c9b188f56858b57938ef4fe10 100644 (file)
@@ -83,8 +83,10 @@ static const struct drm_plane_funcs virtio_gpu_plane_funcs = {
 };
 
 static int virtio_gpu_plane_atomic_check(struct drm_plane *plane,
-                                        struct drm_plane_state *new_plane_state)
+                                        struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        bool is_cursor = plane->type == DRM_PLANE_TYPE_CURSOR;
        struct drm_crtc_state *crtc_state;
        int ret;
index c43a893590c86fd4b6bde760958fc2e561e1f1c0..6e0ada03a8a24db650ab44390d9918debb156887 100644 (file)
@@ -115,8 +115,10 @@ static void vkms_plane_atomic_update(struct drm_plane *plane,
 }
 
 static int vkms_plane_atomic_check(struct drm_plane *plane,
-                                  struct drm_plane_state *new_plane_state)
+                                  struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct drm_crtc_state *crtc_state;
        bool can_position = false;
        int ret;
index 1b0c2e44b586382fe7bea226e16db0fbab98e221..5be1e4bd8a5f9aef4272c5c3645c07e1f191bf73 100644 (file)
@@ -437,8 +437,10 @@ vmw_du_cursor_plane_atomic_update(struct drm_plane *plane,
  * Returns 0 on success
  */
 int vmw_du_primary_plane_atomic_check(struct drm_plane *plane,
-                                     struct drm_plane_state *new_state)
+                                     struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state,
+                                                                          plane);
        struct drm_crtc_state *crtc_state = NULL;
        struct drm_framebuffer *new_fb = new_state->fb;
        int ret;
@@ -476,8 +478,10 @@ int vmw_du_primary_plane_atomic_check(struct drm_plane *plane,
  * Returns 0 on success
  */
 int vmw_du_cursor_plane_atomic_check(struct drm_plane *plane,
-                                    struct drm_plane_state *new_state)
+                                    struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state,
+                                                                          plane);
        int ret = 0;
        struct drm_crtc_state *crtc_state = NULL;
        struct vmw_surface *surface = NULL;
index 6267ccf54944ed7b34e615053937cffbeb1bb7ac..c5183e7eea0432cddf93ddd6c7886827d82442ee 100644 (file)
@@ -456,9 +456,9 @@ void vmw_du_cursor_plane_destroy(struct drm_plane *plane);
 
 /* Atomic Helpers */
 int vmw_du_primary_plane_atomic_check(struct drm_plane *plane,
-                                     struct drm_plane_state *state);
+                                     struct drm_atomic_state *state);
 int vmw_du_cursor_plane_atomic_check(struct drm_plane *plane,
-                                    struct drm_plane_state *state);
+                                    struct drm_atomic_state *state);
 void vmw_du_cursor_plane_atomic_update(struct drm_plane *plane,
                                       struct drm_plane_state *old_state);
 int vmw_du_cursor_plane_prepare_fb(struct drm_plane *plane,
index ee7793d6a26eb4986346a818d5c3bee6929161e1..b0a3ba52871873568612327e1341636df12b6e5f 100644 (file)
@@ -1143,8 +1143,10 @@ static inline struct zynqmp_disp_layer *plane_to_layer(struct drm_plane *plane)
 
 static int
 zynqmp_disp_plane_atomic_check(struct drm_plane *plane,
-                              struct drm_plane_state *new_plane_state)
+                              struct drm_atomic_state *state)
 {
+       struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
+                                                                                plane);
        struct drm_crtc_state *crtc_state;
 
        if (!new_plane_state->crtc)
index 78d787afe5949fbfcc04ccad9713c0181f5a0dbb..20ac292129919253c1ab1fa0d39433ca387ece2b 100644 (file)
@@ -46,8 +46,10 @@ static const uint32_t vl_formats[] = {
 #define FRAC_16_16(mult, div)    (((mult) << 16) / (div))
 
 static int zx_vl_plane_atomic_check(struct drm_plane *plane,
-                                   struct drm_plane_state *plane_state)
+                                   struct drm_atomic_state *state)
 {
+       struct drm_plane_state *plane_state = drm_atomic_get_new_plane_state(state,
+                                                                            plane);
        struct drm_framebuffer *fb = plane_state->fb;
        struct drm_crtc *crtc = plane_state->crtc;
        struct drm_crtc_state *crtc_state;
@@ -275,8 +277,10 @@ static const struct drm_plane_helper_funcs zx_vl_plane_helper_funcs = {
 };
 
 static int zx_gl_plane_atomic_check(struct drm_plane *plane,
-                                   struct drm_plane_state *plane_state)
+                                   struct drm_atomic_state *state)
 {
+       struct drm_plane_state *plane_state = drm_atomic_get_new_plane_state(state,
+                                                                            plane);
        struct drm_framebuffer *fb = plane_state->fb;
        struct drm_crtc *crtc = plane_state->crtc;
        struct drm_crtc_state *crtc_state;
index bb38daa8c03276697b78946eb296782db49bc460..8222ed9b43fcb0d8feceabfcdd7506fb5b33a356 100644 (file)
@@ -1233,9 +1233,8 @@ struct drm_plane_helper_funcs {
         * NOTE:
         *
         * This function is called in the check phase of an atomic update. The
-        * driver is not allowed to change anything outside of the free-standing
-        * state objects passed-in or assembled in the overall &drm_atomic_state
-        * update tracking structure.
+        * driver is not allowed to change anything outside of the
+        * &drm_atomic_state update tracking structure.
         *
         * RETURNS:
         *
@@ -1245,7 +1244,7 @@ struct drm_plane_helper_funcs {
         * deadlock.
         */
        int (*atomic_check)(struct drm_plane *plane,
-                           struct drm_plane_state *state);
+                           struct drm_atomic_state *state);
 
        /**
         * @atomic_update: