• Maxime Ripard's avatar
    drm: Store new plane state in a variable for atomic_update and disable · e05162c0
    Maxime Ripard authored
    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: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
    Acked-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
    Link: https://lore.kernel.org/r/20210219120032.260676-1-maxime@cerno.tech
    e05162c0
mtk_drm_plane.c 7.1 KB