• Maxime Ripard's avatar
    drm: Use state helper instead of plane state pointer in atomic_check · 0b6aaf9d
    Maxime Ripard authored
    Many drivers reference the plane->state pointer in order to get the
    current plane state in their atomic_check hook, which would be the old
    plane state in the global atomic state since _swap_state hasn't happened
    when atomic_check is run.
    
    Use the drm_atomic_get_old_plane_state helper to get that state to make
    it more obvious.
    
    This was made using the coccinelle script below:
    
    @ plane_atomic_func @
    identifier helpers;
    identifier func;
    @@
    
    static struct drm_plane_helper_funcs helpers = {
    	...,
    	.atomic_check = func,
    	...,
    };
    
    @ replaces_old_state @
    identifier plane_atomic_func.func;
    identifier plane, state, plane_state;
    @@
    
     func(struct drm_plane *plane, struct drm_atomic_state *state) {
     	...
    -	struct drm_plane_state *plane_state = plane->state;
    +	struct drm_plane_state *plane_state = drm_atomic_get_old_plane_state(state, plane);
     	...
     }
    
    @@
    identifier plane_atomic_func.func;
    identifier plane, state, plane_state;
    @@
    
     func(struct drm_plane *plane, struct drm_atomic_state *state) {
     	struct drm_plane_state *plane_state = drm_atomic_get_old_plane_state(state, plane);
     	<...
    -	plane->state
    +	plane_state
     	...>
     }
    
    @ adds_old_state @
    identifier plane_atomic_func.func;
    identifier plane, state;
    @@
    
     func(struct drm_plane *plane, struct drm_atomic_state *state) {
    +	struct drm_plane_state *old_plane_state = drm_atomic_get_old_plane_state(state, plane);
     	<...
    -	plane->state
    +	old_plane_state
     	...>
     }
    
    @ include depends on adds_old_state || replaces_old_state @
    @@
    
     #include <drm/drm_atomic.h>
    
    @ no_include depends on !include && (adds_old_state || replaces_old_state) @
    @@
    
    + #include <drm/drm_atomic.h>
      #include <drm/...>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
    Acked-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210219120032.260676-6-maxime@cerno.tech
    0b6aaf9d
tilcdc_plane.c 3.1 KB