linux/drivers/gpu/drm/arm
Maxime Ripard e05162c017
drm: Store new plane state in a variable for atomic_update and disable
In order to store the new plane state in a subsequent helper, let's move
the plane->state dereferences into a variable.

This was done using the following coccinelle script, plus some hand
changes for vmwgfx:

@ plane_atomic_func @
identifier helpers;
identifier func;
@@

(
 static const struct drm_plane_helper_funcs helpers = {
 	...,
 	.atomic_disable = func,
	...,
 };
|
 static const struct drm_plane_helper_funcs helpers = {
 	...,
 	.atomic_update = func,
	...,
 };
)

@ has_new_state_old_state @
identifier plane_atomic_func.func;
identifier plane;
identifier new_state;
symbol old_state;
@@

 func(struct drm_plane *plane, struct drm_plane_state *old_state)
 {
 	...
 	struct drm_plane_state *new_state = plane->state;
	...
 }

@ depends on !has_new_state_old_state @
identifier plane_atomic_func.func;
identifier plane;
symbol old_state;
@@

 func(struct drm_plane *plane, struct drm_plane_state *old_state)
 {
+	struct drm_plane_state *new_state = plane->state;
 	<+...
-	plane->state
+	new_state
	...+>
 }

@ has_new_state_state @
identifier plane_atomic_func.func;
identifier plane;
identifier new_state;
symbol state;
@@

 func(struct drm_plane *plane, struct drm_plane_state *state)
 {
 	...
 	struct drm_plane_state *new_state = plane->state;
	...
 }

@ depends on !has_new_state_state @
identifier plane_atomic_func.func;
identifier plane;
symbol state;
@@

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

@ has_new_state_old_s @
identifier plane_atomic_func.func;
identifier plane;
identifier new_state;
symbol old_s;
@@

 func(struct drm_plane *plane, struct drm_plane_state *old_s)
 {
 	...
 	struct drm_plane_state *new_state = plane->state;
	...
 }

@ depends on !has_new_state_old_s @
identifier plane_atomic_func.func;
identifier plane;
symbol old_s;
@@

 func(struct drm_plane *plane, struct drm_plane_state *old_s)
 {
+	struct drm_plane_state *new_s = plane->state;
 	<+...
-	plane->state
+	new_s
	...+>
 }

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://lore.kernel.org/r/20210219120032.260676-1-maxime@cerno.tech
2021-02-24 20:27:09 +01:00
..
display drm: Use the state pointer directly in planes atomic_check 2021-02-24 20:27:03 +01:00
hdlcd_crtc.c drm: Store new plane state in a variable for atomic_update and disable 2021-02-24 20:27:09 +01:00
hdlcd_drv.c drm/<drivers>: Constify struct drm_driver 2020-11-06 10:31:26 +01:00
hdlcd_drv.h
hdlcd_regs.h
Kconfig drm/arm: Kconfig annotate drivers as COMPILE_TEST 2020-06-15 14:55:21 +01:00
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
malidp_crtc.c drm: automatic legacy gamma support 2020-12-15 15:46:03 +02:00
malidp_drv.c drm/malidp: Annotate dma-fence critical section in commit path 2021-02-23 12:54:20 +01:00
malidp_drv.h drm/arm: drop use of drmP.h 2019-08-14 18:31:15 +02:00
malidp_hw.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
malidp_hw.h drm/arm/mali-dp: Add display QoS interface configuration for Mali DP500 2019-10-08 16:13:36 +01:00
malidp_mw.c drm: Switch to %p4cc format modifier 2021-02-17 12:52:59 +01:00
malidp_mw.h
malidp_planes.c drm/atomic: Pass the full state to planes atomic_check 2021-02-24 20:27:00 +01:00
malidp_regs.h drm/arm/mali-dp: Add display QoS interface configuration for Mali DP500 2019-10-08 16:13:36 +01:00